JP6075456B2 - Information processing method, information processing apparatus, memory controller, and memory - Google Patents
Information processing method, information processing apparatus, memory controller, and memory Download PDFInfo
- Publication number
- JP6075456B2 JP6075456B2 JP2015537435A JP2015537435A JP6075456B2 JP 6075456 B2 JP6075456 B2 JP 6075456B2 JP 2015537435 A JP2015537435 A JP 2015537435A JP 2015537435 A JP2015537435 A JP 2015537435A JP 6075456 B2 JP6075456 B2 JP 6075456B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- processing node
- request
- logical address
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
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)
Description
本願開示は、情報処理方法、情報処理装置メモリコントローラ及びメモリに関する。 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 writing 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).
メモリへのデータ書込みが失敗した場合、その後演算処理ノードがメモリへ書込んだデータの読出し要求を行うと、メモリに格納されている誤データが読出されることになる。読出された誤データに基づく処理が演算処理ノードにて行われると情報処理装置の誤動作の原因となる。この問題は、情報処理装置が複数の演算処理ノードを有する場合であれば、複数の演算処理ノードのうちの第1演算処理ノードがデータを書込んだ後に、第1演算処理ノード自身がデータを読み出す場合と、第1演算処理ノードとは異なる第2演算処理ノードがデータを読み出す場合のどちらの場合にも生じ得る。 If the data writing to the memory fails, then if the arithmetic processing node makes a read request for the data written to the memory, 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.
先行技術は、あるアドレスへのデータの書込みが失敗した場合に、書込み対象アドレスを変更して再度の書込みを行うことによって、正常な書込みが行われることを期待するものである。しかし先行技術には、別のアドレスへの変更を行っても正常に書込みが行われずに結局はメモリに誤データが書込まれた状態となった場合に、誤データの読出しを防止する手段については何ら開示がなされていない。 In the prior art, when data writing to a certain address fails, it is expected that 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.
本願開示の技術は、メモリへのデータの書込みに失敗した場合でも、誤データの読出し及び誤データに基づく情報処理装置の誤動作を抑制することができる方法を提供することを目的とする。 An object of the technology disclosed in the present application is 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.
開示の情報処理装置は、メモリコントローラが、第1論理アドレスが付されたデータのメモリへの書込み要求を、第1演算処理ノードから受信する工程と、前記メモリコントローラが、前記メモリの第1物理アドレスに対して前記データの書込みを行う工程と、前記データの書込みが正常に行われなかった場合、前記メモリコントローラが、前記データの書込みが正常に行われなかったことを示す第1通知を、前記第1演算処理ノードに通知する工程と、前記メモリコントローラが、前記第1論理アドレスを指定した前記データの読出し要求を第2演算処理ノードから受信する工程と、前記メモリコントローラが、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第2通知を前記第2演算処理ノードに通知する工程と、前記メモリコントローラが、前記メモリに対する前記データの再書込み要求を、前記第1演算処理ノードから受信する工程と、前記再書き込み要求によって前記データが前記メモリに正常に書込まれた場合、前記メモリコントローラが、前記データが正常に書込まれたことを示す第3通知を前記第2演算処理ノードに通知する工程とを有する。
The disclosed information processing apparatus includes a step in which a memory controller receives a request to write data with a first logical address to a memory from a first processing node, and the memory controller has a first physical and line cormorant step to write the data to the address, if the writing of the data is not successful, the memory controller, a first notification that the write of the data is not successful A step of notifying the first arithmetic processing node, a step of receiving the data read request designating the first logical address from the second arithmetic processing node, and a step of notifying the memory controller of the data Without reading the data, a second notification indicating that the data has not been written normally is sent to the second arithmetic processing node. Notifying, the memory controller receiving a rewrite request for the data to the memory from the first processing node, and the data has been successfully written to the memory by the rewrite request The memory controller notifying the second operation processing node of a third notification indicating that the data has been normally written.
メモリへの書込みが正常に行われなかった場合であっても、データに対する読出し要求を行った演算処理ノードが誤データを読出すことを防止でき、その後にデータ書込みが正常に行われた場合には、演算処理ノードに対してデータ書込みが正常に行われたことを通知することができる。 Even when the data is not normally written to the memory, it is possible to prevent the processing node that has made a data read request from reading erroneous data, and when the data is normally written after that. Can notify the arithmetic processing node that data writing has been normally performed .
<第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
第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
図2は、実施例におけるフラッシュメモリ400の、書込み、読出し、消去を行うことができる領域の単位について説明する図である。フラッシュメモリ400は、複数の記憶素子を含むページと呼ばれる単位で、データの書込み及び読出しが行われる。またフラッシュメモリ400は、複数のページを含んでブロックと呼ばれる単位で、データの消去が行われる。図2において、P#0000、P#0001、・・・・P#00MNの各々が1つのページに相当する。また、P#0000〜P#000Nが1つのブロックを構成する。
FIG. 2 is a diagram illustrating a unit of an area where writing, reading, and erasing can be performed in the
フラッシュメモリ400のある特定のページにデータの書込みを行う際、そのページに既にデータが格納されている場合は、格納されているデータに対して新しいデータを上書きすることができない。これは、フラッシュメモリ400の記憶素子が、ゲート電極とチャネル領域との間の電荷保持膜に対して電荷注入又は電荷引抜きを行うことによってデータの書込むという原理に起因するものである。そのため、あるデータを例えばページP#0000に書込もうとする場合は、まずページP#0000にデータが既に格納されているか否かを確認する必要がある。ページP#0000に未だデータが格納されていない場合は、ページP#0000にデータ書込みを行う。ページP#0000に既にデータが格納されている場合は、他の空きページを抽出してデータ書込みを行う。また、ページP#0000に既にデータが格納されている場合であって、既に格納されているデータを新しい書込みデータによって更新する場合は、以下の手順で処理を行う。
When data is written to a specific page of the
まず新たに書込むデータを準備する。そしてページP#0000に格納されているデータを読み出す。次に、読み出されたデータと新たに書込むデータとをマージして更新データを作成する。そして、データが未だ書き込まれていないページを検索する。データが書き込まれていないページとして例えばページP#0001が選定された場合、更新データをページP#0001に書き込む。
First, prepare new data to be written. Then, the data stored in
次に、本願明細書にて用いる論理アドレス及び物理アドレスと、両者の対応関係について説明する。図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
図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 a corresponding physical address. In FIG. 3A, “1” which is the L-Valid value corresponding to the logical
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
論理アドレス管理テーブルとは別に、フラッシュメモリ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
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 or not any data is written in the page of the corresponding physical address. For example, “0” that is a P-Valid value corresponding to the page of the physical
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 page of the corresponding physical address. The device failure of the memory element is, for example, a case where the charge retention capability of the charge retention film of the
ここで、論理アドレス管理テーブルに記述される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 has not been 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 has not been 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
次に、データ書込みを行う際の、論理アドレス管理テーブルと物理アドレス管理テーブルの用い方及びそれぞれのテーブルの内容の更新について説明する。データ書込み要求を受けた時点では、論理アドレス管理テーブルと物理アドレス管理テーブルはそれぞれ図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
第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
第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
第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
まず物理アドレス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
以上のようにして、論理アドレス管理テーブルと物理アドレス管理テーブルを用いたデータの書込み、及び論理アドレス管理テーブルと物理アドレス管理テーブルの内容の書き換え行われる。 As described above, data is written using the logical address management table and the physical address management table, and the contents of the logical address management table and the 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
図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
図7は、実施例におけるメモリコントローラ300の有するメモリ330に含まれる情報を示す図である。メモリ330には、論理アドレス管理テーブル331と物理アドレス管理テーブル332が格納される。また、メモリ330はフラッシュメモリ400に書込まれるデータを一時格納するデータバッファとしても用いられる。
FIG. 7 is a diagram illustrating information included in the
図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
図9は、実施例におけるフラッシュメモリ400の回路ブロック図である。フラッシュメモリ400は、記憶素子が配置されたメモリセルアレイ410と、メモリセルアレイ410に含まれる記憶素子に対してデータの書込み及びデータの読出しを行う書込み読出し回路420と、書込みデータを格納する書込みバッファ430と、コンパレータ440と、ステータスレジスタ450とを有する。またフラッシュメモリ400は、必須ではないがエラー訂正回路460を有してもよい。本実施例においてエラー訂正回路を用いる場合、エラー訂正回路はフラッシュメモリ400に搭載してもよく、またメモリコントローラ300に搭載してもよい。
FIG. 9 is a circuit block diagram of the
フラッシュメモリ400にデータの書込みを行う場合は、まず書込みバッファ430に書込みデータを保持させる。そして書込み読出し回路420が、書込みバッファ430内のデータに基づき、メモリセルアレイ410内の記憶素子に書込み処理を行う。その後、記憶素子に書込まれたデータと書込みバッファ430に保持されたデータとをコンパレータ440が比較する。コンパレータ440による比較の結果、両データが一致した場合は、正常に書込みが行われたことを示す情報を、ステータスレジスタ450に記録する。また、記憶素子に書込まれたデータと書込みバッファ430に保持されたデータとが一致しない場合は、正常に書込みが行われなかったことを示す情報をステータスレジスタ450に記録する。フラッシュメモリ400がエラー訂正回路460を有する場合は、書込みデータとともにエラー訂正用付加ビットをメモリセルアレイ410に書込む。書込んだデータにエラーがあっても、エラー訂正用付加ビットを用いてエラーが訂正可能であればエラーを訂正したデータが読み出される。本実施例においては、書込みデータにエラーがある場合であっても、エラー訂正回路460にて訂正可能なエラーである場合はステータスレジスタ450に正常に書込みが完了したことを示す情報を書き込んでもよい。この場合は、エラー訂正回路460にて訂正を行うことができない書込みエラーがある場合には、ステータスレジスタ450に正常に書込みが行われなかったことを示す情報が書き込まれる。もしくは、書込みデータにエラーがある場合であれば、エラー訂正回路460にて訂正可能なエラーであっても、ステータスレジスタ450に正常に書込みが行われなかったことを示す情報を書き込んでもよい。本明細書において「正常に書込みが行われなかった」とは、「エラー訂正が可能か不能かを問わず、書込みデータに何等かのエラーが存在する」という場合と、「エラー訂正が不能なエラーが書込みデータにエラーが存在する」という場合の、いずれの場合も含むものとして用いる。
When data is written to the
図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 the flow of processing among the first
また処理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
図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
図11は、第1演算処理ノード100、第2演算処理ノード200と、メモリコントローラ300と、フラッシュメモリ400の間での処理の流れの別の例を示す図である。図10に示す処理と同じ内容の処理については同一の参照符号を付し、説明を省略する。
FIG. 11 is a diagram illustrating another example of the flow of processing among the first
図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
フラッシュメモリ400から異常終了通知を受けたプロセッサ310は、処理701及び処理702において書込みエラー通知を、NIC350を介して書込み要求の発行元である第1演算処理ノード100に通知する。またプロセッサ310は、フラッシュメモリ400から異常終了通知を受けると、論理アドレス管理テーブル331のL‐Error値を「1」とすることにより書込みエラーフラグを発生させる。そして処理703及び処理704において、プロセッサ310はNIC350を介して、第2演算処理ノード200から受けた読出し要求に対して要求不受理通知を通知する。第2演算処理ノード200から受けた読出し要求に対してデータ読出しは行わない。これにより、第2演算処理ノード200に誤データが送信されることを防止することができる。
The
ここで、プロセッサ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
図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
図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
処理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”, in
このように本実施例では、第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 writing request received from the first
ここで、図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 the
<第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
メモリコントローラ300から書込みエラー通知を受けた第1演算処理ノード100は、エラー状態の回復処理として、同一データをメモリ400に書込むための書込み再要求を行い得る。具体的には、図5に示した回復処理部113が、要求発行部111に書込み要求を再度発行するよう指示する。要求発行部111は、図6に示した所定の記述フォーマットに沿った書込み再要求をメモリコントローラ300に向けて発行する。この書込み再要求に対するメモリコントローラ300の処理を、図14乃至図16を用いて説明する。
The first
図14は、第2実施例における論理アドレス管理テーブルの例を示す図である。図3(A)にて示した論理アドレス管理テーブルの内容に加えて要求発行元IDが記録される。要求発行元IDとは、メモリコントローラ300が直近に受け付けた書込み要求の発行元を特定するIDである。この要求発行元IDは、図6に示すように、演算処理ノードから送られる書込み要求の中に情報として含まれる。先の書込み要求を受信したメモリコントローラ300は、書込み要求に含まれる要求発行元IDと論理アドレスとを関連付けて、論理アドレス管理テーブル331に格納しておく。
FIG. 14 is a diagram illustrating 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
図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
処理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
第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
図16は、第2実施例において、データ書込み要求を受けた際のプロセッサ310の処理フローを示す図である。図12に示す処理内容と同一ものについては同一の参照番号を付し、説明を適宜省略する。
FIG. 16 is a diagram showing a processing flow of the
処理1103において、テーブル管理部311がL‐Errorの値が「0」でないと判定した場合は、処理1301に進む。処理1301においてテーブル管理部311が、書込み要求に含まれる要求発行元IDと論理アドレス管理テーブル331に格納された要求発行元IDとが一致するか否かを判定する。処理1301において両要求発行元IDが一致すると判定された場合は、処理1104へ進み、書込み処理が行われる。処理1301において両要求発行元IDが一致しないと判定された場合は、処理1115において通知部313が、書込み要求の発行元へ要求不受理通知を発行する。
In the
<第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
図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
図18は、第3実施例におけるプロセッサ310の処理フローを示す図である。図12及び図16に示すプロセッサ310の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。
FIG. 18 is a diagram showing a processing flow of the
処理1103においてテーブル管理部311が、L‐Errorの値が「0」でないと判定した場合は、処理1401に進む。処理1401においてテーブル管理部311が、書込み要求に含まれるリクエストIDと論理アドレス管理テーブル331に格納されたリクエストIDとが一致するか否かを判定する。処理1401において両リクエストIDが一致すると判定された場合は、処理1104へ進み、書込み処理が行われる。処理1401において両リクエストIDが一致しないと判定された場合は、処理1115において通知部313が、書込み要求の発行元へ要求不受理通知を発行する。
If the
<第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
例えば第2実施例では、処理704において要求不受理通知を受けた第2演算処理ノード200は、所望のデータを受け取ることができず処理が停滞することになる。また第2演算処理ノード200は、第1演算処理ノード100の書込みの再要求によって書込みエラー状態が解消されたか否かを認識する手段がない。よってどのタイミングで再度の読出し要求を試みるべきかを認識することができない。そこで第4実施例では、第1演算処理ノード100の書込み再要求に対する書込みが正常に終了した場合は、第2演算処理ノード200に対して正常にデータが書込まれた旨の通知であるリカバリ完了通知を行うこととする。この通知により第2演算処理ノード200は、要求不受理通知を受けた読出し要求に対して、読出し再要求を行うことが可能となったことを認識でき、所望のデータをメモリ400から読み出すことが可能となる。
For example, in the second embodiment, the second
図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
図20は、第4実施例における第1演算処理ノード100、第2演算処理ノード200と、メモリコントローラ300と、フラッシュメモリ400との間の処理の流れの別の例を示す図である。図10、図11及び図15と同じ処理については同じ参照符号を付し、説明を適宜省略する。
FIG. 20 is a diagram illustrating another example of the flow of processing among the first
処理803において第1演算処理ノード100からの書込み再要求を受けたプロセッサ310は、処理806から処理809においてフラッシュメモリ400に対して書込み処理を行う。更にプロセッサ310は、処理810においてフラッシュメモリ400に対し完了確認を行い、処理811においてフラッシュメモリ400から正常終了の通知を受ける。その後、プロセッサ310は処理901及び処理902において、フラッシュメモリ400のデータが正常なものとなったことを示すリカバリ完了通知を、NIC350を介して第2演算処理ノード200に通知する。
In
図21は、第4実施例において読出し要求を受けたメモリコントローラ300のプロセッサ310の処理フローを示す図である。図13に示すプロセッサ310の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。
FIG. 21 is a diagram showing a processing flow of the
処理1202においてテーブル管理部311が、L−Errorの値が「0」であると判定した場合は、処理1203へ進み、読出し処理が行われる。処理1202においてテーブル管理部311が、L‐Errorの値が「0」でないと判定した場合は、処理1501へ進む。処理1501においてテーブル管理部311が、論理アドレス管理テーブルの読出し要求実績に「1」を記録する。そして処理1206において通知部313はデータ読出し要求の発行元に要求不受理通知を行う。
If the
図22は、第4実施例において書込み要求を受けたプロセッサ310の処理フローを示す図である。図12、図16及び図18に示すプロセッサ310の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。
FIG. 22 is a diagram illustrating a processing flow of the
処理1111においてテーブル管理部311が、論理アドレス管理テーブル331のL−Error値に「0」を記録した後、処理1601においてテーブル管理部311が論理アドレス管理テーブル311の読出し要求実績の有無を判定する。処理1601において読出し要求の実績がないと判定された場合は、処理1116へ進む。処理1601において読出し要求の実績があると判定された場合は、処理1602において通知部313が、読出し要求を行った演算処理ノードに対してリカバリ処理完了通知を通知する。この通知により、例えば図20において、読出し要求に対して要求不受理通知を受けた第2演算処理ノード200は、データが正しくフラッシュメモリ400に格納されたことを認識することができる。第2演算処理ノード200は、必要に応じて読出しの再要求を行う等の処理を行うことができる。
In step 1111, the
尚、図22の処理1301では、テーブル管理部311が要求発行元IDの一致を判定しているが、変形例として、図18の処理1401のようにテーブル管理部311がリクエストIDの一致を判定してもよい。
In the
以上、本明細に開示した技術によれば、メモリへの書込みが正常に行われなかったことを示すフラグを論理アドレスに対応付けて設けることで、特定の論理アドレスが付されたデータに誤りがあることを記録として残すことができる。これにより、演算処理ノードが誤データを読出すことを防止できる。また読出された誤データに基づく情報処理が行われることを抑制することができる。また論理アドレス管理テーブルに要求発行元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
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
DESCRIPTION OF
Claims (6)
前記メモリコントローラが、前記メモリの第1物理アドレスに対して前記データの書込みを行う工程と、
前記データの書込みが正常に行われなかった場合、前記メモリコントローラが、前記データの書込みが正常に行われなかったことを示す第1通知を、前記第1演算処理ノードに通知する工程と、
前記メモリコントローラが、前記第1論理アドレスを指定した前記データの読出し要求を第2演算処理ノードから受信する工程と、
前記メモリコントローラが、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第2通知を前記第2演算処理ノードに通知する工程と、
前記メモリコントローラが、前記メモリに対する前記データの再書込み要求を、前記第1演算処理ノードから受信する工程と、
前記再書き込み要求によって前記データが前記メモリに正常に書込まれた場合、前記メモリコントローラが、前記データが正常に書込まれたことを示す第3通知を前記第2演算処理ノードに通知する工程と
を有することを特徴とする情報処理方法。 Memory controller, a write request to the memory of the data first logical address is assigned, comprising: receiving from a first processing node,
The memory controller writing the data to the first physical address of the memory;
A step of notifying the first arithmetic processing node of a first notification indicating that the data writing is not normally performed when the data writing is not normally performed;
The memory controller receiving a read request for the data designating the first logical address from a second processing node;
The memory controller not not reading the data and notifying the second operation processing node of a second notification indicating that the data writing was not normally performed;
The memory controller receiving a request to rewrite the data to the memory from the first processing node;
When the data is normally written to the memory by the rewrite request, the memory controller notifies the second arithmetic processing node of a third notification indicating that the data has been normally written. an information processing method characterized in that it comprises and.
第1演算処理ノードと、A first arithmetic processing node;
第2演算処理ノードと、A second arithmetic processing node;
第1論理アドレスが付されたデータの前記メモリへの書込み要求を、前記第1演算処理ノードから受信し、前記メモリの第1物理アドレスに対して前記データの書込みを行い、前記データの書込みが正常に行われなかった場合に、前記データの書込みが正常に行われなかったことを示す第1通知を前記第1演算処理ノードに通知し、前記第1論理アドレスを指定した前記データの読出し要求を前記第2演算処理ノードから受信し、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第2通知を前記第2演算処理ノードに通知し、前記第1演算処理ノードから前記メモリに対する前記データの再書込み要求を受信し、前記再書き込み要求に基づいて前記データが前記メモリに正常に書込まれた場合に、前記データが正常に書込まれたことを示す第3通知を前記第2演算処理ノードに通知するメモリコントローラとA request to write the data with the first logical address to the memory is received from the first arithmetic processing node, the data is written to the first physical address of the memory, and the data is written. If not normally performed, the first operation processing node is notified of the first notification indicating that the data writing has not been performed normally, and the data read request specifying the first logical address is performed. From the second arithmetic processing node, without reading the data, and notifying the second arithmetic processing node of a second notification indicating that the writing of the data has not been performed normally. When a rewrite request for the data to the memory is received from one processing node and the data is normally written to the memory based on the rewrite request, A memory controller for notifying the third notification indicating that the data has been written successfully to the second processing node
を有することを特徴とする情報処理装置。An information processing apparatus comprising:
前記書込み要求に基づき、前記メモリの第1物理アドレスに対して前記データの書込みを行う処理と、A process of writing the data to the first physical address of the memory based on the write request;
前記データの書込みが正常に行われなかった場合に、前記データの書込みが正常に行われなかったことを示す第1通知を、前記第1演算処理ノードに通知する処理と、A process of notifying the first arithmetic processing node of a first notification indicating that the data writing is not performed normally when the data writing is not performed normally;
前記第1論理アドレスを指定した前記データの読出し要求を第2演算処理ノードから受信する処理と、Processing for receiving a read request for the data designating the first logical address from a second processing node;
前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第2通知を前記第2演算処理ノードに通知する処理と、A process of notifying the second operation processing node of a second notification indicating that the data has not been normally written without reading the data;
前記メモリに対する前記データの再書込み要求を、前記第1演算処理ノードから受信する処理と、A process of receiving a request to rewrite the data to the memory from the first processing node;
前記再書き込み要求によって前記データが前記メモリに正常に書込まれた場合、前記データが正常に書込まれたことを示す第3通知を前記第2演算処理ノードに通知する処理とA process of notifying the second operation processing node of a third notification indicating that the data has been normally written when the data is normally written to the memory by the rewrite request;
を行う制御部Control unit
を有することを特徴とするメモリコントローラ。A memory controller comprising:
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 (2)
Publication Number | Publication Date |
---|---|
JP6075456B2 true JP6075456B2 (en) | 2017-02-08 |
JPWO2015040658A1 JPWO2015040658A1 (en) | 2017-03-02 |
Family
ID=52688347
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015537435A Active JP6075456B2 (en) | 2013-09-20 | 2013-09-20 | Information processing method, information processing apparatus, memory controller, and memory |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6075456B2 (en) |
WO (1) | WO2015040658A1 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060059297A1 (en) * | 2004-09-15 | 2006-03-16 | Kenichi Nakanishi | Memory control apparatus, 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 |
US20110216592A1 (en) * | 2010-03-03 | 2011-09-08 | Hiroyuki Nagashima | Nonvolatile semiconductor memory 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 |
-
2013
- 2013-09-20 WO PCT/JP2013/005598 patent/WO2015040658A1/en active Application Filing
- 2013-09-20 JP JP2015537435A patent/JP6075456B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060059297A1 (en) * | 2004-09-15 | 2006-03-16 | Kenichi Nakanishi | Memory control apparatus, memory control method and program |
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 |
US20110216592A1 (en) * | 2010-03-03 | 2011-09-08 | Hiroyuki Nagashima | Nonvolatile semiconductor memory device and memory system |
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 |
WO2015040658A1 (en) | 2015-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4037605B2 (en) | Nonvolatile memory unit controller, memory system having the controller, and nonvolatile memory unit control method | |
JP3078946B2 (en) | Managing method of batch erase nonvolatile memory and semiconductor disk device | |
US20180275887A1 (en) | Data Storage Device and Operating Method of Data Storage Device | |
CN108431783B (en) | Access request processing method and device and computer system | |
US6571312B1 (en) | Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory | |
CN104246727B (en) | Data handling system and the method for operating data processing system | |
JPH117505A (en) | Card type storage medium | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
WO2023206968A1 (en) | Data storage method and system, and computer readable storage medium | |
US11720249B2 (en) | Data storage device and method for rewriting parameters thereof | |
JPH09198884A (en) | Management method of flash memory | |
JP2006099802A (en) | Storage controller, and control method for cache memory | |
JP6075456B2 (en) | Information processing method, information processing apparatus, memory controller, and memory | |
CN111625477B (en) | Processing method and device for read request for accessing erase block | |
CN107562654B (en) | IO command processing method and device | |
US20070274302A1 (en) | Data Storage Device, Memory Managing Method, and Program | |
JP2000357216A (en) | Ic card | |
JP4710274B2 (en) | MEMORY DEVICE, MEMORY DEVICE CONTROL METHOD, AND DATA PROCESSING SYSTEM | |
JP2015049722A (en) | Microcomputer and block control method of non-volatile memory | |
KR20140101626A (en) | Data processing method of solid state drive | |
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 | |
JP4580724B2 (en) | Nonvolatile memory control method | |
US10754548B2 (en) | Data storage device and method for rewriting parameters thereof | |
US7996598B2 (en) | Memory management module | |
KR101758792B1 (en) | Method and apparatus for data logging based on data structure of nonvoltile memory and recovering based on transaction log |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161118 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20161213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161226 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6075456 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |