WO2015040658A1 - Information processing method, information processing device, memory controller, and memory - Google Patents

Information processing method, information processing device, memory controller, and memory Download PDF

Info

Publication number
WO2015040658A1
WO2015040658A1 PCT/JP2013/005598 JP2013005598W WO2015040658A1 WO 2015040658 A1 WO2015040658 A1 WO 2015040658A1 JP 2013005598 W JP2013005598 W JP 2013005598W WO 2015040658 A1 WO2015040658 A1 WO 2015040658A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
logical address
processing node
memory controller
Prior art date
Application number
PCT/JP2013/005598
Other languages
French (fr)
Japanese (ja)
Inventor
早坂 和美
雅紀 日下田
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2015537435A priority Critical patent/JP6075456B2/en
Priority to PCT/JP2013/005598 priority patent/WO2015040658A1/en
Publication of WO2015040658A1 publication Critical patent/WO2015040658A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance

Definitions

  • the present disclosure relates to an information processing method, an information processing device memory controller, and a memory.
  • the information processing apparatus includes an arithmetic processing node that performs data processing, and a memory that is connected to the arithmetic processing node via a bus and stores data.
  • the arithmetic processing node reads out data stored in the memory and performs necessary arithmetic processing.
  • the arithmetic processing node stores data obtained as a result of the arithmetic processing in the memory.
  • An information processing apparatus may have a plurality of arithmetic processing nodes.
  • the first arithmetic processing node of the plurality of arithmetic processing nodes stores data in a specific area of the memory
  • another second arithmetic processing node of the plurality of arithmetic processing nodes is the data stored by the first arithmetic processing node. May be read from the memory for processing.
  • a flash memory which is a kind of nonvolatile memory is known.
  • the flash memory stores data by holding the charge injected into the charge storage film. Even if the arithmetic processing node makes a write request to the memory and performs a data write process to the memory, the data may not be correctly written to the memory. For example, when the memory is the above flash memory, a write error such as the amount of charge injected into the charge storage film does not reach a predetermined amount may occur. When a data write error occurs, erroneous data is stored in the memory.
  • the arithmetic processing node When data writing to the memory fails, if the arithmetic processing node makes a read request for the data written to the memory thereafter, erroneous data stored in the memory will be read. If processing based on the read erroneous data is performed at the arithmetic processing node, it may cause a malfunction of the information processing apparatus. If the information processing apparatus has a plurality of operation processing nodes, the first operation processing node itself writes the data after the first operation processing node of the plurality of operation processing nodes writes the data. This can occur in both cases where data is read and when a second arithmetic processing node different from the first arithmetic processing node reads data.
  • the technique disclosed in the present application is intended to provide a method capable of suppressing erroneous data reading and malfunctioning of an information processing apparatus based on erroneous data even when data writing to a memory fails.
  • FIG. 1 is a hardware configuration diagram of an information processing apparatus 1 in the embodiment.
  • the information processing apparatus 1 includes a first arithmetic processing node 100, a second arithmetic processing node 200, a memory controller 300, a flash memory 400, and a bus 500.
  • the first processing node 100 includes a processor 110, a memory 130, and a network interface card (hereinafter, NIC) 150.
  • the processor 110 and the memory 130 are connected to each other, and the processor 110 can access the memory 130.
  • the second arithmetic processing node 200 includes a processor 210, a memory 230, and a NIC 250.
  • the processor 210 and the memory 230 are connected to each other, and the processor 210 can access the memory 230.
  • the memory controller 300 includes a processor 310, a memory 330, and a NIC 350.
  • the processor 310 and the memory 330 are connected to each other, and the processor 310 can access the memory 330.
  • the processors 110, 210, and 310 are, for example, CPU chips, and the memories 130, 230, and 330 are, for example, DRAM chips.
  • the first arithmetic processing node 100, the second arithmetic processing node 200, and the memory controller 300 are connected to each other by a bus 500.
  • the flash memory 400 is connected to the bus 500 via the memory controller 300.
  • the first arithmetic processing node 100 and the second arithmetic processing node 200 can write data to the flash memory 400 via the memory controller 300.
  • the first arithmetic processing node 100 and the second arithmetic processing node 200 can read data from the flash memory 400 via the memory controller 300.
  • the second arithmetic processing node 200 can read out the data written in the flash memory 400 by the first arithmetic processing node 100 and perform arithmetic processing.
  • the present embodiment shows an information processing apparatus 1 including two arithmetic processing nodes, a first arithmetic processing node 100 and a second arithmetic processing node 200, as arithmetic processing nodes that can access the flash memory 400 via the memory controller 300. It was. However, the number of arithmetic processing nodes included in the information processing apparatus 1 is not limited to this, and the information processing apparatus 1 only needs to include at least one arithmetic processing node.
  • FIG. 2 is a diagram for explaining a unit of an area where writing, reading, and erasing can be performed in the flash memory 400 in the embodiment.
  • the flash memory 400 writes and reads data in units called pages including a plurality of storage elements.
  • the flash memory 400 erases data in units called blocks including a plurality of pages. 2, each of P # 0000, P # 0001,... P # 00MN corresponds to one page. Also, P # 0000 to P # 000N constitute one block.
  • the first arithmetic processing node 100 writes data X to the flash memory 400
  • the first processing node 100 makes a write request to the memory controller 300 and transmits write data X.
  • the first arithmetic processing node 100 attaches an identifier that can be recognized by the first arithmetic processing node 100 and the second arithmetic processing node 200 to the data.
  • This identifier is called a logical address.
  • the logical address is described as L # 00xx.
  • the memory controller 300 stores the received data X in any page of the flash memory 400.
  • the first arithmetic processing node 100 or the second arithmetic processing node 200 accesses the flash memory 400 in order to read the data X.
  • the first arithmetic processing node 100 or the second arithmetic processing node 200 designates the logical address L # 00xx used for storing and makes a read request.
  • L # 00xx used for storing and makes a read request.
  • a table that records which physical address a logical address corresponds to is called a logical address management table.
  • FIG. 3A is a diagram illustrating an example of a logical address management table in the embodiment.
  • the logical address management table shown in FIG. 3A includes a logical address, a physical address corresponding to the logical address, an L-Valid value, and an L-Error value.
  • the L-Valid value is a flag indicating whether data with a logical address is stored in the corresponding physical address.
  • the L-Valid value “1” corresponding to the logical address L # 0003 indicates that the data with the logical address L # 0003 is stored in the page of the corresponding physical address P # 0001.
  • the L-Valid value corresponding to the logical address L # 0000 is “0”. In this case, the data with the logical address L # 0000 is not stored in the page of the physical address P # 0011.
  • the L-Error value is a flag indicating whether or not the data with the logical address is correctly written in the flash memory 400. In the example shown in FIG. 3A, if the L-Error value is “0”, it means that the data specified by the logical address is correctly stored in the flash memory 400. On the other hand, if the L-Error value is “1”, it means that the data specified by the logical address is not correctly stored in the flash memory 400, that is, the written data includes an error.
  • FIG. 3B is a diagram illustrating an example of a physical address management table in the embodiment.
  • the physical address management table shown in FIG. 3B includes a physical address, a P-Valid value, and a P-Error value.
  • the P-Valid value is a flag indicating whether any data is written in the page of the corresponding physical address. For example, “0” that is the P-Valid value corresponding to the page of the physical address P # 0011 means that data is not written in the page of the physical address P # 0011. Further, “1” which is a P-Valid value corresponding to the page of the physical address P # 0001 means that some data is written to the page of the physical address P # 0001.
  • the P-Error value is a flag indicating that some device failure has occurred in the storage element of the corresponding physical address page.
  • the device failure of the memory element is, for example, a case where the charge retention capability of the charge retention film of the flash memory 400 is deteriorated.
  • “1” which is the value of P-Error corresponding to the page of the physical address P # 0014 indicates that there is some trouble in at least a part of the storage element included in the page of the physical address P # 0014. It means that there is.
  • the P-Error value is an identifier associated with a physical address, and indicates that some trouble has occurred in the storage element of the corresponding physical address page, and data cannot be correctly written to the page of the physical address. It is.
  • the L-Error value is an identifier associated with the logical address, and indicates that the data with the corresponding logical address was not correctly written.
  • the correspondence between the logical address and the physical address is not constant, and can be changed by, for example, garbage collection described later.
  • the P-Error value associated with the physical address cannot continuously record that the data with a certain logical address was not correctly written.
  • the L-Error value is an identifier assigned corresponding to the logical address. Therefore, even if the correspondence relationship between the logical address and the physical address is changed, it can be continuously recorded that the writing of data with a certain logical address was not performed correctly.
  • L-Error is also called a write error flag.
  • the logical address management table and the physical address management table have the contents shown in FIGS. 3A and 3B, respectively, at the time of receiving the data write request.
  • the first arithmetic processing node 100 makes a write request for data A with the logical address L # 0000.
  • the L-Valid value of the logical address L # 0000 is “0”, it can be seen that the current write is not a data update but a new data write. .
  • the logical address L # 0000 is associated with the physical address P # 0011.
  • the P-Valid value of the physical address P # 0011 is “0”. That is, it can be seen that no data is written in the page of the physical address P # 0011 associated with the logical address L # 0000. In this case, data A is written in the page of physical address P # 0011. Then, “1” is written in the L-Valid field corresponding to the logical address L # 0000. Further, “1” is written in the P-Valid field corresponding to the physical address P # 0011.
  • the first arithmetic processing node 100 makes a write request for data B to which a logical address L # 0002 is attached.
  • the logical address management table of FIG. 3A since the L-Valid value of the logical address L # 0002 is “0”, it can be seen that the current write is not a data update but a new data write. . It can also be seen that the logical address L # 0002 is associated with the physical address P # 0006. According to the physical address management table of FIG. 3B, since the P-Valid value of the physical address P # 0006 is “1”, some data has already been written to the page of the physical address P # 0006.
  • the first arithmetic processing node 100 makes a write request for data C with the logical address L # 0003.
  • the L-Valid value of the logical address L # 0003 is “1”
  • the current write is not a new data write but a data update.
  • the logical address L # 0003 is associated with the physical address P # 0001.
  • the data stored at the physical address P # 0001 is read and merged with the data C, and the merged data is written to another page.
  • the merged data is written in the page of the physical address P # 0011.
  • the physical address corresponding to the logical address L # 0003 is rewritten from P # 0001 to P # 0011.
  • the P-Valid value corresponding to the physical address P # 0011 is rewritten to “1”.
  • the physical address P # 0001 in which the pre-update data is stored is not associated with the logical address L # 0003 while retaining the pre-update data, and the first calculation process is performed. The page cannot be accessed from the node 100 or the second arithmetic processing node 200. This means that the memory area that can actually be used is reduced.
  • Garbage collection is a writable area in which a page in which valid data is written in a block to be erased is moved to another block, and the block to be erased is erased without including a page in which valid data is written. It means the work to increase.
  • the first arithmetic processing node 100 makes a write request for data D with the logical address L # 0001
  • the logical address management table of FIG. 3A since the L-Valid value of the logical address L # 0001 is “0”, it can be seen that the current write is not a data update but a new data write. . It can also be seen that the logical address L # 0001 is associated with the physical address P # 0023. According to the physical address management table of FIG. 3B, the P-Valid value of the physical address P # 0023 is “0”. That is, it can be seen that no data is written to the physical address P # 0023 associated with the logical address L # 0001. In this case, data D is written at physical address P # 0023. At this time, it is assumed that the data writing is not normally performed and the data D is not correctly written to the page of the physical address P # 0023. In this case, the following operations are performed.
  • the P-Valid value is set to “1” to indicate that this page is not in the erased state.
  • the P-Error value is set to “1” to indicate that there is a possibility that there is any device failure in the physical address P # 0023.
  • the L-Valid value is set to “1”.
  • the L-Error value is set to “1”.
  • FIG. 5 is a functional block diagram of the processor 110 included in the first arithmetic processing node 100 in the embodiment.
  • the processor 110 implements the function of each block shown in FIG. 5 by executing processing based on a predetermined program stored in the memory 130, the flash memory 400, or the memory of another arithmetic processing node.
  • the processor 110 transmits / receives data and / or various notifications to / from the request issuing unit 111 that issues an access request to the flash memory 400 to the memory controller 300, the memory controller 300, and the second processing node 200. It functions as a transmission / reception unit 112, a recovery processing unit 113 that performs recovery processing when data writing to the flash memory 400 fails, and a memory control unit 114 that controls the memory 130.
  • the processor 210 included in the second processing node 200 realizes the same function as the processor 110 by executing processing based on a predetermined program stored in the memory 230, the flash memory 400, or the memory of another processing node. .
  • FIG. 6 is a diagram illustrating an example of a description format of a request issued from the first arithmetic processing node 100 or the second arithmetic processing node 200 in the present embodiment.
  • the request description format includes a “request issuer ID” indicating the request issuer, a “request ID” for identifying the request identity, a “command” indicating the request content, and a “node” indicating the request destination. “Address” and “logical address” for designating the logical address of the data are included.
  • FIG. 7 is a diagram illustrating information included in the memory 330 included in the memory controller 300 according to the embodiment.
  • the memory 330 stores a logical address management table 331 and a physical address management table 332.
  • the memory 330 is also used as a data buffer for temporarily storing data written to the flash memory 400.
  • FIG. 8 is a functional block diagram of the processor 310 included in the memory controller 300 in the embodiment.
  • the processor 310 implements the function of each block illustrated in FIG. 8 by executing processing based on a predetermined program stored in the memory 330, the flash memory 400, or the memory of another arithmetic processing node.
  • the processor 310 includes a table management unit 311 that decodes and changes the logical address management table 331 and the physical address management table 332, and a lock control unit that restricts access to other requests while the memory controller 300 is processing the request.
  • a notification unit 313 that performs various notifications to the first arithmetic processing node 100 and the second arithmetic processing node 200
  • a memory control unit 314 that controls the memory 330
  • a data reading unit 315 that reads data from the flash memory 400
  • a flash A data writing unit 316 that writes data to the memory 400
  • a confirmation unit 317 that confirms whether writing to the flash memory 400 has been completed correctly
  • a rewriting unit 318 that performs rewriting control to the flash memory 400
  • data transmission As the data transmission unit 319
  • Some functions may be realized by a processor other than the processor 310 or a dedicated integrated circuit.
  • FIG. 9 is a circuit block diagram of the flash memory 400 in the embodiment.
  • the flash memory 400 includes a memory cell array 410 in which storage elements are arranged, a write / read circuit 420 that writes data to and reads data from the storage elements included in the memory cell array 410, and a write buffer 430 that stores write data. And a comparator 440 and a status register 450.
  • the flash memory 400 may include an error correction circuit 460, although not essential. When an error correction circuit is used in this embodiment, the error correction circuit may be mounted on the flash memory 400 or the memory controller 300.
  • the write data is first held in the write buffer 430. Then, the write / read circuit 420 performs a write process on the storage elements in the memory cell array 410 based on the data in the write buffer 430. Thereafter, the comparator 440 compares the data written in the storage element with the data held in the write buffer 430. As a result of the comparison by the comparator 440, when both data match, information indicating that the writing has been normally performed is recorded in the status register 450. If the data written in the storage element and the data held in the write buffer 430 do not match, information indicating that the writing has not been normally performed is recorded in the status register 450.
  • the error correction additional bits are written into the memory cell array 410 together with the write data. Even if there is an error in the written data, the error-corrected data is read if the error can be corrected using the additional bit for error correction. In the present embodiment, even when there is an error in the write data, if the error can be corrected by the error correction circuit 460, information indicating that the writing has been normally completed may be written in the status register 450. . In this case, when there is a write error that cannot be corrected by the error correction circuit 460, information indicating that the writing has not been normally performed is written in the status register 450.
  • FIG. 10 is a diagram illustrating a process flow among the first arithmetic processing node 100, the second arithmetic processing node 200, the memory controller 300, and the flash memory 400.
  • the first arithmetic processing node 100 makes a data write request to the memory controller 300.
  • the first arithmetic processing node 100 transmits write data to the memory controller 300. It is assumed that the write data is assigned a logical address L # 00xx.
  • the NIC 350 transfers the write request to the processor 310.
  • the NIC 350 temporarily stores write data in the memory 330.
  • the NIC 350 notifies the first arithmetic processing node 100 of a request receipt notification.
  • the first arithmetic processing node 100 performs other work by transmitting the request reception notification before the actual writing to the flash memory 400 is completed. Is possible. Since writing data to the flash memory 400 requires time for writing data to the DRAM or SRAM, such a request reception notification is effective for improving the processing efficiency of the first processing node 100. .
  • the processor 310 reads data already stored from the flash memory 400.
  • data is read from the flash memory 400.
  • the write data stored in the memory 330 and the data read from the flash memory 400 are merged to create data to be written to the flash memory 400.
  • the processor 310 writes data to the flash memory 400.
  • the processor 310 confirms whether or not the writing to the flash memory 400 has been normally completed.
  • the flash memory 400 notifies the processor 310 of the contents of the status register 450 in response to the completion confirmation.
  • a normal end notification indicating that data writing has ended normally is sent to the processor 310, and the processor 310 ends the write process.
  • the second operation processing node 200 transmits a read request designating the same logical address L # 00xx as the one requested by the first operation processing node 100 in step 601 to the memory controller 300. .
  • the NIC 350 transfers the read request to the processor 310.
  • the processor 310 suspends the processing for the read request received from the second arithmetic processing node 200 until the processing for the write request received from the first arithmetic processing node 100 is completed.
  • the processor 310 performs a read process on the flash memory 400 in process 614.
  • the processor 310 receives data from the flash memory 400.
  • the processor 310 transmits data to the second arithmetic processing node 200 via the NIC 350.
  • FIG. 10 shows processing when data has already been written to the physical address corresponding to the logical address L # 00xx. However, when data is not written to the physical address corresponding to the logical address L # 00xx, the processing 606 and processing 607 are not performed, and the write data is directly written to the corresponding physical address.
  • FIG. 10 shows an example in which a read request is received from the second arithmetic processing node 200 during the processing for the write request received from the first arithmetic processing node 100. However, the read request from the second arithmetic processing node 200 may be received by the memory controller 300 after the processing for the write request received from the first arithmetic processing node 100 is completed.
  • FIG. 11 is a diagram showing another example of the flow of processing among the first arithmetic processing node 100, the second arithmetic processing node 200, the memory controller 300, and the flash memory 400.
  • the processes having the same contents as those shown in FIG. 10 are denoted by the same reference numerals, and the description thereof is omitted.
  • FIG. 11 illustrates a case where a write error has occurred in writing data to the flash memory 400.
  • the flash memory 400 notifies the processor 310 of an abnormal end notification.
  • the processor 310 may perform a rewrite process.
  • the rewrite process is a process for writing the same data into the flash memory 400 again when the writing is not normally completed. Details of the rewriting process will be described later. If the writing does not end normally even after performing the rewriting process, the processor 310 receives an abnormal end notification from the flash memory 400 again.
  • the processor 310 Upon receiving the abnormal termination notification from the flash memory 400, the processor 310 notifies the first arithmetic processing node 100 that is the source of the write request via the NIC 350 in processing 701 and processing 702.
  • the processor 310 receives an abnormal end notification from the flash memory 400, the processor 310 generates a write error flag by setting the L-Error value of the logical address management table 331 to "1".
  • the processor 310 notifies a request non-acceptance notification to the read request received from the second arithmetic processing node 200 via the NIC 350. Data is not read in response to a read request received from the second arithmetic processing node 200. Thereby, it is possible to prevent erroneous data from being transmitted to the second arithmetic processing node 200.
  • the rewrite process is performed before a write error notification is issued in response to a request from the first arithmetic processing node 100 when the writing is not normally completed.
  • the processor 310 sets the P-Error value of the physical address that has been written first to “1” and stores it in the physical address management table 332. Then, the processor 310 searches the physical address management table 332 for a page whose P-Valid is “0”, that is, a page in which no data is written. Data is similarly written to the retrieved new page.
  • the logical address management table 331 is rewritten so that the physical address of the new page corresponds to the logical address.
  • the L-Error value of the logical address is “0” indicating that the writing has been performed normally, and no write error notification is issued.
  • the rewrite process may limit the number of times rewrite is performed. For example, if the rewrite count limit is set to two, if data is not normally written to the flash memory 400 even after two rewrites, the rewrite process is terminated.
  • the L-Error value of the logical address is “1” indicating that writing has not been performed normally. Note that the rewrite process by the processor 310 is not essential in this embodiment, and a write error notification may be transmitted to the first arithmetic processing node 100 in response to the failure of the first write.
  • FIG. 12 is a diagram illustrating a processing flow of the processor 310 when a data write request is received in the embodiment.
  • the process of FIG. 12 is started by process 1100.
  • the lock control unit 312 locks the accessed logical address.
  • the table management unit 311 accesses the logical address management table 331 stored in the memory 330.
  • the table management unit 311 determines whether or not the value of L-Error described in the logical address management table 331 is “0”.
  • the notification unit 313 sends a request non-acceptance notification to the operation processing node that issued the data write request. If it is determined in process 1103 that the L-Error value is “0”, the table management unit 311 in process 1104 indicates that the L-Valid value described in the logical address management table 331 is “0”. It is determined whether or not. If it is determined in process 1104 that the value of L-Valid is “0”, the process proceeds to process 1108.
  • the table management unit 311 extracts a physical address corresponding to the logical address based on the logical address management table 331 in process 1105.
  • the data reading unit 315 reads the data written in the extracted physical address.
  • the memory control unit 314 merges the read data and the write data stored in the memory 330 to create update write data.
  • the table management unit 311 accesses the physical address management table 332 stored in the memory 330 and selects a physical address for writing data.
  • the data writing unit 316 writes the write data or the update write data to the selected physical address.
  • the confirmation unit 317 accesses the status register 450 of the flash memory 400 and determines whether or not the data writing is successful. If it is determined in the process 1110 that the data writing has succeeded, the table management unit 311 records “0” in the L-Error of the logical address management table 331 in the process 1111. If it is determined in process 1110 that data writing has failed, in process 1112, the rewrite unit 318 determines whether or not the number of rewrites exceeds the set value. If it is determined in process 1112 that the rewrite count does not exceed the set value, the process returns to process 1108.
  • the table management unit 311 records “1” in L-Error of the logical address management table 331 in process 1113.
  • the notification unit 313 notifies the write request issuer of a write error notification.
  • the lock control unit 312 releases the lock for the other request, and the process 1117 ends.
  • FIG. 13 is a diagram illustrating a processing flow of the processor 310 when a data read request is received in the embodiment.
  • the process of FIG. 13 is started by process 1200.
  • the table management unit 311 accesses the logical address management table 331 stored in the memory 330.
  • the table management unit 311 determines whether or not the value of L-Error described in the logical address management table 331 is “0”.
  • the notification unit 313 issues a request rejection notification to the issuer of the data read request.
  • the table management unit 311 in process 1203 uses the physical address corresponding to the logical address included in the read request based on the logical address management table 331. To extract.
  • the data reading unit 315 reads data from the corresponding physical address.
  • the data transmission unit 319 transmits the read data to the issuer of the read request, and ends the process 1207.
  • the L-Error value “1” that is the write error flag is set to the logical value. Stored in association with the address.
  • the memory controller 300 can recognize that an error exists in the data specified by the logical address.
  • the memory controller 300 notifies the fact that there is an error in the data without causing the read request issuer to read and transmit the incorrect data, thereby suppressing malfunction of the information processing apparatus 1. .
  • a request rejection notification is notified in response to a data write request, and data writing is not performed.
  • the memory controller 300 transmits a write error notification to the first arithmetic processing node 100.
  • the first arithmetic processing node 100 can take various measures. For example, the memory controller 300 may be requested again to write the same data as the recovery process.
  • a data write request that is, a data update request is made by designating the same logical address from the second arithmetic processing node 200 before this request is made again.
  • the memory controller 300 receives a write request from the second arithmetic processing node 200, writes data, and succeeds in writing.
  • the data in the flash memory 400 is correctly updated by a write request from the second arithmetic processing node 200.
  • the memory controller 300 sends a request non-acceptance notification without responding to the request not only when the received request is a read request but also when it is a write request. To notify.
  • the second embodiment is based on the contents of the first embodiment, and further adds processing when a re-request for writing is made by the first arithmetic processing node 100.
  • the first arithmetic processing node 100 that has received the write error notification from the memory controller 300 can perform a rewrite request for writing the same data into the memory 400 as error state recovery processing.
  • the recovery processing unit 113 illustrated in FIG. 5 instructs the request issuing unit 111 to issue a write request again.
  • the request issuing unit 111 issues a write rerequest along the predetermined description format shown in FIG. Processing of the memory controller 300 in response to this write re-request will be described with reference to FIGS.
  • FIG. 14 is a diagram showing an example of a logical address management table in the second embodiment.
  • a request issuer ID is recorded in addition to the contents of the logical address management table shown in FIG.
  • the request issuer ID is an ID that identifies the issuer of the write request that the memory controller 300 has received most recently. As shown in FIG. 6, this request issuer ID is included as information in the write request sent from the processing node.
  • the memory controller 300 that has received the previous write request stores the request issuer ID included in the write request and the logical address in the logical address management table 331 in association with each other.
  • FIG. 15 is a diagram illustrating another example of the flow of processing among the first arithmetic processing node 100, the second arithmetic processing node 200, the memory controller 300, and the flash memory 400 in the second embodiment.
  • the same processes as those in FIGS. 10 and 11 are denoted by the same reference numerals, and description thereof is omitted.
  • the first arithmetic processing node 100 receives a write error notification from the memory controller 300.
  • the first arithmetic processing node 100 issues a write re-request.
  • the first arithmetic processing node 100 transmits write data to the memory controller 300.
  • the NIC 350 transfers the write rerequest to the processor 310.
  • the NIC 350 transfers the write data to the memory 330 and stores it.
  • the NIC 350 sends a request receipt notification to the first processing node 100 that is the issuer of the write request.
  • the processor 310 confirms that the issuer ID of the write rerequest is the same as the issuer ID of the previously written request, and performs processing for the write rerequest. Specifically, the processor 310 reads data from the flash memory 400 in processing 806 and processing 807, writes data to the flash memory 400 in processing 808 and processing 809, and confirms completion of processing in the flash memory 400 in processing 810. In step 811, a normal end notification is received from the flash memory 400. Note that if the writing cannot be performed normally even if writing is performed in response to the re-request for writing, the memory controller 300 receives an abnormal end notification in step 811 instead of the normal end notification.
  • the memory controller 300 when the L-Error value is “1”, the memory controller 300 that has received the write request notifies a request acceptance notice to the issuer of the write request without responding to the write request. Therefore, even if the first arithmetic processing node 100 that has received the write error notification makes a re-request for writing as a recovery process, the memory controller 300 does not accept the re-request and the re-write process is not performed.
  • the memory controller 300 stores the request issuer ID in the logical address management table 331 when there is a write request.
  • the memory controller 300 that has received the write request, even if the L-Error value is “1”, the issuer ID stored in the logical address management table 331 matches the issuer ID of the write request. Exceptionally accepts write requests. Thereby, the first arithmetic processing node 100 can perform rewriting as the recovery processing.
  • FIG. 16 is a diagram showing a processing flow of the processor 310 when a data write request is received in the second embodiment.
  • the same processing contents as those shown in FIG. 12 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.
  • processing 1103 if the table management unit 311 determines that the value of L-Error is not “0”, the processing proceeds to processing 1301.
  • the table management unit 311 determines whether the request issuer ID included in the write request matches the request issuer ID stored in the logical address management table 331. If it is determined in process 1301 that both request issuer IDs match, the process proceeds to process 1104, where write processing is performed. If it is determined in process 1301 that the two request issuer IDs do not match, the notification unit 313 issues a request rejection notice to the issuer of the write request in process 1115.
  • the third embodiment is based on the contents of the first embodiment and includes a rewrite process by the first arithmetic processing node 100.
  • the request issuer ID is used to identify that the request received by the memory controller 300 is a write re-request by the processing node that has received the write error notification.
  • the request ID is used to identify that the write request received by the memory controller 300 is a write re-request by the processing node that has received the write error notification.
  • FIG. 17 shows an example of a logical address management table in the third embodiment.
  • a request ID is recorded in addition to the contents of the logical address management table shown in FIG.
  • the request ID is an ID indicating the identity of the content of the latest write request received by the memory controller 300. As shown in FIG. 6, this request ID is included as information in the write request sent from the arithmetic processing node.
  • the memory controller 300 that has received the previous write request stores the request ID and logical address included in the write request in association with each other in the logical address management table.
  • the recovery processing unit 114 shown in FIG. 5 receives the write request with the same request ID as the request ID attached to the previous write request.
  • the reissue is instructed to the request issuing unit 111.
  • the request issuing unit 111 transmits a write rerequest to the memory controller.
  • the memory controller 300 that has received the write re-request confirms the logical address management table 331. Even if the value of L-Error is “1”, if the request ID attached to the write re-request matches the request ID stored in the logical address management table 331, the memory controller 300 writes Accept the request. Thereby, the first arithmetic processing node 100 can perform rewriting as the recovery processing.
  • FIG. 18 is a diagram showing a processing flow of the processor 310 in the third embodiment. Components having the same processing contents as the processing flow of the processor 310 shown in FIGS. 12 and 16 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.
  • the table management unit 311 determines in the processing 1103 that the value of L-Error is not “0”, the processing proceeds to a processing 1401.
  • the table management unit 311 determines whether or not the request ID included in the write request matches the request ID stored in the logical address management table 331. If it is determined in process 1401 that both request IDs match, the process proceeds to process 1104, and a write process is performed. If it is determined in process 1401 that the request IDs do not match, the notification unit 313 issues a request non-acceptance notification to the issuer of the write request in process 1115.
  • the fourth embodiment is based on the contents of the second embodiment or the third embodiment, and the processing of the memory controller 300 when data is normally written in the memory 400 by rewriting by the first processing node 100. It discloses about.
  • the second operation processing node 200 that has received the request non-acceptance notification in the process 704 cannot receive the desired data, and the process stagnates. Further, the second arithmetic processing node 200 does not have a means for recognizing whether or not the write error state has been eliminated by the re-request for writing by the first arithmetic processing node 100. Therefore, it is not possible to recognize when the read request should be attempted again. Therefore, in the fourth embodiment, when the writing to the write re-request of the first arithmetic processing node 100 is normally completed, the recovery is a notification that the data has been normally written to the second arithmetic processing node 200. Notification of completion will be sent. By this notification, the second arithmetic processing node 200 can recognize that it is possible to make a read re-request for the read request that has received the request non-acceptance notification, and can read desired data from the memory 400. It becomes possible.
  • FIG. 19 shows an example of a logical address management table in the fourth embodiment.
  • the read request record records that each arithmetic processing node makes a read request for the logical address in a state where the L-Error value of the specific logical address is “1”. In other words, it means that the arithmetic processing node whose read request record is recorded in the logical address management table 331 has received a request non-acceptance notification for the read request in the past.
  • the second arithmetic processing node 200 makes a read request to the logical address L # 0001.
  • FIG. 20 is a diagram illustrating another example of the processing flow among the first arithmetic processing node 100, the second arithmetic processing node 200, the memory controller 300, and the flash memory 400 in the fourth embodiment.
  • the same processes as those in FIGS. 10, 11 and 15 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.
  • step 803 the processor 310 that has received a re-write request from the first arithmetic processing node 100 performs a write process on the flash memory 400 in steps 806 to 809. Further, the processor 310 confirms completion of the flash memory 400 in process 810 and receives a normal end notification from the flash memory 400 in process 811. Thereafter, the processor 310 notifies the second arithmetic processing node 200 via the NIC 350 of a recovery completion notification indicating that the data in the flash memory 400 has become normal in processing 901 and processing 902.
  • FIG. 21 is a diagram showing a processing flow of the processor 310 of the memory controller 300 that has received a read request in the fourth embodiment.
  • Components having the same processing contents as the processing flow of the processor 310 shown in FIG. 13 are given the same reference numerals, and description thereof will be omitted as appropriate.
  • the processing proceeds to a processing 1203 and a reading process is performed. If the table management unit 311 determines in step 1202 that the value of L-Error is not “0”, the process proceeds to step 1501. In processing 1501, the table management unit 311 records “1” in the read request record of the logical address management table. In step 1206, the notification unit 313 issues a request rejection notification to the data read request issuer.
  • FIG. 22 is a diagram showing a processing flow of the processor 310 that has received a write request in the fourth embodiment.
  • Components having the same processing contents as the processing flow of the processor 310 shown in FIGS. 12, 16, and 18 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.
  • step 1111 the table management unit 311 records “0” in the L-Error value of the logical address management table 331, and then in step 1601, the table management unit 311 determines whether there is a read request record in the logical address management table 311. . If it is determined in process 1601 that there is no record of the read request, the process proceeds to process 1116. When it is determined in the process 1601 that there is a record of the read request, the notification unit 313 notifies the recovery processing completion notification to the arithmetic processing node that has made the read request in the process 1602. With this notification, for example, in FIG. 20, the second processing node 200 that has received the request rejection notification for the read request can recognize that the data has been correctly stored in the flash memory 400. The second arithmetic processing node 200 can perform processing such as re-requesting reading as necessary.
  • the table management unit 311 determines whether the request issuer ID matches, but as a modification, the table management unit 311 determines whether the request ID matches as in the processing 1401 of FIG. May be.
  • the memory whose writing and reading are controlled by the memory controller 300 is not limited to the flash memory.
  • a management table that describes the correspondence between logical addresses and physical addresses or a memory that can be controlled for writing and reading based on information having the same contents as the management table is applicable to the present invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

The objective of the disclosed technology is to provide a method able to suppress erroneous operation of an information processing device on the basis of erroneous data and erroneous data reading even in the case that there has been a failure in the writing of data to memory. In the disclosed method, data to which a logical address has been imparted is written to a predetermined physical address of memory, and when the writing of data has not been carried out normally, a first flag is generated indicating that writing was not carried out normally and is stored associated with the logical address. By means of the first flag, it is possible for the fact that there is an error in data to which a specific logical address has been imparted to remain as a record. As a result, it is possible to prevent a computation processing node from reading erroneous data.

Description

情報処理方法、情報処理装置、メモリコントローラ及びメモリInformation processing method, information processing apparatus, memory controller, and memory
 本願開示は、情報処理方法、情報処理装置メモリコントローラ及びメモリに関する。 The present disclosure relates to an information processing method, an information processing device memory controller, and a memory.
 情報処理装置は、データ処理を行う演算処理ノードと、バスを介して演算処理ノードに接続され、データを格納するメモリとを有する。演算処理ノードは、メモリに格納されているデータを読み出して必要な演算処理を行う。また、演算処理ノードは、演算処理を行った結果のデータをメモリに格納する。情報処理装置は複数の演算処理ノードを有する場合がある。複数の演算処理ノードのうちの第1演算処理ノードがメモリの特定領域にデータを格納し、複数の演算処理ノードのうちの別の第2演算処理ノードが、第1演算処理ノードが格納したデータをメモリから読出して処理を行う場合もある。 The information processing apparatus includes an arithmetic processing node that performs data processing, and a memory that is connected to the arithmetic processing node via a bus and stores data. The arithmetic processing node reads out data stored in the memory and performs necessary arithmetic processing. The arithmetic processing node stores data obtained as a result of the arithmetic processing in the memory. An information processing apparatus may have a plurality of arithmetic processing nodes. The first arithmetic processing node of the plurality of arithmetic processing nodes stores data in a specific area of the memory, and another second arithmetic processing node of the plurality of arithmetic processing nodes is the data stored by the first arithmetic processing node. May be read from the memory for processing.
 データを格納するメモリとしては、例えば不揮発メモリの一種であるフラッシュメモリが知られている。フラッシュメモリは、電荷蓄積膜に注入された電荷を保持することでデータを記憶する。演算処理ノードがメモリへの書込み要求を行い、メモリへのデータ書込み処理が行われても、データが正しくメモリに書込まれないことがある。例えばメモリが上記のフラッシュメモリである場合、電荷蓄積膜への電荷注入量が所定量に達しない等の書込みエラーが発生し得る。データの書込みエラーが発生すると、メモリに誤データが格納された状態となる。 As a memory for storing data, for example, a flash memory which is a kind of nonvolatile memory is known. The flash memory stores data by holding the charge injected into the charge storage film. Even if the arithmetic processing node makes a write request to the memory and performs a data write process to the memory, the data may not be correctly written to the memory. For example, when the memory is the above flash memory, a write error such as the amount of charge injected into the charge storage film does not reach a predetermined amount may occur. When a data write error occurs, erroneous data is stored in the memory.
 フラッシュメモリへのデータの書込みにおいて、特定のアドレスへの書込みが失敗した場合に、別のアドレスに同一データの書込みを行う先行技術が知られている(例えば、特許文献1参照)。 In the writing of data to the flash memory, when writing to a specific address fails, a prior art is known in which the same data is written to another address (for example, see Patent Document 1).
特開2004-133677号公報JP 2004-133777 A
 メモリへのデータ書込みが失敗した場合、その後演算処理ノードがメモリへ書込んだデータの読出し要求を行うと、メモリに格納されている誤データが読出されることになる。読出された誤データに基づく処理が演算処理ノードにて行われると情報処理装置の誤動作の原因となる。この問題は、情報処理装置が複数の演算処理ノードを有する場合であれば、複数の演算処理ノードのうちの第1演算処理ノードがデータを書込んだ後に、第1演算処理ノード自身がデータを読み出す場合と、第1演算処理ノードとは異なる第2演算処理ノードがデータを読み出す場合のどちらの場合にも生じ得る。 When data writing to the memory fails, if the arithmetic processing node makes a read request for the data written to the memory thereafter, erroneous data stored in the memory will be read. If processing based on the read erroneous data is performed at the arithmetic processing node, it may cause a malfunction of the information processing apparatus. If the information processing apparatus has a plurality of operation processing nodes, the first operation processing node itself writes the data after the first operation processing node of the plurality of operation processing nodes writes the data. This can occur in both cases where data is read and when a second arithmetic processing node different from the first arithmetic processing node reads data.
 先行技術は、あるアドレスへのデータの書込みが失敗した場合に、書込み対象アドレスを変更して再度の書込みを行うことによって、正常な書込みが行われることを期待するものである。しかし先行技術には、別のアドレスへの変更を行っても正常に書込みが行われずに結局はメモリに誤データが書込まれた状態となった場合に、誤データの読出しを防止する手段については何ら開示がなされていない。 The prior art expects that when data writing to a certain address fails, normal writing is performed by changing the write target address and performing writing again. However, in the prior art, there is a means for preventing erroneous data from being read when the data is not normally written even if the address is changed to another address, and eventually the erroneous data is written in the memory. There is no disclosure.
 本願開示の技術は、メモリへのデータの書込みに失敗した場合でも、誤データの読出し及び誤データに基づく情報処理装置の誤動作を抑制することができる方法を提供することを目的とする。 The technique disclosed in the present application is intended to provide a method capable of suppressing erroneous data reading and malfunctioning of an information processing apparatus based on erroneous data even when data writing to a memory fails.
 論理アドレスが付されたデータを、メモリの所定の物理アドレスに対して書込み、データの書込みが正常に行われなかった場合には、書込みが正常に行われなかったことを示すフラグを生成して論理アドレスに対応付けて記憶する。 Write data with a logical address to a given physical address in the memory, and if the data is not written correctly, generate a flag indicating that the data was not written correctly Store in association with the logical address.
 メモリへの書込みが正常に行われなかったことを示すフラグを論理アドレスに対応付けて設けることで、特定の論理アドレスが付されたデータに誤りがあることを記録として残すことができる。それにより、演算処理ノードが誤データを読出すことを防止できる。また読出された誤データに基づく情報処理が行われることを抑制することができる。 By providing a flag indicating that writing to the memory has not been performed normally in association with the logical address, it is possible to leave a record that there is an error in the data with the specific logical address. Thereby, it is possible to prevent the arithmetic processing node from reading erroneous data. In addition, it is possible to suppress information processing based on the read erroneous data.
実施例における情報処理装置のハ-ドウェア構成を示す図である。It is a figure which shows the hardware constitutions of the information processing apparatus in an Example. 実施例におけるフラッシュメモリのページについて説明する図である。It is a figure explaining the page of the flash memory in an Example. 実施例における論理アドレス管理テーブル及び物理アドレス管理テーブルを示す図である。It is a figure which shows the logical address management table and physical address management table in an Example. 実施例における論理アドレス管理テーブル及び物理アドレス管理テーブルを示す図である。It is a figure which shows the logical address management table and physical address management table in an Example. 実施例における演算処理ノードが有するプロセッサの機能ブロック図である。It is a functional block diagram of the processor which the arithmetic processing node in an Example has. 実施例における要求の記述フォーマットを示す図である。It is a figure which shows the description format of the request | requirement in an Example. 実施例におけるメモリに格納される情報を示す図である。It is a figure which shows the information stored in the memory in an Example. 実施例におけるメモリコントローラが有するプロセッサの機能ブロック図である。It is a functional block diagram of the processor which the memory controller in an Example has. 実施例におけるフラッシュメモリの回路ブロック図である。1 is a circuit block diagram of a flash memory in an embodiment. 実施例における演算処理ノードとメモリコントローラとメモリとの間での処理の流れを示す図である。It is a figure which shows the flow of a process between the arithmetic processing node in a Example, a memory controller, and a memory. 実施例における演算処理ノードとメモリコントローラとメモリとの間での処理の流れを示す図である。It is a figure which shows the flow of a process between the arithmetic processing node in a Example, a memory controller, and a memory. 実施例におけるメモリコントローラが有するプロセッサの書込み処理フローチャート図である。It is a write-processing flowchart figure of the processor which the memory controller in an Example has. 実施例におけるメモリコントローラが有するプロセッサの読出し処理フローチャート図である。It is a read-out process flowchart figure of the processor which the memory controller in an Example has. 第2実施例における論理アドレス管理テーブルを示す図である。It is a figure which shows the logical address management table in 2nd Example. 第2実施例における演算処理ノードとメモリコントローラとメモリとの間での処理の流れを示す図である。It is a figure which shows the flow of a process between the arithmetic processing node in 2nd Example, a memory controller, and memory. 第2実施例におけるメモリコントローラが有するプロセッサの書込み処理フローチャート図である。It is a write-processing flowchart figure of the processor which the memory controller in 2nd Example has. 第3実施例における論理アドレス管理テーブルを示す図である。It is a figure which shows the logical address management table in 3rd Example. 第3実施例におけるメモリコントローラが有するプロセッサの書込み処理フローチャート図である。It is a write-processing flowchart figure of the processor which the memory controller in 3rd Example has. 第4実施例における論理アドレス管理テーブルを示す図である。It is a figure which shows the logical address management table in 4th Example. 第4実施例における演算処理ノードとメモリコントローラとメモリとの間での処理の流れを示す図である。It is a figure which shows the flow of a process between the arithmetic processing node in 4th Example, a memory controller, and memory. 第4実施例におけるメモリコントローラが有するプロセッサの読出し処理フローチャート図である。It is a read-out process flowchart figure of the processor which the memory controller in 4th Example has. 第4実施例におけるメモリコントローラが有するプロセッサの書込み処理フローチャート図である。It is a write-processing flowchart figure of the processor which the memory controller in 4th Example has.
 <第1実施例>
 図1は、実施例における情報処理装置1のハードウェア構成図である。情報処理装置1は、第1演算処理ノード100、第2演算処理ノード200、メモリコントローラ300、フラッシュメモリ400、バス500を有する。第1演算処理ノード100は、プロセッサ110と、メモリ130と、ネットワークインターフェースカード(以下、NIC)150を有する。プロセッサ110とメモリ130は互いに接続され、プロセッサ110はメモリ130にアクセスすることができる。第2演算処理ノード200は、第1演算処理ノード100と同様に、プロセッサ210と、メモリ230と、NIC250を有する。プロセッサ210とメモリ230は互いに接続され、プロセッサ210はメモリ230にアクセスすることができる。メモリコントローラ300は、プロセッサ310と、メモリ330と、NIC350を有する。プロセッサ310とメモリ330は互いに接続され、プロセッサ310はメモリ330にアクセスすることができる。プロセッサ110、210、310は例えばCPUチップであり、メモリ130、230、330は例えばDRAMチップである。第1演算処理ノード100、第2演算処理ノード200及びメモリコントローラ300はバス500によって相互に接続される。フラッシュメモリ400はメモリコントローラ300を介してバス500に接続される。
<First embodiment>
FIG. 1 is a hardware configuration diagram of an information processing apparatus 1 in the embodiment. The information processing apparatus 1 includes a first arithmetic processing node 100, a second arithmetic processing node 200, a memory controller 300, a flash memory 400, and a bus 500. The first processing node 100 includes a processor 110, a memory 130, and a network interface card (hereinafter, NIC) 150. The processor 110 and the memory 130 are connected to each other, and the processor 110 can access the memory 130. Similar to the first arithmetic processing node 100, the second arithmetic processing node 200 includes a processor 210, a memory 230, and a NIC 250. The processor 210 and the memory 230 are connected to each other, and the processor 210 can access the memory 230. The memory controller 300 includes a processor 310, a memory 330, and a NIC 350. The processor 310 and the memory 330 are connected to each other, and the processor 310 can access the memory 330. The processors 110, 210, and 310 are, for example, CPU chips, and the memories 130, 230, and 330 are, for example, DRAM chips. The first arithmetic processing node 100, the second arithmetic processing node 200, and the memory controller 300 are connected to each other by a bus 500. The flash memory 400 is connected to the bus 500 via the memory controller 300.
 第1演算処理ノード100及び第2演算処理ノード200は、メモリコントローラ300を介してフラッシュメモリ400にデータを書き込むことができる。また第1演算処理ノード100及び第2演算処理ノード200はメモリコントローラ300を介してフラッシュメモリ400からデータを読み出すことができる。また第1演算処理ノード100がフラッシュメモリ400に書込んだデータを第2演算処理ノード200が読み出して演算処理を行うこともできる。本実施例は、メモリコントローラ300を介してフラッシュメモリ400にアクセス可能な演算処理ノードとして、第1演算処理ノード100及び第2演算処理ノード200の2つの演算処理ノードを含む情報処理装置1を示した。しかし、情報処理装置1に含まれる演算処理ノードの数はこれに限定されるものではなく、情報処理装置1は少なくとも1つの演算処理ノードを含むものであればよい。 The first arithmetic processing node 100 and the second arithmetic processing node 200 can write data to the flash memory 400 via the memory controller 300. The first arithmetic processing node 100 and the second arithmetic processing node 200 can read data from the flash memory 400 via the memory controller 300. In addition, the second arithmetic processing node 200 can read out the data written in the flash memory 400 by the first arithmetic processing node 100 and perform arithmetic processing. The present embodiment shows an information processing apparatus 1 including two arithmetic processing nodes, a first arithmetic processing node 100 and a second arithmetic processing node 200, as arithmetic processing nodes that can access the flash memory 400 via the memory controller 300. It was. However, the number of arithmetic processing nodes included in the information processing apparatus 1 is not limited to this, and the information processing apparatus 1 only needs to include at least one arithmetic processing node.
 図2は、実施例におけるフラッシュメモリ400の、書込み、読出し、消去を行うことができる領域の単位について説明する図である。フラッシュメモリ400は、複数の記憶素子を含むページと呼ばれる単位で、データの書込み及び読出しが行われる。またフラッシュメモリ400は、複数のページを含んでブロックと呼ばれる単位で、データの消去が行われる。図2において、P#0000、P#0001、・・・・P#00MNの各々が1つのページに相当する。また、P#0000~P#000Nが1つのブロックを構成する。 FIG. 2 is a diagram for explaining a unit of an area where writing, reading, and erasing can be performed in the flash memory 400 in the embodiment. The flash memory 400 writes and reads data in units called pages including a plurality of storage elements. The flash memory 400 erases data in units called blocks including a plurality of pages. 2, each of P # 0000, P # 0001,... P # 00MN corresponds to one page. Also, P # 0000 to P # 000N constitute one block.
 フラッシュメモリ400のある特定のページにデータの書込みを行う際、そのページに既にデータが格納されている場合は、格納されているデータに対して新しいデータを上書きすることができない。これは、フラッシュメモリ400の記憶素子が、ゲート電極とチャネル領域との間の電荷保持膜に対して電荷注入又は電荷引抜きを行うことによってデータの書込むという原理に起因するものである。そのため、あるデータを例えばページP#0000に書込もうとする場合は、まずページP#0000にデータが既に格納されているか否かを確認する必要がある。ページP#0000に未だデータが格納されていない場合は、ページP#0000にデータ書込みを行う。ページP#0000に既にデータが格納されている場合は、他の空きページを抽出してデータ書込みを行う。また、ページP#0000に既にデータが格納されている場合であって、既に格納されているデータを新しい書込みデータによって更新する場合は、以下の手順で処理を行う。 When writing data to a specific page of the flash memory 400, if data is already stored in the page, new data cannot be overwritten on the stored data. This is due to the principle that the storage element of the flash memory 400 writes data by performing charge injection or charge extraction with respect to the charge holding film between the gate electrode and the channel region. Therefore, when writing certain data to page P # 0000, for example, it is necessary to first check whether data is already stored in page P # 0000. If data is not yet stored on page P # 0000, data is written to page P # 0000. If data is already stored in page P # 0000, another empty page is extracted and data is written. Further, when data is already stored in page P # 0000 and the already stored data is updated with new write data, processing is performed according to the following procedure.
 まず新たに書込むデータを準備する。そしてページP#0000に格納されているデータを読み出す。次に、読み出されたデータと新たに書込むデータとをマージして更新データを作成する。そして、データが未だ書き込まれていないページを検索する。データが書き込まれていないページとして例えばページP#0001が選定された場合、更新データをページP#0001に書き込む。 First, prepare the data to be newly written. Then, the data stored in page P # 0000 is read. Next, the read data and newly written data are merged to create update data. Then, a page where data has not been written is searched. For example, when page P # 0001 is selected as a page where data is not written, update data is written to page P # 0001.
 次に、本願明細書にて用いる論理アドレス及び物理アドレスと、両者の対応関係について説明する。図1に示す情報処理装置1において、第1演算処理ノード100がフラッシュメモリ400に対してデータXの書込みを行う場合を例として説明する。第1演算処理ノード100は、メモリコントローラ300に対して書込み要求を行い、書込みデータXを送信する。この際、第1演算処理ノード100は、第1演算処理ノード100及び第2演算処理ノード200により認識可能な識別子をデータに付す。この識別子を論理アドレスと呼ぶ。ここでは論理アドレスをL#00xxとして説明する。メモリコントローラ300は、受信したデータXをフラッシュメモリ400の何れかのページに格納する。例えばページP#0000に未だデータが書き込まれていない場合は、データXをページP#0000に書込むことが可能である。一方、ページP#0000に既にデータが書き込まれている場合は、別の空きページ、例えばP#0001にデータXが書込まれる。ページP#0001にも既にデータが書き込まれている場合は、更に別のページにデータXが書き込まれる。つまり、データXがフラッシュメモリ400内のどのページに格納されるかは、フラッシュメモリ400のその時点でのページの空き状況によって相違することになる。ここで、実際にデータXが書き込まれるページP#0000やP#0001のことを物理アドレスと呼ぶ。データXがフラッシュメモリ400の何れかのページに書き込まれた後、第1演算処理ノード100又は第2演算処理ノード200がデータXを読み出すためにフラッシュメモリ400にアクセスする。この場合、第1演算処理ノード100又は第2演算処理ノード200は、格納する際に用いた論理アドレスL#00xxを指定して読出し要求を行う。メモリコントローラ300が要求に正しく応えるためには、論理アドレスL#00xxで指定されたデータXの書込みが、フラッシュメモリ400内のどのページに対してなされたのかを記憶しておく必要がある。本明細書においては、論理アドレスがどの物理アドレスに対応するのかを記録したテーブルを、論理アドレス管理テーブルと呼ぶ。 Next, the logical address and physical address used in this specification and the correspondence between them will be described. In the information processing apparatus 1 shown in FIG. 1, a case where the first arithmetic processing node 100 writes data X to the flash memory 400 will be described as an example. The first processing node 100 makes a write request to the memory controller 300 and transmits write data X. At this time, the first arithmetic processing node 100 attaches an identifier that can be recognized by the first arithmetic processing node 100 and the second arithmetic processing node 200 to the data. This identifier is called a logical address. Here, the logical address is described as L # 00xx. The memory controller 300 stores the received data X in any page of the flash memory 400. For example, when data is not yet written on page P # 0000, data X can be written on page P # 0000. On the other hand, if data has already been written to page P # 0000, data X is written to another empty page, for example P # 0001. If data has already been written to page P # 0001, data X is written to another page. That is, the page in which the data X is stored in the flash memory 400 differs depending on the empty state of the page in the flash memory 400 at that time. Here, pages P # 0000 and P # 0001 on which data X is actually written are called physical addresses. After the data X is written to any page of the flash memory 400, the first arithmetic processing node 100 or the second arithmetic processing node 200 accesses the flash memory 400 in order to read the data X. In this case, the first arithmetic processing node 100 or the second arithmetic processing node 200 designates the logical address L # 00xx used for storing and makes a read request. In order for the memory controller 300 to correctly respond to the request, it is necessary to store to which page in the flash memory 400 the data X specified by the logical address L # 00xx was written. In this specification, a table that records which physical address a logical address corresponds to is called a logical address management table.
 図3(A)は、実施例における論理アドレス管理テーブルの例を示す図である。図3(A)に示す論理アドレス管理テーブルは、論理アドレスと、論理アドレスに対応する物理アドレスと、L-Valid値と、L-Error値とを含む。 FIG. 3A is a diagram illustrating an example of a logical address management table in the embodiment. The logical address management table shown in FIG. 3A includes a logical address, a physical address corresponding to the logical address, an L-Valid value, and an L-Error value.
 L-Valid値は、論理アドレスが付されたデータが、対応する物理アドレスに格納されているか否かを示すフラグである。図3(A)において論理アドレスL#0003に対応するL-Valid値である「1」は、論理アドレスL#0003が付されたデータが、対応する物理アドレスP#0001のページに格納されていることを示す。図3(A)において論理アドレスL#0000に対応するL-Valid値は「0」である。この場合、論理アドレスL#0000が付されたデータは、物理アドレスP#0011のページには格納されていないことを示す。つまり、論理アドレス管理テーブルにおいては、論理アドレスL#0000と物理アドレスP#0011とが対応付けられているように見えるが、実際に論理アドレスL#0000が付されたデータが物理アドレスP#0011のページに格納されている訳ではない。 The L-Valid value is a flag indicating whether data with a logical address is stored in the corresponding physical address. In FIG. 3A, the L-Valid value “1” corresponding to the logical address L # 0003 indicates that the data with the logical address L # 0003 is stored in the page of the corresponding physical address P # 0001. Indicates that In FIG. 3A, the L-Valid value corresponding to the logical address L # 0000 is “0”. In this case, the data with the logical address L # 0000 is not stored in the page of the physical address P # 0011. That is, in the logical address management table, it seems that the logical address L # 0000 and the physical address P # 0011 are associated with each other, but the data to which the logical address L # 0000 is actually attached is the physical address P # 0011. Is not stored in the page.
 L-Error値は、論理アドレスが付されたデータが、フラッシュメモリ400に正しく書き込まれたか否かを示すフラグである。図3(A)に示す例においては、L-Error値が「0」であれば、論理アドレスで特定されるデータがフラッシュメモリ400に正しく格納されたことを意味する。逆にL-Error値が「1」であれば、論理アドレスで特定されるデータがフラッシュメモリ400に正しく格納されなかった、すなわち書込まれたデータにエラーが含まれることを意味する。 The L-Error value is a flag indicating whether or not the data with the logical address is correctly written in the flash memory 400. In the example shown in FIG. 3A, if the L-Error value is “0”, it means that the data specified by the logical address is correctly stored in the flash memory 400. On the other hand, if the L-Error value is “1”, it means that the data specified by the logical address is not correctly stored in the flash memory 400, that is, the written data includes an error.
 論理アドレス管理テーブルとは別に、フラッシュメモリ400の各物理アドレスのページが何等かのデータを格納している状態であるか、又はデータが消去された状態であるか、を記録しておく必要がある。各物理アドレスのページの状態が記録されたテーブルを、物理アドレス管理テーブルと呼ぶ。図3(B)は、実施例における物理アドレス管理テーブルの例を示す図である。図3(B)に示す物理アドレス管理テーブルは、物理アドレスと、P-Valid値と、P-Error値を含む。 In addition to the logical address management table, it is necessary to record whether the page of each physical address in the flash memory 400 is in a state where some data is stored or whether the data is erased. is there. A table in which the page status of each physical address is recorded is called a physical address management table. FIG. 3B is a diagram illustrating an example of a physical address management table in the embodiment. The physical address management table shown in FIG. 3B includes a physical address, a P-Valid value, and a P-Error value.
 P-Valid値は、対応する物理アドレスのページに何等かのデータが書き込まれているか否かを示すフラグである。例えば物理アドレスP#0011のページに対応するP-Valid値である「0」は、物理アドレスP#0011のページにはデータが書き込まれていないことを意味する。また物理アドレスP#0001のページに対応するP-Valid値である「1」は、物理アドレスP#0001のページに何等かのデータが書き込まれていることを意味する。 The P-Valid value is a flag indicating whether any data is written in the page of the corresponding physical address. For example, “0” that is the P-Valid value corresponding to the page of the physical address P # 0011 means that data is not written in the page of the physical address P # 0011. Further, “1” which is a P-Valid value corresponding to the page of the physical address P # 0001 means that some data is written to the page of the physical address P # 0001.
 P-Error値は、対応する物理アドレスのページの記憶素子に何等かのデバイス不良が生じていることを示すフラグである。記憶素子のデバイス不良とは、例えばフラッシュメモリ400の電荷保持膜の電荷保持能力が劣化している場合等である。図3(B)において、物理アドレスP#0014のページに対応するP-Errorの値である「1」は、物理アドレスP#0014のページ含まれる記憶素子の少なくとも一部に何等かの不具合があることを意味する。このようにP-Error値を記録することにより、このページには何等かの物理欠陥があることを認識することができ、今後このページへの書込みは行わないようにする等の制御が可能となる。 The P-Error value is a flag indicating that some device failure has occurred in the storage element of the corresponding physical address page. The device failure of the memory element is, for example, a case where the charge retention capability of the charge retention film of the flash memory 400 is deteriorated. In FIG. 3B, “1” which is the value of P-Error corresponding to the page of the physical address P # 0014 indicates that there is some trouble in at least a part of the storage element included in the page of the physical address P # 0014. It means that there is. By recording the P-Error value in this way, it is possible to recognize that this page has some physical defect, and it is possible to control such that writing to this page will not be performed in the future. Become.
 ここで、論理アドレス管理テーブルに記述されるL-Error値と、物理アドレス管理テーブルに記述されるP-Error値との技術的意義の相違を説明する。P-Error値は、物理アドレスに対応付けられる識別子であり、対応する物理アドレスのページの記憶素子に何等かの不具合が生じ、当該物理アドレスのページにはデータ書込みを正しく行えないことを示すものである。これに対し、L-Error値は、論理アドレスに対応付けられる識別子であり、対応する論理アドレスが付されたデータの書込みが正しく行われなかったこと示すものである。論理アドレスと物理アドレスの対応関係は一定ではなく、例えば後述するガベージコレクション等によって変更され得るものである。そのため、物理アドレスに対応付けられたP-Error値では、ある論理アドレスが付されたデータの書込みが正しく行われなかったことを継続して記録することができない。これに対してL-Error値は、論理アドレスに対応して付された識別子である。そのため、論理アドレスと物理アドレスの対応関係が変更されても、ある論理アドレスが付されたデータの書込みが正しく行われなかったことを継続して記録することができる。このL-Error値を用いることで、情報処理装置1全体のデータ処理の効率化、または情報処理の誤動作を抑制することができる。本明細ではL-Errorを書込みエラーフラグとも呼ぶ。 Here, the difference in technical significance between the L-Error value described in the logical address management table and the P-Error value described in the physical address management table will be described. The P-Error value is an identifier associated with a physical address, and indicates that some trouble has occurred in the storage element of the corresponding physical address page, and data cannot be correctly written to the page of the physical address. It is. On the other hand, the L-Error value is an identifier associated with the logical address, and indicates that the data with the corresponding logical address was not correctly written. The correspondence between the logical address and the physical address is not constant, and can be changed by, for example, garbage collection described later. Therefore, the P-Error value associated with the physical address cannot continuously record that the data with a certain logical address was not correctly written. On the other hand, the L-Error value is an identifier assigned corresponding to the logical address. Therefore, even if the correspondence relationship between the logical address and the physical address is changed, it can be continuously recorded that the writing of data with a certain logical address was not performed correctly. By using this L-Error value, it is possible to improve the efficiency of data processing of the entire information processing apparatus 1 or to suppress malfunction of information processing. In this specification, L-Error is also called a write error flag.
 次に、データ書込みを行う際の、論理アドレス管理テーブルと物理アドレス管理テーブルの用い方及びそれぞれのテーブルの内容の更新について説明する。データ書込み要求を受けた時点では、論理アドレス管理テーブルと物理アドレス管理テーブルはそれぞれ図3(A)及び図3(B)に示す内容であったとする。第1の例として、第1演算処理ノード100が、論理アドレスL#0000を付したデータAの書込み要求を行う例を説明する。図3(A)の論理アドレス管理テーブルによれば、論理アドレスL#0000のL-Valid値は「0」であるので、今回の書込みはデータの更新ではなく新規データの書込みであることが分かる。また論理アドレスL#0000は物理アドレスP#0011に対応付けされていることが分かる。そして図3(B)の物理アドレス管理テーブルによれば、物理アドレスP#0011のP-Valid値は「0」である。つまり、論理アドレスL#0000に対応付けられている物理アドレスP#0011のページにはデータが書き込まれていないことが分かる。この場合は、データAは物理アドレスP#0011のページに書込まれる。そして論理アドレスL#0000に対応するL-Validの欄に「1」が書き込まれる。また物理アドレスP#0011に対応するP-Validの欄に「1」が書き込まれる。 Next, how to use the logical address management table and the physical address management table and how to update the contents of each table when writing data will be described. Assume that the logical address management table and the physical address management table have the contents shown in FIGS. 3A and 3B, respectively, at the time of receiving the data write request. As a first example, an example will be described in which the first arithmetic processing node 100 makes a write request for data A with the logical address L # 0000. According to the logical address management table of FIG. 3A, since the L-Valid value of the logical address L # 0000 is “0”, it can be seen that the current write is not a data update but a new data write. . It can also be seen that the logical address L # 0000 is associated with the physical address P # 0011. According to the physical address management table of FIG. 3B, the P-Valid value of the physical address P # 0011 is “0”. That is, it can be seen that no data is written in the page of the physical address P # 0011 associated with the logical address L # 0000. In this case, data A is written in the page of physical address P # 0011. Then, “1” is written in the L-Valid field corresponding to the logical address L # 0000. Further, “1” is written in the P-Valid field corresponding to the physical address P # 0011.
 第2の例として、第1演算処理ノード100が、論理アドレスL#0002が付されたデータBの書込み要求を行う例を説明する。図3(A)の論理アドレス管理テーブルによれば、論理アドレスL#0002のL-Valid値は「0」であるので、今回の書込みはデータの更新ではなく新規データの書込みであることが分かる。また論理アドレスL#0002は物理アドレスP#0006に対応付けされていることが分かる。そして図3(B)の物理アドレス管理テーブルによれば、物理アドレスP#0006のP-Valid値は「1」であるので、物理アドレスP#0006のページには何等かのデータが既に書き込まれていることが分かる。この場合は、未だデータが書き込まれていない別のページ、例えば物理アドレスP#0011のページを書込みページとして特定する。そして物理アドレスP#0011にデータBを書込み、論理アドレス管理テーブルにおいて、論理アドレスL#0002に対応する物理アドレスをP#0006からP#0011に書き換える。また、論理アドレス管理テーブルの、論理アドレスL#0002に対応するL-Valid値を「1」とする。更に物理アドレス管理テーブルの、物理アドレスP#0011に対応するP-Valid値を「1」とする。 As a second example, an example will be described in which the first arithmetic processing node 100 makes a write request for data B to which a logical address L # 0002 is attached. According to the logical address management table of FIG. 3A, since the L-Valid value of the logical address L # 0002 is “0”, it can be seen that the current write is not a data update but a new data write. . It can also be seen that the logical address L # 0002 is associated with the physical address P # 0006. According to the physical address management table of FIG. 3B, since the P-Valid value of the physical address P # 0006 is “1”, some data has already been written to the page of the physical address P # 0006. I understand that In this case, another page to which data has not yet been written, for example, the page of the physical address P # 0011 is specified as the write page. Then, data B is written to the physical address P # 0011, and the physical address corresponding to the logical address L # 0002 is rewritten from P # 0006 to P # 0011 in the logical address management table. Also, the L-Valid value corresponding to the logical address L # 0002 in the logical address management table is set to “1”. Further, the P-Valid value corresponding to the physical address P # 0011 in the physical address management table is set to “1”.
 第3の例として、第1演算処理ノード100が論理アドレスL#0003を付したデータCの書込み要求を行う例を説明する。図3(A)の論理アドレス管理テーブルによれば、論理アドレスL#0003のL-Valid値は「1」であるので、今回の書込みは新規データの書込みではなくデータの更新であることが分かる。また論理アドレスL#0003は物理アドレスP#0001に対応付けされていることが分かる。この場合は、物理アドレスP#0001に格納されているデータを読み出してデータCとマージし、マージしたデータを別のページに書き込む。別のページとして例えば物理アドレスP#0011のページにマージされたデータが書込まれる。そして論理アドレス管理テーブルにおいて、論理アドレスL#0003に対応する物理アドレスをP#0001からP#0011に書き換える。更に物理アドレス管理テーブルにおいて、物理アドレスP#0011に対応するP-Valid値を「1」に書き替える。尚、この第3の例において、更新前のデータが格納されていた物理アドレスP#0001は、更新前のデータを保持したまま論理アドレスL#0003との対応付けが断たれ、第1演算処理ノード100又は第2演算処理ノード200からアクセスできないページとなる。これは実際に使用し得るメモリ領域が減少したことを意味する。このようにアクセスが行えなくなった領域に対してはガベージコレクションを行うことで、再度書込み及び読出しのアクセスが行える領域とすることができる。ガベージコレクションとは、消去したいブロック内にある有効データが書き込まれたページを他のブロックに移動し、消去したいブロックを有効データの書き込まれたページを含まない状態にして消去し、書き込み可能な領域を増やす作業の事をいう。 As a third example, an example will be described in which the first arithmetic processing node 100 makes a write request for data C with the logical address L # 0003. According to the logical address management table of FIG. 3A, since the L-Valid value of the logical address L # 0003 is “1”, it can be seen that the current write is not a new data write but a data update. . It can also be seen that the logical address L # 0003 is associated with the physical address P # 0001. In this case, the data stored at the physical address P # 0001 is read and merged with the data C, and the merged data is written to another page. As another page, for example, the merged data is written in the page of the physical address P # 0011. In the logical address management table, the physical address corresponding to the logical address L # 0003 is rewritten from P # 0001 to P # 0011. In the physical address management table, the P-Valid value corresponding to the physical address P # 0011 is rewritten to “1”. In this third example, the physical address P # 0001 in which the pre-update data is stored is not associated with the logical address L # 0003 while retaining the pre-update data, and the first calculation process is performed. The page cannot be accessed from the node 100 or the second arithmetic processing node 200. This means that the memory area that can actually be used is reduced. In this way, by performing garbage collection on the area that can no longer be accessed, it can be made an area that can be accessed for writing and reading again. Garbage collection is a writable area in which a page in which valid data is written in a block to be erased is moved to another block, and the block to be erased is erased without including a page in which valid data is written. It means the work to increase.
 第4の例として、第1演算処理ノード100が論理アドレスL#0001を付したデータDの書込み要求を行う例を説明する。図3(A)の論理アドレス管理テーブルによれば、論理アドレスL#0001のL-Valid値は「0」であるので、今回の書込みはデータの更新ではなく新規データの書込みであることが分かる。また論理アドレスL#0001は物理アドレスP#0023に対応付けされていることが分かる。そして図3(B)の物理アドレス管理テーブルによれば、物理アドレスP#0023のP-Valid値は「0」である。つまり、論理アドレスL#0001に対応付けられている物理アドレスP#0023にはデータが書込まれていないことが分かる。この場合は、データDは、物理アドレスP#0023に書込まれる。この時、データ書込みが正常に行われず、データDが正しく物理アドレスP#0023のページに書込まれなかったものとする。この場合は、以下の作業が行われる。 As a fourth example, an example in which the first arithmetic processing node 100 makes a write request for data D with the logical address L # 0001 will be described. According to the logical address management table of FIG. 3A, since the L-Valid value of the logical address L # 0001 is “0”, it can be seen that the current write is not a data update but a new data write. . It can also be seen that the logical address L # 0001 is associated with the physical address P # 0023. According to the physical address management table of FIG. 3B, the P-Valid value of the physical address P # 0023 is “0”. That is, it can be seen that no data is written to the physical address P # 0023 associated with the logical address L # 0001. In this case, data D is written at physical address P # 0023. At this time, it is assumed that the data writing is not normally performed and the data D is not correctly written to the page of the physical address P # 0023. In this case, the following operations are performed.
 まず物理アドレスP#0023にはデータ書込み自体は行われたため、このページが消去状態ではないことを示すために、P-Valid値を「1」とする。また物理アドレスP#0023に何等かのデバイス不良がある可能性があることを示すために、P-Error値を「1」とする。また、論理アドレスL#0001が物理アドレス0023に対応付けられていることを示すために、L-Valid値を「1」とする。更に、論理アドレスL#0001が付されたデータが、フラッシュメモリ400においてエラーを有する状態で格納されていることを示すために、L-Error値を「1」とする。このような書き替えを行った後の論理アドレス管理テーブルと物理アドレス管理テーブルの内容を図4(A)及び図4(B)に示す。 First, since data was written to the physical address P # 0023, the P-Valid value is set to “1” to indicate that this page is not in the erased state. Also, the P-Error value is set to “1” to indicate that there is a possibility that there is any device failure in the physical address P # 0023. In order to indicate that the logical address L # 0001 is associated with the physical address 0023, the L-Valid value is set to “1”. Further, in order to indicate that the data with the logical address L # 0001 is stored in the flash memory 400 in an error state, the L-Error value is set to “1”. The contents of the logical address management table and physical address management table after such rewriting are shown in FIG. 4 (A) and FIG. 4 (B).
 以上のようにして、論理アドレス管理テーブルと物理アドレス管理テーブルを用いたデータの書込み、及び論理アドレス管理テーブルと物理アドレス管理テーブルの内容の書き換え行われる。 As described above, data is written using the logical address management table and physical address management table, and the contents of the logical address management table and physical address management table are rewritten.
 図5は、実施例における第1演算処理ノード100が有するプロセッサ110の機能ブロック図である。プロセッサ110は、メモリ130、フラッシュメモリ400又は他の演算処理ノードのメモリに格納された所定のプログラムによる処理を実行することにより、図5に示す各ブロックの機能を実現する。プロセッサ110は、メモリコントローラ300に対してフラッシュメモリ400へのアクセス要求を発行する要求発行部111、メモリコントローラ300や第2演算処理ノード200との間でのデータの送受信や各種通知の送受信を行う送受信部112、フラッシュメモリ400へのデータ書込みに失敗した場合の回復処理を行う回復処理部113、メモリ130の制御を行うメモリ制御部114として機能する。但し、図5に示される機能の全てがプロセッサ110で実現される必要はない。一部の機能がプロセッサ110以外のプロセッサ又は専用の集積回路にて実現されてもよい。第2演算処理ノード200が有するプロセッサ210は、メモリ230、フラッシュメモリ400又は他の演算処理ノードのメモリに格納された所定のプログラムによる処理を実行することにより、プロセッサ110と同様の機能を実現する。 FIG. 5 is a functional block diagram of the processor 110 included in the first arithmetic processing node 100 in the embodiment. The processor 110 implements the function of each block shown in FIG. 5 by executing processing based on a predetermined program stored in the memory 130, the flash memory 400, or the memory of another arithmetic processing node. The processor 110 transmits / receives data and / or various notifications to / from the request issuing unit 111 that issues an access request to the flash memory 400 to the memory controller 300, the memory controller 300, and the second processing node 200. It functions as a transmission / reception unit 112, a recovery processing unit 113 that performs recovery processing when data writing to the flash memory 400 fails, and a memory control unit 114 that controls the memory 130. However, not all of the functions shown in FIG. Some functions may be realized by a processor other than the processor 110 or a dedicated integrated circuit. The processor 210 included in the second processing node 200 realizes the same function as the processor 110 by executing processing based on a predetermined program stored in the memory 230, the flash memory 400, or the memory of another processing node. .
 図6は、本実施例における第1演算処理ノード100又は第2演算処理ノード200から発行される要求の記述フォーマットの例を示す図である。要求の記述フォーマットには、要求の発行元を示す「要求発行元ID」、要求の同一性を識別するための「リクエストID」、要求内容を示す「コマンド」、要求の送信先を示す「ノードアドレス」、データの論理アドレスを指定する「論理アドレス」が含まれる。 FIG. 6 is a diagram illustrating an example of a description format of a request issued from the first arithmetic processing node 100 or the second arithmetic processing node 200 in the present embodiment. The request description format includes a “request issuer ID” indicating the request issuer, a “request ID” for identifying the request identity, a “command” indicating the request content, and a “node” indicating the request destination. “Address” and “logical address” for designating the logical address of the data are included.
 図7は、実施例におけるメモリコントローラ300の有するメモリ330に含まれる情報を示す図である。メモリ330には、論理アドレス管理テーブル331と物理アドレス管理テーブル332が格納される。また、メモリ330はフラッシュメモリ400に書込まれるデータを一時格納するデータバッファとしても用いられる。 FIG. 7 is a diagram illustrating information included in the memory 330 included in the memory controller 300 according to the embodiment. The memory 330 stores a logical address management table 331 and a physical address management table 332. The memory 330 is also used as a data buffer for temporarily storing data written to the flash memory 400.
 図8は、実施例におけるメモリコントローラ300の有するプロセッサ310の機能ブロック図である。プロセッサ310は、メモリ330、フラッシュメモリ400又は他の演算処理ノードのメモリに格納された所定のプログラムによる処理を実行することにより、図8に示す各ブロックの機能を実現する。プロセッサ310は、論理アドレス管理テーブル331及び物理アドレス管理テーブル332の解読や変更を行うテーブル管理部311、メモリコントローラ300が要求に対する処理を行っている間は他の要求のアクセスを制限するロック制御部312、第1演算処理ノード100及び第2演算処理ノード200に各種の通知を行う通知部313、メモリ330の制御を行うメモリ制御部314、フラッシュメモリ400からデータを読出すデータ読出し部315、フラッシュメモリ400にデータを書き込むデータ書込み部316、フラッシュメモリ400への書込みが正しく完了したかどうかを確認する確認部317、フラッシュメモリ400への再書込み制御を行う再書込み部318、データの送信を行うデータ送信部319として機能する。但し、図8に示される機能の全てがプロセッサ310により実現される必要はない。一部の機能がプロセッサ310以外のプロセッサ又は専用の集積回路にて実現されてもよい。 FIG. 8 is a functional block diagram of the processor 310 included in the memory controller 300 in the embodiment. The processor 310 implements the function of each block illustrated in FIG. 8 by executing processing based on a predetermined program stored in the memory 330, the flash memory 400, or the memory of another arithmetic processing node. The processor 310 includes a table management unit 311 that decodes and changes the logical address management table 331 and the physical address management table 332, and a lock control unit that restricts access to other requests while the memory controller 300 is processing the request. 312, a notification unit 313 that performs various notifications to the first arithmetic processing node 100 and the second arithmetic processing node 200, a memory control unit 314 that controls the memory 330, a data reading unit 315 that reads data from the flash memory 400, and a flash A data writing unit 316 that writes data to the memory 400, a confirmation unit 317 that confirms whether writing to the flash memory 400 has been completed correctly, a rewriting unit 318 that performs rewriting control to the flash memory 400, and data transmission As the data transmission unit 319 To function. However, not all of the functions shown in FIG. Some functions may be realized by a processor other than the processor 310 or a dedicated integrated circuit.
 図9は、実施例におけるフラッシュメモリ400の回路ブロック図である。フラッシュメモリ400は、記憶素子が配置されたメモリセルアレイ410と、メモリセルアレイ410に含まれる記憶素子に対してデータの書込み及びデータの読出しを行う書込み読出し回路420と、書込みデータを格納する書込みバッファ430と、コンパレータ440と、ステータスレジスタ450とを有する。またフラッシュメモリ400は、必須ではないがエラー訂正回路460を有してもよい。本実施例においてエラー訂正回路を用いる場合、エラー訂正回路はフラッシュメモリ400に搭載してもよく、またメモリコントローラ300に搭載してもよい。 FIG. 9 is a circuit block diagram of the flash memory 400 in the embodiment. The flash memory 400 includes a memory cell array 410 in which storage elements are arranged, a write / read circuit 420 that writes data to and reads data from the storage elements included in the memory cell array 410, and a write buffer 430 that stores write data. And a comparator 440 and a status register 450. The flash memory 400 may include an error correction circuit 460, although not essential. When an error correction circuit is used in this embodiment, the error correction circuit may be mounted on the flash memory 400 or the memory controller 300.
 フラッシュメモリ400にデータの書込みを行う場合は、まず書込みバッファ430に書込みデータを保持させる。そして書込み読出し回路420が、書込みバッファ430内のデータに基づき、メモリセルアレイ410内の記憶素子に書込み処理を行う。その後、記憶素子に書込まれたデータと書込みバッファ430に保持されたデータとをコンパレータ440が比較する。コンパレータ440による比較の結果、両データが一致した場合は、正常に書込みが行われたことを示す情報を、ステータスレジスタ450に記録する。また、記憶素子に書込まれたデータと書込みバッファ430に保持されたデータとが一致しない場合は、正常に書込みが行われなかったことを示す情報をステータスレジスタ450に記録する。フラッシュメモリ400がエラー訂正回路460を有する場合は、書込みデータとともにエラー訂正用付加ビットをメモリセルアレイ410に書込む。書込んだデータにエラーがあっても、エラー訂正用付加ビットを用いてエラーが訂正可能であればエラーを訂正したデータが読み出される。本実施例においては、書込みデータにエラーがある場合であっても、エラー訂正回路460にて訂正可能なエラーである場合はステータスレジスタ450に正常に書込みが完了したことを示す情報を書き込んでもよい。この場合は、エラー訂正回路460にて訂正を行うことができない書込みエラーがある場合には、ステータスレジスタ450に正常に書込みが行われなかったことを示す情報が書き込まれる。もしくは、書込みデータにエラーがある場合であれば、エラー訂正回路460にて訂正可能なエラーであっても、ステータスレジスタ450に正常に書込みが行われなかったことを示す情報を書き込んでもよい。本明細書において「正常に書込みが行われなかった」とは、「エラー訂正が可能か不能かを問わず、書込みデータに何等かのエラーが存在する」という場合と、「エラー訂正が不能なエラーが書込みデータにエラーが存在する」という場合の、いずれの場合も含むものとして用いる。 When writing data to the flash memory 400, the write data is first held in the write buffer 430. Then, the write / read circuit 420 performs a write process on the storage elements in the memory cell array 410 based on the data in the write buffer 430. Thereafter, the comparator 440 compares the data written in the storage element with the data held in the write buffer 430. As a result of the comparison by the comparator 440, when both data match, information indicating that the writing has been normally performed is recorded in the status register 450. If the data written in the storage element and the data held in the write buffer 430 do not match, information indicating that the writing has not been normally performed is recorded in the status register 450. When the flash memory 400 has the error correction circuit 460, the error correction additional bits are written into the memory cell array 410 together with the write data. Even if there is an error in the written data, the error-corrected data is read if the error can be corrected using the additional bit for error correction. In the present embodiment, even when there is an error in the write data, if the error can be corrected by the error correction circuit 460, information indicating that the writing has been normally completed may be written in the status register 450. . In this case, when there is a write error that cannot be corrected by the error correction circuit 460, information indicating that the writing has not been normally performed is written in the status register 450. Alternatively, if there is an error in the write data, even if the error can be corrected by the error correction circuit 460, information indicating that the writing has not been normally performed may be written in the status register 450. In this specification, “normally writing has not been performed” means that “there is some error in the written data regardless of whether error correction is possible or impossible” and “error correction is impossible”. It is used to include both cases where an error is present in the write data.
 図10は、第1演算処理ノード100、第2演算処理ノード200と、メモリコントローラ300と、フラッシュメモリ400との間での処理の流れを例示する図である。まず処理601において、第1演算処理ノード100がメモリコントローラ300にデータ書込み要求を行う。また処理602において、第1演算処理ノード100は、書込みデータをメモリコントローラ300に送信する。書込みデータには論理アドレスL#00xxが付されているものとする。処理603において、NIC350は、書込み要求をプロセッサ310に転送する。また処理604おいて、NIC350は、書込みデータをメモリ330に一時格納する。また処理605において、NIC350は、第1演算処理ノード100に対して要求受領通知を通知する。要求受領通知は本実施例において必須ではないが、フラッシュメモリ400への実際の書込みが終了するよりも先に要求受領通知を送信することで、第1演算処理ノード100が他の作業を行うことを可能とする。フラッシュメモリ400へのデータの書込みは、DRAMやSRAMへのデータの書込みに対して時間を要するため、このような要求受領通知は第1演算処理ノード100の処理効率を向上させるために有効である。処理606においてプロセッサ310は、受信したデータ書込み要求が、既にフラッシュメモリ400に格納されているデータの更新である場合は、フラッシュメモリ400から既に格納されているデータの読出しを行う。処理607においてフラッシュメモリ400からデータが読み出される。処理608において、メモリ330に格納されていた書込みデータとフラッシュメモリ400から読み出されたデータがマージされ、フラッシュメモリ400に書込むデータが作成される。処理609においてプロセッサ310は、フラッシュメモリ400にデータを書込む。処理610においてプロセッサ310は、フラッシュメモリ400に対して書込みが正常に終了したか否かの完了確認を行う。処理611においてフラッシュメモリ400は、完了確認に対応して、ステータスレジスタ450の内容をプロセッサ310に通知する。図10に示す例では、データ書込みが正常に終了したことを示す正常終了通知がプロセッサ310に送られ、プロセッサ310は書込み処理を終了させる。 FIG. 10 is a diagram illustrating a process flow among the first arithmetic processing node 100, the second arithmetic processing node 200, the memory controller 300, and the flash memory 400. First, in process 601, the first arithmetic processing node 100 makes a data write request to the memory controller 300. In process 602, the first arithmetic processing node 100 transmits write data to the memory controller 300. It is assumed that the write data is assigned a logical address L # 00xx. In process 603, the NIC 350 transfers the write request to the processor 310. In process 604, the NIC 350 temporarily stores write data in the memory 330. In process 605, the NIC 350 notifies the first arithmetic processing node 100 of a request receipt notification. Although the request reception notification is not essential in this embodiment, the first arithmetic processing node 100 performs other work by transmitting the request reception notification before the actual writing to the flash memory 400 is completed. Is possible. Since writing data to the flash memory 400 requires time for writing data to the DRAM or SRAM, such a request reception notification is effective for improving the processing efficiency of the first processing node 100. . In process 606, when the received data write request is an update of data already stored in the flash memory 400, the processor 310 reads data already stored from the flash memory 400. In process 607, data is read from the flash memory 400. In process 608, the write data stored in the memory 330 and the data read from the flash memory 400 are merged to create data to be written to the flash memory 400. In process 609, the processor 310 writes data to the flash memory 400. In process 610, the processor 310 confirms whether or not the writing to the flash memory 400 has been normally completed. In process 611, the flash memory 400 notifies the processor 310 of the contents of the status register 450 in response to the completion confirmation. In the example shown in FIG. 10, a normal end notification indicating that data writing has ended normally is sent to the processor 310, and the processor 310 ends the write process.
 また処理612において、第2演算処理ノード200がメモリコントローラ300に対して、前述の第1演算処理ノード100が処理601で書き込み要求したものと同じ論理アドレスL#00xxを指定した読出し要求を送信する。処理613において、NIC350は、読出し要求をプロセッサ310に転送する。プロセッサ310は、第1演算処理ノード100から受けた書込み要求に対する処理が完了するまで、第2演算処理ノード200から受けた読出し要求に対する処理を保留する。書込み要求に対する処理が終了した後、処理614においてプロセッサ310はフラッシュメモリ400に対して読出し処理を行う。処理615においてプロセッサ310はフラッシュメモリ400からデータを受信し、処理616及び処理617において、プロセッサ310はNIC350を介して第2演算処理ノード200にデータを送信する。 In process 612, the second operation processing node 200 transmits a read request designating the same logical address L # 00xx as the one requested by the first operation processing node 100 in step 601 to the memory controller 300. . In process 613, the NIC 350 transfers the read request to the processor 310. The processor 310 suspends the processing for the read request received from the second arithmetic processing node 200 until the processing for the write request received from the first arithmetic processing node 100 is completed. After the process for the write request is completed, the processor 310 performs a read process on the flash memory 400 in process 614. In process 615, the processor 310 receives data from the flash memory 400. In processes 616 and 617, the processor 310 transmits data to the second arithmetic processing node 200 via the NIC 350.
 図10では、論理アドレスL#00xxに対応する物理アドレスに、既にデータが書き込まれていた場合の処理を示した。しかし論理アドレスL#00xxに対応する物理アドレスにデータが書き込まれていない場合は、処理606及び処理607は行われず、書込みデータを直接対応する物理アドレスに書込む。また、図10では、第1演算処理ノード100から受けた書込み要求に対する処理の最中に第2演算処理ノード200から読出し要求を受けた例を示している。しかし、第2演算処理ノード200からの読出し要求は、第1演算処理ノード100から受けた書込み要求に対する処理が完了した後にメモリコントローラ300が受信してもよい。 FIG. 10 shows processing when data has already been written to the physical address corresponding to the logical address L # 00xx. However, when data is not written to the physical address corresponding to the logical address L # 00xx, the processing 606 and processing 607 are not performed, and the write data is directly written to the corresponding physical address. FIG. 10 shows an example in which a read request is received from the second arithmetic processing node 200 during the processing for the write request received from the first arithmetic processing node 100. However, the read request from the second arithmetic processing node 200 may be received by the memory controller 300 after the processing for the write request received from the first arithmetic processing node 100 is completed.
 図11は、第1演算処理ノード100、第2演算処理ノード200と、メモリコントローラ300と、フラッシュメモリ400の間での処理の流れの別の例を示す図である。図10に示す処理と同じ内容の処理については同一の参照符号を付し、説明を省略する。 FIG. 11 is a diagram showing another example of the flow of processing among the first arithmetic processing node 100, the second arithmetic processing node 200, the memory controller 300, and the flash memory 400. The processes having the same contents as those shown in FIG. 10 are denoted by the same reference numerals, and the description thereof is omitted.
 図11は、フラッシュメモリ400へのデータ書込みにおいて書込みエラーが発生した場合について例示する。処理700において、フラッシュメモリ400が、異常終了通知をプロセッサ310に通知する。ここでプロセッサ310は、再書込み処理を行ってもよい。再書込み処理とは、書込みが正常に終了しなかった場合に同一データを再度フラッシュメモリ400に書込む処理である。再書込み処理の詳細は後述する。再書込み処理を行っても書込みが正常に終了しない場合は、プロセッサ310はフラッシュメモリ400から、再度異常終了通知を受信する。 FIG. 11 illustrates a case where a write error has occurred in writing data to the flash memory 400. In the process 700, the flash memory 400 notifies the processor 310 of an abnormal end notification. Here, the processor 310 may perform a rewrite process. The rewrite process is a process for writing the same data into the flash memory 400 again when the writing is not normally completed. Details of the rewriting process will be described later. If the writing does not end normally even after performing the rewriting process, the processor 310 receives an abnormal end notification from the flash memory 400 again.
 フラッシュメモリ400から異常終了通知を受けたプロセッサ310は、処理701及び処理702において書込みエラー通知を、NIC350を介して書込み要求の発行元である第1演算処理ノード100に通知する。またプロセッサ310は、フラッシュメモリ400から異常終了通知を受けると、論理アドレス管理テーブル331のL‐Error値を「1」とすることにより書込みエラーフラグを発生させる。そして処理703及び処理704において、プロセッサ310はNIC350を介して、第2演算処理ノード200から受けた読出し要求に対して要求不受理通知を通知する。第2演算処理ノード200から受けた読出し要求に対してデータ読出しは行わない。これにより、第2演算処理ノード200に誤データが送信されることを防止することができる。 Upon receiving the abnormal termination notification from the flash memory 400, the processor 310 notifies the first arithmetic processing node 100 that is the source of the write request via the NIC 350 in processing 701 and processing 702. When the processor 310 receives an abnormal end notification from the flash memory 400, the processor 310 generates a write error flag by setting the L-Error value of the logical address management table 331 to "1". In processing 703 and processing 704, the processor 310 notifies a request non-acceptance notification to the read request received from the second arithmetic processing node 200 via the NIC 350. Data is not read in response to a read request received from the second arithmetic processing node 200. Thereby, it is possible to prevent erroneous data from being transmitted to the second arithmetic processing node 200.
 ここで、プロセッサ310が行う再書込み処理について説明する。再書込み処理は、書込みが正常に終了しなかった場合に、第1演算処理ノード100からの要求に対して書込みエラー通知を出す前に行われる。再書込み処理を行う場合、プロセッサ310は最初に書込みを行った物理アドレスのP-Error値を「1」として、物理アドレス管理テーブル332に格納する。そしてプロセッサ310は、物理アドレス管理テーブル332から、P-Validが「0」であるページ、つまりデータが書き込まれていないページを検索する。検索された新しいページに対して同様にデータの書込みが行われる。再書込み処理によって正常にデータが書き込まれれば、新しいページの物理アドレスが論理アドレスに対応するように論理アドレス管理テーブル331が書き替えられる。この場合は、論理アドレスのL‐Error値は、正常に書込みが行われたことを示す「0」となり、書込みエラー通知は発行されない。再書込み処理は、再書込みを行う回数制限を設けてもよい。例えば再書込みの回数制限を2回と設定した場合は、2回の再書込みを行ってもフラッシュメモリ400に正常にデータ書込みが行われない場合は、再書込み処理を終了させる。そして論理アドレスのL‐Error値は、正常に書込みが行われなかったことを示す「1」となる。尚、プロセッサ310による再書込み処理は本実施例において必須ではなく、最初の書込みが失敗したことを受けて書込みエラー通知を第1演算処理ノード100に対して送信してもよい。 Here, the rewriting process performed by the processor 310 will be described. The rewrite process is performed before a write error notification is issued in response to a request from the first arithmetic processing node 100 when the writing is not normally completed. When performing the rewrite process, the processor 310 sets the P-Error value of the physical address that has been written first to “1” and stores it in the physical address management table 332. Then, the processor 310 searches the physical address management table 332 for a page whose P-Valid is “0”, that is, a page in which no data is written. Data is similarly written to the retrieved new page. If data is normally written by the rewrite process, the logical address management table 331 is rewritten so that the physical address of the new page corresponds to the logical address. In this case, the L-Error value of the logical address is “0” indicating that the writing has been performed normally, and no write error notification is issued. The rewrite process may limit the number of times rewrite is performed. For example, if the rewrite count limit is set to two, if data is not normally written to the flash memory 400 even after two rewrites, the rewrite process is terminated. The L-Error value of the logical address is “1” indicating that writing has not been performed normally. Note that the rewrite process by the processor 310 is not essential in this embodiment, and a write error notification may be transmitted to the first arithmetic processing node 100 in response to the failure of the first write.
 図12は、実施例における、データ書込み要求を受けた際のプロセッサ310の処理フローを示す図である。図12の処理は処理1100により開始される。処理1101において、ロック制御部312は、アクセスされた論理アドレスをロックする。ロックされている状態の該当論理アドレスに他の要求がなされた場合は、他の要求は例えばメモリ330に一時格納される。処理1102において、テーブル管理部311が、メモリ330に格納されている論理アドレス管理テーブル331にアクセスする。処理1103において、テーブル管理部311は、論理アドレス管理テーブル331に記載されているL-Errorの値が「0」であるか否かを判定する。処理1103においてL-Errorの値が「0」ではないと判定された場合は、処理1115において通知部313が、データ書込み要求の発行元の演算処理ノードに要求不受理通知を行う。処理1103において、L-Errorの値が「0」と判定された場合は、処理1104においてテーブル管理部311が、論理アドレス管理テーブル331に記載されているL-Validの値が「0」であるか否かを判定する。処理1104においてL-Validの値が「0」であると判定された場合は処理1108へ進む。処理1104においてL‐Validの値が「0」ではないと判定された場合は、処理1105においてテーブル管理部311が、論理アドレス管理テーブル331に基づき、論理アドレスに対応する物理アドレスを抽出する。処理1106においてデータ読出し部315が、抽出された物理アドレスに書込まれているデータを読み出す。処理1107においてメモリ制御部314が、読み出されたデータとメモリ330に格納されている書込みデータとをマージさせて、更新書込みデータを作成する。処理1108においてテーブル管理部311が、メモリ330に格納されている物理アドレス管理テーブル332にアクセスし、データ書込みを行う物理アドレスを選定する。処理1109においてデータ書込み部316が、書込みデータ又は更新書込みデータを、選定された物理アドレスに書込む。処理1110において確認部317が、フラッシュメモリ400のステータスレジスタ450にアクセスして、データ書込みが成功したか否かを判定する。処理1110においてデータ書込みが成功したと判定された場合は、処理1111においてテーブル管理部311が、論理アドレス管理テーブル331のL‐Errorに「0」を記録する。処理1110においてデータ書込みが失敗したと判定された場合には、処理1112において再書込み部318が、再書込み回数が設定値を超えたか否かを判定する。処理1112において再書込み回数が設定値を超えていないと判定された場合は、処理1108へ戻る。処理1112において再書込み回数が設定値を超えていると判定された場合は、処理1113においてテーブル管理部311が、論理アドレス管理テーブル331のL‐Errorに「1」を記録する。処理1114において通知部313が、書込みエラー通知を書込み要求の発行元に通知する。処理1116において、ロック制御部312が他の要求に対するロックを解除し、処理1117により終了する。 FIG. 12 is a diagram illustrating a processing flow of the processor 310 when a data write request is received in the embodiment. The process of FIG. 12 is started by process 1100. In processing 1101, the lock control unit 312 locks the accessed logical address. When another request is made to the corresponding logical address in the locked state, the other request is temporarily stored in the memory 330, for example. In processing 1102, the table management unit 311 accesses the logical address management table 331 stored in the memory 330. In processing 1103, the table management unit 311 determines whether or not the value of L-Error described in the logical address management table 331 is “0”. When it is determined in process 1103 that the value of L-Error is not “0”, in process 1115, the notification unit 313 sends a request non-acceptance notification to the operation processing node that issued the data write request. If it is determined in process 1103 that the L-Error value is “0”, the table management unit 311 in process 1104 indicates that the L-Valid value described in the logical address management table 331 is “0”. It is determined whether or not. If it is determined in process 1104 that the value of L-Valid is “0”, the process proceeds to process 1108. If it is determined in process 1104 that the value of L-Valid is not “0”, the table management unit 311 extracts a physical address corresponding to the logical address based on the logical address management table 331 in process 1105. In processing 1106, the data reading unit 315 reads the data written in the extracted physical address. In process 1107, the memory control unit 314 merges the read data and the write data stored in the memory 330 to create update write data. In processing 1108, the table management unit 311 accesses the physical address management table 332 stored in the memory 330 and selects a physical address for writing data. In processing 1109, the data writing unit 316 writes the write data or the update write data to the selected physical address. In processing 1110, the confirmation unit 317 accesses the status register 450 of the flash memory 400 and determines whether or not the data writing is successful. If it is determined in the process 1110 that the data writing has succeeded, the table management unit 311 records “0” in the L-Error of the logical address management table 331 in the process 1111. If it is determined in process 1110 that data writing has failed, in process 1112, the rewrite unit 318 determines whether or not the number of rewrites exceeds the set value. If it is determined in process 1112 that the rewrite count does not exceed the set value, the process returns to process 1108. If it is determined in process 1112 that the number of rewrites exceeds the set value, the table management unit 311 records “1” in L-Error of the logical address management table 331 in process 1113. In processing 1114, the notification unit 313 notifies the write request issuer of a write error notification. In process 1116, the lock control unit 312 releases the lock for the other request, and the process 1117 ends.
 図13は、実施例における、データ読出し要求を受けた際のプロセッサ310の処理フローを示す図である。図13の処理は処理1200により開始される。処理1201においてテーブル管理部311が、メモリ330に格納されている論理アドレス管理テーブル331にアクセスする。処理1202においてテーブル管理部311は、論理アドレス管理テーブル331に記載されているL-Errorの値が「0」であるか否かを判定する。処理1202においてL-Errorの値が「0」でないと判定された場合は、処理1206において通知部313が、データ読出し要求の発行元に要求不受理通知を行う。 FIG. 13 is a diagram illustrating a processing flow of the processor 310 when a data read request is received in the embodiment. The process of FIG. 13 is started by process 1200. In processing 1201, the table management unit 311 accesses the logical address management table 331 stored in the memory 330. In processing 1202, the table management unit 311 determines whether or not the value of L-Error described in the logical address management table 331 is “0”. When it is determined in process 1202 that the value of L-Error is not “0”, in process 1206, the notification unit 313 issues a request rejection notification to the issuer of the data read request.
 処理1202においてL-Errorの値が「0」であると判定された場合は、処理1203においてテーブル管理部311が、論理アドレス管理テーブル331に基づき、読出し要求に含まれる論理アドレスに対応する物理アドレスを抽出する。処理1204においてデータ読出し部315が、対応する物理アドレスからデータを読み出す。処理1205においてデータ送信部319が、読出したデータを読出し要求の発行元に送信して処理1207により終了させる。 If it is determined in process 1202 that the value of L-Error is “0”, the table management unit 311 in process 1203 uses the physical address corresponding to the logical address included in the read request based on the logical address management table 331. To extract. In processing 1204, the data reading unit 315 reads data from the corresponding physical address. In process 1205, the data transmission unit 319 transmits the read data to the issuer of the read request, and ends the process 1207.
 このように本実施例では、第1演算処理ノード100から受けた書込み要求の処理において、書込みが正常に行われなかった場合に、書込みエラーフラグであるL-Error値の「1」を、論理アドレスに対応付けて格納しておく。これにより、同一論理アドレスに対して読出し要求がなされた場合に、その論理アドレスで特定されるデータにエラーが存在することをメモリコントローラ300が認識できる。またメモリコントローラ300が、読出し要求の発行元に対して誤ったデータを読み出して送信することなく、データに誤りがある旨の通知を行うことにより、情報処理装置1の誤動作を抑制することができる。 As described above, in this embodiment, when the writing is not normally performed in the processing of the write request received from the first arithmetic processing node 100, the L-Error value “1” that is the write error flag is set to the logical value. Stored in association with the address. As a result, when a read request is made for the same logical address, the memory controller 300 can recognize that an error exists in the data specified by the logical address. In addition, the memory controller 300 notifies the fact that there is an error in the data without causing the read request issuer to read and transmit the incorrect data, thereby suppressing malfunction of the information processing apparatus 1. .
 ここで、図12の処理1115に示すように、L-Errorの値が「1」の場合にはデータ書込み要求に対して要求不受理通知を通知し、データ書込みを行わないとすることの技術的意義を説明する。例えば第1演算処理ノード100がメモリコントローラ300に対してデータの書込みを要求し、そのデータ書込みが失敗した場合を想定する。この場合、メモリコントローラ300は第1演算処理ノード100に書込みエラー通知を送信する。書込みエラー通知を受けた第1演算処理ノード100は種々の対応を取り得る。例えば回復処理として同じデータを書込むよう、メモリコントローラ300に再度要求する場合がある。ここで、この再度の要求がなされる前に、第2演算処理ノード200から同一論理アドレスを指定してデータの書込み要求、つまりデータ更新の要求がなされたとする。そして、第2演算処理ノード200からの書込み要求をメモリコントローラ300が受けてデータを書き込み、書込みに成功したとする。この場合、第2演算処理ノード200からの書込み要求によってフラッシュメモリ400内のデータは正しく更新されたことになる。しかしその後に、第1演算処理ノード100の再度の要求に応じて書込みがなされると、古いデータに書き戻されてしまう。このような不具合を防止するため、本実施例ではメモリコントローラ300は、受信した要求が読出し要求である場合だけでなく書込み要求である場合も、要求に応じることなく要求不受理通知を要求発行元へ通知する。 Here, as shown in processing 1115 of FIG. 12, when the value of L-Error is “1”, a request rejection notification is notified in response to a data write request, and data writing is not performed. Explain the significance. For example, it is assumed that the first arithmetic processing node 100 requests the memory controller 300 to write data and the data writing fails. In this case, the memory controller 300 transmits a write error notification to the first arithmetic processing node 100. Upon receiving the write error notification, the first arithmetic processing node 100 can take various measures. For example, the memory controller 300 may be requested again to write the same data as the recovery process. Here, it is assumed that a data write request, that is, a data update request is made by designating the same logical address from the second arithmetic processing node 200 before this request is made again. It is assumed that the memory controller 300 receives a write request from the second arithmetic processing node 200, writes data, and succeeds in writing. In this case, the data in the flash memory 400 is correctly updated by a write request from the second arithmetic processing node 200. However, after that, when data is written in response to a request from the first arithmetic processing node 100 again, the old data is written back. In order to prevent such a problem, in the present embodiment, the memory controller 300 sends a request non-acceptance notification without responding to the request not only when the received request is a read request but also when it is a write request. To notify.
 <第2実施例>
 第2実施例は、第1実施例の内容を前提とし、更に第1演算処理ノード100による書込みの再要求がなされた場合の処理を付加するものである。
<Second embodiment>
The second embodiment is based on the contents of the first embodiment, and further adds processing when a re-request for writing is made by the first arithmetic processing node 100.
 メモリコントローラ300から書込みエラー通知を受けた第1演算処理ノード100は、エラー状態の回復処理として、同一データをメモリ400に書込むための書込み再要求を行い得る。具体的には、図5に示した回復処理部113が、要求発行部111に書込み要求を再度発行するよう指示する。要求発行部111は、図6に示した所定の記述フォーマットに沿った書込み再要求をメモリコントローラ300に向けて発行する。この書込み再要求に対するメモリコントローラ300の処理を、図14乃至図16を用いて説明する。 The first arithmetic processing node 100 that has received the write error notification from the memory controller 300 can perform a rewrite request for writing the same data into the memory 400 as error state recovery processing. Specifically, the recovery processing unit 113 illustrated in FIG. 5 instructs the request issuing unit 111 to issue a write request again. The request issuing unit 111 issues a write rerequest along the predetermined description format shown in FIG. Processing of the memory controller 300 in response to this write re-request will be described with reference to FIGS.
 図14は、第2実施例における論理アドレス管理テーブルの例を示す図である。図3(A)にて示した論理アドレス管理テーブルの内容に加えて要求発行元IDが記録される。要求発行元IDとは、メモリコントローラ300が直近に受け付けた書込み要求の発行元を特定するIDである。この要求発行元IDは、図6に示すように、演算処理ノードから送られる書込み要求の中に情報として含まれる。先の書込み要求を受信したメモリコントローラ300は、書込み要求に含まれる要求発行元IDと論理アドレスとを関連付けて、論理アドレス管理テーブル331に格納しておく。 FIG. 14 is a diagram showing an example of a logical address management table in the second embodiment. A request issuer ID is recorded in addition to the contents of the logical address management table shown in FIG. The request issuer ID is an ID that identifies the issuer of the write request that the memory controller 300 has received most recently. As shown in FIG. 6, this request issuer ID is included as information in the write request sent from the processing node. The memory controller 300 that has received the previous write request stores the request issuer ID included in the write request and the logical address in the logical address management table 331 in association with each other.
 図15は、第2実施例における第1演算処理ノード100、第2演算処理ノード200と、メモリコントローラ300と、フラッシュメモリ400との間の処理の流れの別の例を示す図である。図10及び図11と同じ処理については同じ参照符号を付し、説明を省略する。 FIG. 15 is a diagram illustrating another example of the flow of processing among the first arithmetic processing node 100, the second arithmetic processing node 200, the memory controller 300, and the flash memory 400 in the second embodiment. The same processes as those in FIGS. 10 and 11 are denoted by the same reference numerals, and description thereof is omitted.
 処理702において第1演算処理ノード100は、書込みエラー通知をメモリコントローラ300から受信する。処理801において第1演算処理ノード100は、書込み再要求を発行する。また処理802において第1演算処理ノード100は、書込みデータをメモリコントローラ300に送信する。処理803においてNIC350は、書込み再要求をプロセッサ310に転送する。また処理804においてNIC350は、書込みデータをメモリ330に転送して格納する。処理805においてNIC350は、書込み要求の発行元である第1処理ノード100に、要求受領通知を行う。一方プロセッサ310は、書込み再要求の発行元IDと、先に行われた書込み要求の発行元IDとが同一であることを確認し、書込み再要求に対する処理を行う。具体的にはプロセッサ310は、処理806及び処理807におけるフラッシュメモリ400からのデータの読出し、処理808及び処理809におけるフラッシュメモリ400へのデータの書込み、処理810におけるフラッシュメモリ400への完了確認、処理811におけるフラッシュメモリ400からの正常終了通知の受領を行う。尚、書込みの再要求に対する書込みを行っても正常に書込みが行えない場合は、処理811においてメモリコントローラ300は、正常終了通知に代えて異常終了通知を受領する。 In process 702, the first arithmetic processing node 100 receives a write error notification from the memory controller 300. In process 801, the first arithmetic processing node 100 issues a write re-request. In process 802, the first arithmetic processing node 100 transmits write data to the memory controller 300. In process 803, the NIC 350 transfers the write rerequest to the processor 310. In step 804, the NIC 350 transfers the write data to the memory 330 and stores it. In process 805, the NIC 350 sends a request receipt notification to the first processing node 100 that is the issuer of the write request. On the other hand, the processor 310 confirms that the issuer ID of the write rerequest is the same as the issuer ID of the previously written request, and performs processing for the write rerequest. Specifically, the processor 310 reads data from the flash memory 400 in processing 806 and processing 807, writes data to the flash memory 400 in processing 808 and processing 809, and confirms completion of processing in the flash memory 400 in processing 810. In step 811, a normal end notification is received from the flash memory 400. Note that if the writing cannot be performed normally even if writing is performed in response to the re-request for writing, the memory controller 300 receives an abnormal end notification in step 811 instead of the normal end notification.
 第1実施例においては、書込み要求を受けたメモリコントローラ300は、L‐Error値が「1」である場合、書込み要求に応えることなく要求受理通知を、書込み要求の発行元へ通知する。そのため、書込みエラー通知を受けた第1演算処理ノード100が、回復処理として書込みの再要求を行っても、メモリコントローラ300は再要求を受け付けず、再書込みの処理が行われない。これに対して第2実施例ではメモリコントローラ300は、書込み要求があった場合に、要求発行元IDを論理アドレス管理テーブル331に格納しておく。そしてその後に書込み要求を受けたメモリコントローラ300は、L‐Error値が「1」であっても、論理アドレス管理テーブル331に格納された発行元IDと、書込み要求の発行元IDが一致する場合には、例外的に書込み要求を受け付ける。これにより、第1演算処理ノード100は、回復処理としての再度の書込みを行うことができる。 In the first embodiment, when the L-Error value is “1”, the memory controller 300 that has received the write request notifies a request acceptance notice to the issuer of the write request without responding to the write request. Therefore, even if the first arithmetic processing node 100 that has received the write error notification makes a re-request for writing as a recovery process, the memory controller 300 does not accept the re-request and the re-write process is not performed. On the other hand, in the second embodiment, the memory controller 300 stores the request issuer ID in the logical address management table 331 when there is a write request. After that, the memory controller 300 that has received the write request, even if the L-Error value is “1”, the issuer ID stored in the logical address management table 331 matches the issuer ID of the write request. Exceptionally accepts write requests. Thereby, the first arithmetic processing node 100 can perform rewriting as the recovery processing.
 図16は、第2実施例において、データ書込み要求を受けた際のプロセッサ310の処理フローを示す図である。図12に示す処理内容と同一ものについては同一の参照番号を付し、説明を適宜省略する。 FIG. 16 is a diagram showing a processing flow of the processor 310 when a data write request is received in the second embodiment. The same processing contents as those shown in FIG. 12 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.
 処理1103において、テーブル管理部311がL‐Errorの値が「0」でないと判定した場合は、処理1301に進む。処理1301においてテーブル管理部311が、書込み要求に含まれる要求発行元IDと論理アドレス管理テーブル331に格納された要求発行元IDとが一致するか否かを判定する。処理1301において両要求発行元IDが一致すると判定された場合は、処理1104へ進み、書込み処理が行われる。処理1301において両要求発行元IDが一致しないと判定された場合は、処理1115において通知部313が、書込み要求の発行元へ要求不受理通知を発行する。 In processing 1103, if the table management unit 311 determines that the value of L-Error is not “0”, the processing proceeds to processing 1301. In processing 1301, the table management unit 311 determines whether the request issuer ID included in the write request matches the request issuer ID stored in the logical address management table 331. If it is determined in process 1301 that both request issuer IDs match, the process proceeds to process 1104, where write processing is performed. If it is determined in process 1301 that the two request issuer IDs do not match, the notification unit 313 issues a request rejection notice to the issuer of the write request in process 1115.
 <第3実施例>
 第3実施例は、第2実施例と同様に第1実施例の内容を前提とし、第1演算処理ノード100による再書込み処理を含むものである。第2実施例では、メモリコントローラ300が受信した要求が、書込みエラー通知を受けた演算処理ノードによる書込み再要求であることを識別するために要求発行元IDを利用した。第3実施例では、メモリコントローラ300が受信した書込み要求が、書込みエラー通知を受けた演算処理ノードによる書込み再要求であることを識別するためにリクエストIDを利用する。
<Third embodiment>
Similar to the second embodiment, the third embodiment is based on the contents of the first embodiment and includes a rewrite process by the first arithmetic processing node 100. In the second embodiment, the request issuer ID is used to identify that the request received by the memory controller 300 is a write re-request by the processing node that has received the write error notification. In the third embodiment, the request ID is used to identify that the write request received by the memory controller 300 is a write re-request by the processing node that has received the write error notification.
 図17は、第3実施例における論理アドレス管理テーブルの例を示す。図3(A)にて示した論理アドレス管理テーブルの内容に加えてリクエストIDが記録される。リクエストIDとは、メモリコントローラ300が受け付けた直近の書込み要求の内容の同一性を示すIDである。このリクエストIDは、図6に示すように、演算処理ノードから送られる書込み要求の中に情報として含まれる。先の書込み要求を受信したメモリコントローラ300は、書込み要求に含まれるリクエストIDと論理アドレスとを関連付けて論理アドレス管理テーブルに格納しておく。第1演算処理ノード100が回復処理のための書込み要求を再度行う場合、図5に示した回復処理部114が、前回の書込み要求に付したリクエストIDと同一のリクエストIDを付した書込み要求の再発行を、要求発行部111に指示する。要求発行部111は書込み再要求をメモリコントローラに対して送信する。書込み再要求を受けたメモリコントローラ300は、論理アドレス管理テーブル331を確認する。そして、L-Errorの値が「1」であっても、書込み再要求に付されたリクエストIDが論理アドレス管理テーブル331に格納されているリクエストIDと一致していれば、メモリコントローラ300は書込み要求を受け付ける。これにより、第1演算処理ノード100は、回復処理としての再度の書込みを行うことが可能となる。 FIG. 17 shows an example of a logical address management table in the third embodiment. A request ID is recorded in addition to the contents of the logical address management table shown in FIG. The request ID is an ID indicating the identity of the content of the latest write request received by the memory controller 300. As shown in FIG. 6, this request ID is included as information in the write request sent from the arithmetic processing node. The memory controller 300 that has received the previous write request stores the request ID and logical address included in the write request in association with each other in the logical address management table. When the first arithmetic processing node 100 makes a write request for the recovery process again, the recovery processing unit 114 shown in FIG. 5 receives the write request with the same request ID as the request ID attached to the previous write request. The reissue is instructed to the request issuing unit 111. The request issuing unit 111 transmits a write rerequest to the memory controller. The memory controller 300 that has received the write re-request confirms the logical address management table 331. Even if the value of L-Error is “1”, if the request ID attached to the write re-request matches the request ID stored in the logical address management table 331, the memory controller 300 writes Accept the request. Thereby, the first arithmetic processing node 100 can perform rewriting as the recovery processing.
 図18は、第3実施例におけるプロセッサ310の処理フローを示す図である。図12及び図16に示すプロセッサ310の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。 FIG. 18 is a diagram showing a processing flow of the processor 310 in the third embodiment. Components having the same processing contents as the processing flow of the processor 310 shown in FIGS. 12 and 16 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.
 処理1103においてテーブル管理部311が、L‐Errorの値が「0」でないと判定した場合は、処理1401に進む。処理1401においてテーブル管理部311が、書込み要求に含まれるリクエストIDと論理アドレス管理テーブル331に格納されたリクエストIDとが一致するか否かを判定する。処理1401において両リクエストIDが一致すると判定された場合は、処理1104へ進み、書込み処理が行われる。処理1401において両リクエストIDが一致しないと判定された場合は、処理1115において通知部313が、書込み要求の発行元へ要求不受理通知を発行する。 If the table management unit 311 determines in the processing 1103 that the value of L-Error is not “0”, the processing proceeds to a processing 1401. In process 1401, the table management unit 311 determines whether or not the request ID included in the write request matches the request ID stored in the logical address management table 331. If it is determined in process 1401 that both request IDs match, the process proceeds to process 1104, and a write process is performed. If it is determined in process 1401 that the request IDs do not match, the notification unit 313 issues a request non-acceptance notification to the issuer of the write request in process 1115.
 <第4実施例>
 第4実施例は、第2実施例又は第3実施例の内容を前提とし、第1演算処理ノード100による再度の書込みによってデータがメモリ400に正常に書き込まれた場合の、メモリコントローラ300の処理について開示する。
<Fourth embodiment>
The fourth embodiment is based on the contents of the second embodiment or the third embodiment, and the processing of the memory controller 300 when data is normally written in the memory 400 by rewriting by the first processing node 100. It discloses about.
 例えば第2実施例では、処理704において要求不受理通知を受けた第2演算処理ノード200は、所望のデータを受け取ることができず処理が停滞することになる。また第2演算処理ノード200は、第1演算処理ノード100の書込みの再要求によって書込みエラー状態が解消されたか否かを認識する手段がない。よってどのタイミングで再度の読出し要求を試みるべきかを認識することができない。そこで第4実施例では、第1演算処理ノード100の書込み再要求に対する書込みが正常に終了した場合は、第2演算処理ノード200に対して正常にデータが書込まれた旨の通知であるリカバリ完了通知を行うこととする。この通知により第2演算処理ノード200は、要求不受理通知を受けた読出し要求に対して、読出し再要求を行うことが可能となったことを認識でき、所望のデータをメモリ400から読み出すことが可能となる。 For example, in the second embodiment, the second operation processing node 200 that has received the request non-acceptance notification in the process 704 cannot receive the desired data, and the process stagnates. Further, the second arithmetic processing node 200 does not have a means for recognizing whether or not the write error state has been eliminated by the re-request for writing by the first arithmetic processing node 100. Therefore, it is not possible to recognize when the read request should be attempted again. Therefore, in the fourth embodiment, when the writing to the write re-request of the first arithmetic processing node 100 is normally completed, the recovery is a notification that the data has been normally written to the second arithmetic processing node 200. Notification of completion will be sent. By this notification, the second arithmetic processing node 200 can recognize that it is possible to make a read re-request for the read request that has received the request non-acceptance notification, and can read desired data from the memory 400. It becomes possible.
 図19は、第4実施例における論理アドレス管理テーブルの例を示す。図14にて示した論理アドレス管理テーブルの内容に加えて、情報処理装置1に含まれる各演算処理ノードの読出し要求実績が記録される。読出し要求実績とは、特定の論理アドレスのL‐Error値が「1」となっている状態において、各演算処理ノードがその論理アドレスに対する読出し要求を行ったことを記録するものである。言い換えれば、論理アドレス管理テーブル331に読出し要求実績が記録されている演算処理ノードは、過去において読出し要求に対する要求不受理通知を受けていることを意味する。図19においては、第2演算処理ノード200が、論理アドレスL#0001に対して読出し要求を行ったことが記録されている。 FIG. 19 shows an example of a logical address management table in the fourth embodiment. In addition to the contents of the logical address management table shown in FIG. 14, the read request performance of each arithmetic processing node included in the information processing apparatus 1 is recorded. The read request record records that each arithmetic processing node makes a read request for the logical address in a state where the L-Error value of the specific logical address is “1”. In other words, it means that the arithmetic processing node whose read request record is recorded in the logical address management table 331 has received a request non-acceptance notification for the read request in the past. In FIG. 19, it is recorded that the second arithmetic processing node 200 makes a read request to the logical address L # 0001.
 図20は、第4実施例における第1演算処理ノード100、第2演算処理ノード200と、メモリコントローラ300と、フラッシュメモリ400との間の処理の流れの別の例を示す図である。図10、図11及び図15と同じ処理については同じ参照符号を付し、説明を適宜省略する。 FIG. 20 is a diagram illustrating another example of the processing flow among the first arithmetic processing node 100, the second arithmetic processing node 200, the memory controller 300, and the flash memory 400 in the fourth embodiment. The same processes as those in FIGS. 10, 11 and 15 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.
 処理803において第1演算処理ノード100からの書込み再要求を受けたプロセッサ310は、処理806から処理809においてフラッシュメモリ400に対して書込み処理を行う。更にプロセッサ310は、処理810においてフラッシュメモリ400に対し完了確認を行い、処理811においてフラッシュメモリ400から正常終了の通知を受ける。その後、プロセッサ310は処理901及び処理902において、フラッシュメモリ400のデータが正常なものとなったことを示すリカバリ完了通知を、NIC350を介して第2演算処理ノード200に通知する。 In step 803, the processor 310 that has received a re-write request from the first arithmetic processing node 100 performs a write process on the flash memory 400 in steps 806 to 809. Further, the processor 310 confirms completion of the flash memory 400 in process 810 and receives a normal end notification from the flash memory 400 in process 811. Thereafter, the processor 310 notifies the second arithmetic processing node 200 via the NIC 350 of a recovery completion notification indicating that the data in the flash memory 400 has become normal in processing 901 and processing 902.
 図21は、第4実施例において読出し要求を受けたメモリコントローラ300のプロセッサ310の処理フローを示す図である。図13に示すプロセッサ310の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。 FIG. 21 is a diagram showing a processing flow of the processor 310 of the memory controller 300 that has received a read request in the fourth embodiment. Components having the same processing contents as the processing flow of the processor 310 shown in FIG. 13 are given the same reference numerals, and description thereof will be omitted as appropriate.
 処理1202においてテーブル管理部311が、L-Errorの値が「0」であると判定した場合は、処理1203へ進み、読出し処理が行われる。処理1202においてテーブル管理部311が、L‐Errorの値が「0」でないと判定した場合は、処理1501へ進む。処理1501においてテーブル管理部311が、論理アドレス管理テーブルの読出し要求実績に「1」を記録する。そして処理1206において通知部313はデータ読出し要求の発行元に要求不受理通知を行う。 If the table management unit 311 determines in the processing 1202 that the value of the L-Error is “0”, the processing proceeds to a processing 1203 and a reading process is performed. If the table management unit 311 determines in step 1202 that the value of L-Error is not “0”, the process proceeds to step 1501. In processing 1501, the table management unit 311 records “1” in the read request record of the logical address management table. In step 1206, the notification unit 313 issues a request rejection notification to the data read request issuer.
 図22は、第4実施例において書込み要求を受けたプロセッサ310の処理フローを示す図である。図12、図16及び図18に示すプロセッサ310の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。 FIG. 22 is a diagram showing a processing flow of the processor 310 that has received a write request in the fourth embodiment. Components having the same processing contents as the processing flow of the processor 310 shown in FIGS. 12, 16, and 18 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.
 処理1111においてテーブル管理部311が、論理アドレス管理テーブル331のL-Error値に「0」を記録した後、処理1601においてテーブル管理部311が論理アドレス管理テーブル311の読出し要求実績の有無を判定する。処理1601において読出し要求の実績がないと判定された場合は、処理1116へ進む。処理1601において読出し要求の実績があると判定された場合は、処理1602において通知部313が、読出し要求を行った演算処理ノードに対してリカバリ処理完了通知を通知する。この通知により、例えば図20において、読出し要求に対して要求不受理通知を受けた第2演算処理ノード200は、データが正しくフラッシュメモリ400に格納されたことを認識することができる。第2演算処理ノード200は、必要に応じて読出しの再要求を行う等の処理を行うことができる。 In step 1111, the table management unit 311 records “0” in the L-Error value of the logical address management table 331, and then in step 1601, the table management unit 311 determines whether there is a read request record in the logical address management table 311. . If it is determined in process 1601 that there is no record of the read request, the process proceeds to process 1116. When it is determined in the process 1601 that there is a record of the read request, the notification unit 313 notifies the recovery processing completion notification to the arithmetic processing node that has made the read request in the process 1602. With this notification, for example, in FIG. 20, the second processing node 200 that has received the request rejection notification for the read request can recognize that the data has been correctly stored in the flash memory 400. The second arithmetic processing node 200 can perform processing such as re-requesting reading as necessary.
 尚、図22の処理1301では、テーブル管理部311が要求発行元IDの一致を判定しているが、変形例として、図18の処理1401のようにテーブル管理部311がリクエストIDの一致を判定してもよい。 In the processing 1301 of FIG. 22, the table management unit 311 determines whether the request issuer ID matches, but as a modification, the table management unit 311 determines whether the request ID matches as in the processing 1401 of FIG. May be.
 以上、本明細に開示した技術によれば、メモリへの書込みが正常に行われなかったことを示すフラグを論理アドレスに対応付けて設けることで、特定の論理アドレスが付されたデータに誤りがあることを記録として残すことができる。これにより、演算処理ノードが誤データを読出すことを防止できる。また読出された誤データに基づく情報処理が行われることを抑制することができる。また論理アドレス管理テーブルに要求発行元IDもしくはリクエストIDを格納することにより、書込みエラー通知を受けた演算処理ノードが書込み再要求を行うことが可能となる。また、読出し要求実績の有無を論理アドレス管理テーブルに格納することにより、読出し要求が受理されなかった演算処理ノードに対して、書込みが正常に行われたことの通知を行うことが可能となる。 As described above, according to the technology disclosed in this specification, by providing a flag indicating that writing to the memory is not normally performed in association with a logical address, there is an error in data with a specific logical address. It can be recorded as a record. This can prevent the arithmetic processing node from reading erroneous data. In addition, it is possible to suppress information processing based on the read erroneous data. Further, by storing the request issuer ID or the request ID in the logical address management table, the arithmetic processing node that has received the write error notification can make a write re-request. Further, by storing the presence / absence of the read request record in the logical address management table, it is possible to notify the arithmetic processing node that has not received the read request that the writing has been normally performed.
 尚、本開示において、メモリコントローラ300によって書込み及び読出しが制御されるメモリはフラッシュメモリに限られない。論理アドレスと物理アドレスの対応関係を記述する管理テーブルまたは管理テーブルと同等の内容を有する情報に基づいて、書込み及び読出しの制御がなされるメモリであれば本発明に適用可能である。 In the present disclosure, the memory whose writing and reading are controlled by the memory controller 300 is not limited to the flash memory. A management table that describes the correspondence between logical addresses and physical addresses or a memory that can be controlled for writing and reading based on information having the same contents as the management table is applicable to the present invention.
 1 情報処理装置
 100 第1演算処理ノード
 200 第2演算処理ノード
 300 メモリコントローラ
 400 フラッシュメモリ
 500 バス
 110、210、310 プロセッサ
 130、230、330 メモリ
 150、250、350 NIC
 111 要求発行部
 112 送受信部
 113 回復処理部
 114 メモリ制御部
 311 テーブル管理部
 312 ロック制御部
 313 通知部
 314 メモリ制御部
 315 データ読出し部
 316 データ書込み部
 317 確認部
 318 再書込み部
 319 データ送信部
 331 論理アドレス管理テーブル
 332 物理アドレス管理テーブル
 410 メモリセルアレイ
 420 書込み読出し回路
 430 書込みバッファ
 440 コンパレータ
 450 ステータスレジスタ
 460 エラー訂正回路
 
DESCRIPTION OF SYMBOLS 1 Information processing apparatus 100 1st arithmetic processing node 200 2nd arithmetic processing node 300 Memory controller 400 Flash memory 500 Bus 110, 210, 310 Processor 130, 230, 330 Memory 150, 250, 350 NIC
DESCRIPTION OF SYMBOLS 111 Request issuing part 112 Transmission / reception part 113 Recovery processing part 114 Memory control part 311 Table management part 312 Lock control part 313 Notification part 314 Memory control part 315 Data reading part 316 Data writing part 317 Confirmation part 318 Rewriting part 319 Data transmission part 331 Logical address management table 332 Physical address management table 410 Memory cell array 420 Write / read circuit 430 Write buffer 440 Comparator 450 Status register 460 Error correction circuit

Claims (20)

  1.  第1演算処理ノードが、第1論理アドレスが付されデータをメモリに書込むよう、メモリコントローラに要求する工程と、
     前記メモリコントローラが、前記メモリの第1物理アドレスに対して前記データの書込みを行う工程と、
     前記メモリコントローラが、前記データの書込みが正常に行われなかったこと示す第1フラグを生成し、前記第1論理アドレスに対応付けて記憶する工程と
     を有することを特徴とする情報処理方法。
    A first computing node requesting a memory controller to write data to a memory with a first logical address; and
    The memory controller writing the data to the first physical address of the memory;
    The memory controller includes a step of generating a first flag indicating that the data has not been written normally and storing the first flag in association with the first logical address.
  2.  前記メモリコントローラが、前記第1論理アドレスを指定した前記データの読出し要求を第2演算処理ノードから受ける工程と、
     前記メモリコントローラが、第1論理アドレスに対応付けられた前記第1フラグを認識する工程と、
     前記メモリコントローラが、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第1通知を前記第2演算処理ノードに通知する工程と、
     を有することを特徴とする請求項1に記載の情報処理方法。
    The memory controller receiving a request to read the data designating the first logical address from a second processing node;
    The memory controller recognizing the first flag associated with a first logical address;
    The memory controller not reading the data and notifying the second operation processing node of a first notification indicating that the data writing has not been normally performed;
    The information processing method according to claim 1, further comprising:
  3.  前記メモリコントローラが、前記データの書込みが正常に行われなかったことを示す第2通知を、前記第1演算処理ノードに通知する工程と、
     前記第2演算処理ノードに前記第1通知がなされた後、前記第1演算処理ノードが前記メモリに対して、前記データの再書込みを行う工程と、
     前記再書き込みによって前記データが前記メモリに正常に書込まれた場合、前記メモリコントローラが前記第1フラグを消去する工程と、
     前記メモリコントローラが、前記データが正常に書込まれたことを示す第3通知を前記第2演算処理ノードに通知する工程と、
     を有することを特徴とする請求項2に記載の情報処理方法。
    The memory controller notifying the first arithmetic processing node of a second notification indicating that the data writing has not been normally performed;
    After the first notification is made to the second operation processing node, the first operation processing node rewrites the data to the memory;
    The memory controller erasing the first flag when the data is normally written to the memory by the rewriting; and
    The memory controller notifying the second operation processing node of a third notification indicating that the data has been normally written;
    The information processing method according to claim 2, further comprising:
  4.  前記メモリはフラッシュメモリであることを特徴とする請求項1乃至3何れか一項に記載の情報処理方法。 The information processing method according to any one of claims 1 to 3, wherein the memory is a flash memory.
  5.  前記メモリコントローラは、前記データの書込みが正常に行われなかった場合、前記第1物理アドレスにデバイス不良があることを示す第2フラグを生成することを特徴とする請求項1乃至4何れか一項に記載の情報処理方法。 The said memory controller produces | generates the 2nd flag which shows that there is a device defect in the said 1st physical address, when the writing of the said data is not performed normally. Information processing method according to item.
  6.  前記データの書込みが正常に行われなかった場合は、前記メモリの第2物理アドレスに対して前記データの書込みを行い、前記第2物理アドレスへの書込みが正常に行われた場合は、前記第1論理アドレスが前記第2物理アドレスに対応することを示す論理アドレス管理テーブルを作成することを特徴とする請求項1乃至5何れか一項に記載の情報処理方法。 When the data writing is not normally performed, the data is written to the second physical address of the memory, and when the data is normally written to the second physical address, the second physical address is written. 6. The information processing method according to claim 1, wherein a logical address management table indicating that one logical address corresponds to the second physical address is created.
  7.  メモリと、
     第1論理アドレスが付されたデータの前記メモリへの書込み要求を行う第1演算処理ノードと、
     前記書込み要求を受け、前記メモリの第1物理アドレスに対して前記データの書込みを行い、前記データの書込みが正常に行われなかったことを示す第1フラグを生成し、前記第1フラグを前記第1論理アドレスに対応付けて記憶するメモリコントローラと
    を有することを特徴とする情報処理装置。
    Memory,
    A first operation processing node that makes a write request to the memory for data with a first logical address;
    The write request is received, the data is written to the first physical address of the memory, a first flag is generated indicating that the data was not normally written, and the first flag is An information processing apparatus comprising: a memory controller that stores the first logical address in association with the first logical address.
  8.  前記メモリコントローラは、前記第1論理アドレスを指定した読出し要求を第2演算処理ノードから受け、第1論理アドレスに対応付けられた前記第1フラグを認識し、前記読出し要求に対する読出し処理を行わずに、前記データの書込みが正常に行われなかったことを示す第1通知を前記第2演算処理ノードに通知することを特徴とする請求項7に記載の情報処理装置。 The memory controller receives a read request designating the first logical address from a second arithmetic processing node, recognizes the first flag associated with the first logical address, and does not perform a read process for the read request. The information processing apparatus according to claim 7, further comprising: notifying the second arithmetic processing node of a first notification indicating that the data writing has not been normally performed.
  9.  前記メモリコントローラは、前記データの書込みが正常に行われなかったことを示す第2通知を、前記第1演算処理ノードに通知し、
     前記第1演算処理ノードによる前記データの再度の書込みによって前記データが正常に前記メモリに書込まれた場合、前記メモリコントローラは前記第1フラグを消去し、前記第1データが正常に書込まれたことを示す第3通知を前記第2演算処理ノードに通知することを特徴とする請求項8に記載の情報処理装置。
    The memory controller notifies the first arithmetic processing node of a second notification indicating that the writing of the data has not been normally performed;
    When the data is normally written to the memory by rewriting the data by the first arithmetic processing node, the memory controller erases the first flag, and the first data is normally written. The information processing apparatus according to claim 8, wherein a third notification indicating that the second arithmetic processing node is notified.
  10.  前記メモリはフラッシュメモリであることを特徴とする請求項7乃至9何れか一項に記載の情報処理装置。 The information processing apparatus according to any one of claims 7 to 9, wherein the memory is a flash memory.
  11.  前記メモリコントローラは、前記第1物理アドレスにデバイス不良があることを示す第2フラグを生成することを特徴とする請求項7乃至10何れか一項に記載の情報処理装置。 11. The information processing apparatus according to claim 7, wherein the memory controller generates a second flag indicating that there is a device failure in the first physical address.
  12.  前記データの前記第1物理アドレスへの書き込みが失敗した後に、前記メモリコントローラは、前記第1データを前記メモリの第2物理アドレスに書込みを行い、前記第2物理アドレスへの書込みが正常に行われた場合は、前記第1論理アドレスが前記第2物理アドレスに対応することを示す論理アドレス管理テーブルを作成することを特徴とする請求項7乃至11何れか一項に記載の情報処理装置。 After the writing of the data to the first physical address fails, the memory controller writes the first data to the second physical address of the memory, and the writing to the second physical address is performed normally. The information processing apparatus according to any one of claims 7 to 11, wherein if an error occurs, a logical address management table indicating that the first logical address corresponds to the second physical address is created.
  13.  第1演算処理ノードから受ける第1メモリへのデータ書込み要求を処理するメモリコントローラであって、
     前記メモリコントローラは、
     プロセッサと、第2メモリとを有し、
     前記プロセッサは、第1論理アドレスが付されたデータを前記第1メモリに書込むよう、前記第1演算処理ノードから要求を受け、前記第1メモリの第1物理アドレスに対して前記データの書込みを行い、前記データの書込みが正常に行われなかったことを示す第1フラグを、前記第1論理アドレスに対応付けて前記第2メモリへ格納することを特徴とするメモリコントローラ。
    A memory controller for processing a data write request to a first memory received from a first arithmetic processing node,
    The memory controller is
    A processor and a second memory;
    The processor receives a request from the first arithmetic processing node to write data with a first logical address to the first memory, and writes the data to the first physical address of the first memory. And a first flag indicating that the data writing has not been normally performed is stored in the second memory in association with the first logical address.
  14.  前記プロセッサは、第2演算処理ノードから、前記第1論理アドレスを指定した読出し要求を受けた場合、前記第1フラグを前記第2メモリから読出し、前記読出し要求に対する読出し処理を行わずに、前記データの書込みが正常に行われなかったことを示す第1通知を前記第2演算処理ノードに通知することを特徴とする請求項13に記載のメモリコントローラ。 When the processor receives a read request designating the first logical address from a second arithmetic processing node, the processor reads the first flag from the second memory, and performs the read process for the read request without performing the read process. 14. The memory controller according to claim 13, wherein a first notification indicating that data has not been normally written is notified to the second arithmetic processing node.
  15.  前記プロセッサは、前記データの書込みが正常に行われなかったことを示す第2通知を、前記第1演算処理ノードに通知し、前記第1演算処理ノードによる前記データの再度の書込みによって前記データが正常に前記第1メモリに書込まれた場合、前記プロセッサは前記第1フラグを消去し、前記データが正常に書込まれたことを示す第3通知を前記第2演算処理ノードに通知することを特徴とする請求項14に記載のメモリコントローラ。 The processor notifies the first operation processing node of a second notification indicating that the data writing has not been performed normally, and the data is rewritten by the first operation processing node. When the data is normally written to the first memory, the processor erases the first flag and notifies the second arithmetic processing node of a third notification indicating that the data has been normally written. The memory controller according to claim 14.
  16.  前記第1メモリはフラッシュメモリであることを特徴とする請求項13乃至15何れか一項に記載のメモリコントローラ。 16. The memory controller according to claim 13, wherein the first memory is a flash memory.
  17.  前記プロセッサは、前記第1物理アドレスにデバイス不良があることを示す第2フラグを生成することを特徴とする請求項13乃至16何れか一項に記載のメモリコントローラ。 The memory controller according to any one of claims 13 to 16, wherein the processor generates a second flag indicating that the first physical address has a device failure.
  18.  前記データの前記第1物理アドレスへの書き込みが失敗した後に、前記プロセッサは、前記第1メモリの第2物理アドレスに対して前記データの書込みを行い、前記第2物理アドレスへの書込みが正常に行われた場合は、前記第1論理アドレスが前記第2物理アドレスに対応することを示す変換テーブルを作成することを特徴とする請求項13乃至17何れか一項に記載のメモリコントロ-ラ。 After the writing of the data to the first physical address fails, the processor writes the data to the second physical address of the first memory, and the writing to the second physical address is normally performed. The memory controller according to any one of claims 13 to 17, wherein if it is performed, a conversion table is generated to indicate that the first logical address corresponds to the second physical address.
  19.  第1論理アドレスが付されたデータ書込み要求を第1演算処理ノードから受けるメモリコントローラによって書込み制御がなされるメモリであって、
     前記メモリは、
     記憶素子と、
     前記記憶素子に正常に前記データが書込まれなかったことを記憶するステータスレジスタと
     を有し、前記ステータスレジスタは、前記メモリコントローラに、前記データが正常に書込まれなかったことを示す第1フラグを前記第1論理アドレスに対応付けて格納させる
    ことを特徴とするメモリ。
    A memory in which write control is performed by a memory controller that receives a data write request with a first logical address from a first arithmetic processing node,
    The memory is
    A storage element;
    A status register for storing that the data has not been normally written to the storage element, and the status register is a first register indicating that the data has not been normally written to the memory controller. A memory that stores a flag in association with the first logical address.
  20.  前記メモリはフラッシュメモリであることを特徴とする請求項19に記載のメモリ。
     
    The memory of claim 19, wherein the memory is a flash memory.
PCT/JP2013/005598 2013-09-20 2013-09-20 Information processing method, information processing device, memory controller, and memory WO2015040658A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015537435A JP6075456B2 (en) 2013-09-20 2013-09-20 Information processing method, information processing apparatus, memory controller, and memory
PCT/JP2013/005598 WO2015040658A1 (en) 2013-09-20 2013-09-20 Information processing method, information processing device, memory controller, and memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/005598 WO2015040658A1 (en) 2013-09-20 2013-09-20 Information processing method, information processing device, memory controller, and memory

Publications (1)

Publication Number Publication Date
WO2015040658A1 true WO2015040658A1 (en) 2015-03-26

Family

ID=52688347

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/005598 WO2015040658A1 (en) 2013-09-20 2013-09-20 Information processing method, information processing device, memory controller, and memory

Country Status (2)

Country Link
JP (1) JP6075456B2 (en)
WO (1) WO2015040658A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006085342A (en) * 2004-09-15 2006-03-30 Sony Corp Memory controller, memory control method, and program
JP2007148965A (en) * 2005-11-30 2007-06-14 Oki Electric Ind Co Ltd Error block management method and device for flash disk device
JP2009301264A (en) * 2008-06-12 2009-12-24 Mitsubishi Electric Corp Nand flash memory access device, nand flash memory access program and recording medium
JP2011181155A (en) * 2010-03-03 2011-09-15 Toshiba Corp Nonvolatile semiconductor storage device and memory system
US20120144249A1 (en) * 2010-12-03 2012-06-07 International Business Machines Corporation Program Disturb Error Logging and Correction for Flash Memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006085342A (en) * 2004-09-15 2006-03-30 Sony Corp Memory controller, memory control method, and program
JP2007148965A (en) * 2005-11-30 2007-06-14 Oki Electric Ind Co Ltd Error block management method and device for flash disk device
JP2009301264A (en) * 2008-06-12 2009-12-24 Mitsubishi Electric Corp Nand flash memory access device, nand flash memory access program and recording medium
JP2011181155A (en) * 2010-03-03 2011-09-15 Toshiba Corp Nonvolatile semiconductor storage device and memory system
US20120144249A1 (en) * 2010-12-03 2012-06-07 International Business Machines Corporation Program Disturb Error Logging and Correction for Flash Memory

Also Published As

Publication number Publication date
JPWO2015040658A1 (en) 2017-03-02
JP6075456B2 (en) 2017-02-08

Similar Documents

Publication Publication Date Title
US20180275887A1 (en) Data Storage Device and Operating Method of Data Storage Device
JP4037605B2 (en) Nonvolatile memory unit controller, memory system having the controller, and nonvolatile memory unit control method
CN104246727B (en) Data handling system and the method for operating data processing system
CN108431783B (en) Access request processing method and device and computer system
EP3633517B1 (en) Storage device and method of operating storage device
US11733895B2 (en) Control method of flash memory controller and associated flash memory controller and storage device
US11520487B2 (en) Managing write operations during a power loss
US20180157428A1 (en) Data protection of flash storage devices during power loss
WO2023206968A1 (en) Data storage method and system, and computer readable storage medium
US11720249B2 (en) Data storage device and method for rewriting parameters thereof
CN111625477B (en) Processing method and device for read request for accessing erase block
CN107562654B (en) IO command processing method and device
JP6075456B2 (en) Information processing method, information processing apparatus, memory controller, and memory
US20070274302A1 (en) Data Storage Device, Memory Managing Method, and Program
US10872008B2 (en) Data recovery after storage failure in a memory system
CN113051187A (en) Lock-free access to FTL tables of storage device
KR20140101626A (en) Data processing method of solid state drive
JP2015049722A (en) Microcomputer and block control method of non-volatile memory
TWI805449B (en) Method for performing access control of memory device with aid of multi-stage garbage collection management, memory controller of memory device, and memory device
US10754548B2 (en) Data storage device and method for rewriting parameters thereof
JP5708228B2 (en) IC card and IC card refresh method
JP4580724B2 (en) Nonvolatile memory control method
KR20170114991A (en) Method for logging using non-volatile memory
US7996598B2 (en) Memory management module
CN107749307B (en) Rewriting method, device, equipment and storage medium for storage system in failure of writing disk

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13893742

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015537435

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13893742

Country of ref document: EP

Kind code of ref document: A1