Embodiments described herein relate generally to a memory controller, a storage device, and a decoding method.
In a general storage device, data is stored while being applied with error correcting coding. A product code whose component codewords are arranged in a two dimensional array is known as an example of error correcting coding.
A memory controller according to the present embodiment includes a first decoder configured to: perform a first decoding using, a first set of soft input values, a first received word corresponding to a first codeword read as the first set of soft input values from a nonvolatile memory; calculate first distance information indicating a squared Euclidean distance between a first decoded word obtained by the first decoding and the first set of soft input values based on the first decoded word; calculate a first decoding success rate indicating a probability that the first decoded word is a correct decoding result based on the first distance information; calculate a first set of extrinsic values based on the first decoding success rate; and output the first set of extrinsic values. The memory controller further includes a second decoder configured to: perform a second decoding using, as a second set of soft input values, a result obtained by adding a second received word corresponding to a second codeword read as a set of soft decision values from the nonvolatile memory to a rearranged set of the first extrinsic values corresponding to the second codeword; calculate second distance information indicating a squared Euclidean distance between a second decoded word obtained by the second decoding and the second set of soft input values based on the second decoded word, calculate a second decoding success rate indicating a probability that the second decoded word is a correct decoding result based on the second distance information, calculate a second set of extrinsic values based on the second decoding success rate, and output the second set of extrinsic values.
The memory controller, storage device, decoding method according to the embodiment will be described in detail with reference to the appended drawings. Note that the present invention is not limited to the embodiment.
The non-volatile memory 3 such as a NAND memory stores data in a non-volatile manner. Herein, an example in which a NAND memory is used as the nonvolatile memory 3 will be described. Note that, however, a storage unit such as a three-dimensionally-structured flash memory, a Resistance Random Access Memory (ReRAM), or a Ferroelectric Random Access Memory (FeRAM) may be used as the nonvolatile memory 3 instead of the NAND memory. Furthermore, an example in which a semiconductor memory is used as the storage unit will be described herein. However, the error correcting process according to the present embodiment may be applied to a storage device using a storage unit other than the semiconductor memory.
The storage device 1 may be, for example, a memory card including the memory controller 2 and the nonvolatile memory 3 in a package, or a Solid State Drive (SSD).
The memory controller 2 controls the writing to the nonvolatile memory 3 in accordance with a write command (request) from the host 4. Similarly, the memory controller 2 controls the reading from the nonvolatile memory 3 in accordance with a read command from the host 4. The memory controller 2 includes a host interface (Host I/F) 21, a memory interface (memory I/F) 22, a control unit 23, an encoder and decoder (Encoder/Decoder) 24, and a data buffer 25. The Host I/F 21, the memory I/F 22, the control unit 23, the Encoder/Decoder 24, and the data buffer 25 are connected to each other via an internal bus 20.
The Host I/F 21 performs a process in accordance with the interface specification between the Host I/F 21 and the host 4 to output, for example, instructions or user data received from the host 4 to the internal bus 20. The Host I/F 21 transmits, for example, the user data read from the nonvolatile memory 3, or the response from the control unit 23 to the host 4. Note that the data to be written to the nonvolatile memory 3 in accordance with the write request from the host 4 is referred to as the user data in the present embodiment.
The memory I/F 22 writes data to the nonvolatile memory 3 in a writing process in accordance with the instruction from the control unit 23. Similarly, the memory I/F 22 reads data from the nonvolatile memory 3 in a reading process in accordance with the instruction from the control unit 23.
The control unit 23 is configured to generally control each of the components in the storage device 1. When receiving an instruction from the host 4 via the Host I/F 21, the control unit 23 controls the components in accordance with the instruction. For example, the control unit 23 gives the memory I/F 22 an instruction for writing the user data and its parity to the nonvolatile memory 3 in accordance with the instruction from the host 4. Similarly, the control unit 23 gives the memory I/F 22 an instruction for reading the user data and its parity from the nonvolatile memory 3 in accordance with the instruction from the host 4.
Furthermore, when receiving a write request from the host 4, the control unit 23 determines a storage region (memory region) in which the user data accumulated in the data buffer 25 is stored in the nonvolatile memory 3. In other words, the control unit 23 manages the place to which the user data is written. The correspondence between the logical address of the user data received from the host 4 and the physical address indicating the storage region in which the user data is stored in the nonvolatile memory 3 is stored as an address mapping table.
When receiving a read request from the host 4, the control unit 23 converts the logical address designated in the read request into the physical address with the address mapping table, and then gives the memory I/F 22 an instruction for reading the data from the physical address.
In a common NAND memory, data is written or read in a unit of data called a page, and is deleted in a unit of data called a block. A plurality of memory cells connected to a word line is referred to as a memory cell group in the present embodiment. When each of the memory cells is a single level cell (SLC), a memory cell group corresponds to a page. When each of the memory cells is a multi level cell (MLC), a memory cell group corresponds to a plurality of pages. The memory cells are connected also to a bit line while being connected to the word line. Each of the memory cells may be identified with the address for identifying the word line and the address for identifying the bit line.
The data buffer 25 temporarily stores the user data that the memory controller 2 receives from the host 4 until the data user is stored in the nonvolatile memory 3. The data buffer 25 temporarily stores the user data read from the nonvolatile memory 3 until the user data is transmitted to the host 4. The data buffer 25 includes, for example, a general-purpose memory such as a Static Random Access Memory (SRAM) or a Dynamic Random Access Memory (DRAM).
The user data transmitted from the host 4 is transferred to the internal bus 20 and stored in the data buffer 25. The Encoder/Decoder 24 encodes the data to be stored in the nonvolatile memory 3 to generate a codeword. The Encoder/Decoder 24 includes an encoder (Encoder) 26 and a decoder (Decoder) 27. The details of the encoding and decoding according to the present embodiment will be described below.
A method for protecting the data to be stored with an error correcting code in the storage device is widely known. As a specific example, a code with a plurality of constraints such as a product code or a concatenated code, which is a combination of block codes, is sometimes used as the error correcting code.
Hard-input hard-output (HIHO) decoding and soft-input soft-output (SISO) decoding are widely used as a decoding method. The SISO decoding takes more time than the HIHO decoding does although the SISO decoding can correct errors with a higher efficiency than the HIHO does. When a product code is used to protect data, the data may be decoded with either HIHO decoding or SISO decoding. For example, to decode a product code including a two dimensional codeword group, namely, a first-dimensional (horizontal) and second-dimensional (vertical) codeword group with SISO decoding, a first extrinsic value (extrinsic information) is calculated by decoding the first-dimensional code with SISO decoding, a second extrinsic value is calculated by decoding the second-dimensional code with SISO decoding using the first extrinsic value, and a first extrinsic value is calculated by decoding the first-dimensional code with SISO decoding using the second extrinsic value. Such calculations are repeated in the SISO decoding. Exchanging the extrinsic values between the decoding of different dimensional codes as described above can improve the efficiency of error correcting. Note that the extrinsic value indicates likelihood.
The correspondence between each of the common terms (a communication channel value, a priori value, a posteriori value, and an extrinsic value) used in soft decision decoding and the data stored in the storage device according to the present embodiment will be described hereinafter. When the data is read from the nonvolatile memory 3, a plurality of threshold determination processes is performed while the read level changes. The process finds the range including the threshold voltage of each of the memory cells. The range is indicated with a valuable a. A conditional probability P(a|x=0) indicates that the value of the threshold voltage is included in the range a under the condition in which a bit x written in each of the memory cells has a logical “0”. A conditional probability P(a|x=1) indicates that the value of the threshold voltage is included in the range a under the condition in which a bit x written in each of the memory cells has a logical “1”. The value obtained by taking the logarithm of the ratio of the conditional probabilities is referred to as the communication channel value (channel information) in the present embodiment. The expression indicating the communication channel value is ln(P(a|x=0)/P(a|x=1)). The ln indicates a natural logarithm in the expression.
It is assumed that a vector X that is the written data and includes a plurality of bits is included as a codeword in an error correcting code. The notation XεC indicates that the vector X is a codeword in an error correcting code C. When the probability P (x=0) in which each of the bits x has the value 0 and the probability P (x=1) in which each of the bits x has the value 1 are found from another condition rather than the code constraint C or the read range a of the threshold voltage, the value obtained by taking the logarithm of the ratio of the probabilities is referred to as the priori value (a priori information) in the present embodiment. The expression indicating the priori value is ln(P(x=0)/P(x=1)).
The soft decision decoding is commonly a method for calculating the vector X that maximizes a posterior probability P(XεC|A) or a solution approximate to the vector X under the condition that provides a vector A and the conditional probability P(A|x) of the communication channel, and also provides the vector of the priori values if the vector of the priori values is provided in advance. The provided vector A, and conditional probability P(A|x) (, and the vector of the priori value) correspond to the codeword in the code C. The vector A includes the read range of the threshold voltage as an element.
When the probability P (x=0, XεC|A) indicates that each of the bits x has the value 0 and the probability P (x=1, XεC|A) indicates that each of the bits x has the value 1, the value obtained by taking the logarithm of the ratio of the probabilities under the condition in which the vector A is received is referred to as the posteriori value (a posteriori information) in the present embodiment. The expression indicating the posteriori value is ln(P(x=0, XεC|A)/P(x=1, XεC|A)).
The value obtained by subtracting the value (the communication channel value+the priori value) from the posteriori value at each bit is referred to as the extrinsic value (extrinsic information).
When a bit belongs to a plurality of code constraints as in a product code, the extrinsic value obtained based on one of the code constraints may be used as the priori value to decode data in a soft decision decoding based on the other code constraint to which the bit belongs.
On the other hand, there are various methods to calculate an extrinsic value. For example, there is a method for calculating an extrinsic value by the following expression (1) using a decoding success rate φ. Herein, the decoding success rate φ indicates the probability that the decoding result (the decoded word) from the soft decision decoding is correct (in other words, the decoded word is identical to the transmitted codeword).
Note that, when the transmitted codeword has a code length of n, the chLLRj is the jth element of the vector {chLLR1, chLLR2, . . . , and chLLRn} of the communication channel values, and the prLLRj is the jth element of the vector {prLLR1, prLLR2, . . . , and prLLRn} of the priori values. The dj is the jth element of the decoded word vector D={d1, d2, . . . , and dn} that is the decoded word obtained as the decoding result (a hard decision value) and expressed as a vector. However, dj=+1 holds herein when a soft decision decoder estimates that xj=0 holds, and dj=−1 holds herein when a soft decision decoder estimates that xj=1 holds. The exLLRj is the jth element of the extrinsic value vector {exLLR1, exLLR2, . . . , and exLLRn}.
The decoding success rate φ can be found only when the correct solution (the transmitted codewords) is known. However, the decoder that receives a communication channel value does not have the correct solution. Thus, in the actual processes, the decoder estimates the rate φ based on the information that the decoder can obtain. As one of the actual processes, there is a method in which the rate φ is estimated on the assumption that the rate φ depends on the Distdes shown in the following expression (2). In the method, the relationship between the Distdes and the rate φ is found in advance. Subsequently, the rate φ is estimated based on the relationship and the Distdes calculated based on the information that the decoder can obtain. Herein, the rj is the jth element of the vector R={r1, r2, . . . , and rn}. The vector includes the communication channel values or the values each obtained by adding the communication value to the priori value (for example, the extrinsic value obtained by decoding in the other dimension in the product code) as the elements.
However, the extrinsic value is sometimes calculated with a low accuracy depending on the state of the communication channel or the method in which the product code is generated. In the present embodiment, the rate φ is estimated using a squared Euclidean distance between the communication channel value (received vector) and the decoded word by the following expression (3) or the information corresponding to the Euclidean distance instead of the Distdes.
The terms other than the last term in the right side of the expression (3) are values determined only by the received word (communication channel value) and do not depend on the decoded word (decoding result). Thus, as shown in the following expression (4), the last term, which depends on the decoded word, in the right side of the expression (3) is defined as the distance information Dist in the present embodiment to estimate the rate φ using the distance information. In other words, in the present embodiment, the relationship among the correct decoded word (transmitted codeword), a soft input value, the distance information corresponding to the squared Euclidean distance, and the rate φ is found in advance, for example, from a simulation to estimate the rate φ based on the relationship and the distance information calculated based on the decoded word obtained by decoding the communication channel value.
In the present embodiment, dj=+1 holds when it is estimated that xj=0 holds in the soft decision decoding with a code constraint, and dj=−1 holds when it is estimated that xj=0 holds. Then, the distance information is calculated by the expression (4). Subsequently, the rate φ is found from the relationship between the distance information and the decoding success rate φ. Then, the extrinsic value under a condition with a code constraint is calculated by the expression (1). The extrinsic value is used as the priori value for the soft decision decoding with another code constraint. The method for calculating the rate φ in the present embodiment will be described in detail below.
The encoding and decoding according to the present embodiment will be described hereinafter. A product code generated by combining two or more dimensional block codes will be described as an example herein. However, the application of the decoding method according to the present embodiment is not limited to the product code. The decoding method may be applied to any code with a plurality of restrict conditions. The decoding method according to the present embodiment may also be applied, for example, to a concatenated code.
First, the writing process in the present embodiment will be described. The control unit 23 gives the encoder 26 an instruction for encoding the data when the data is written to the nonvolatile memory 3. Meanwhile, the control unit 23 determines the place for storing the codeword in the nonvolatile memory 3 (the storage address) and indicates the address to the memory I/F 22. The encoder 26 generates a codeword by encoding the data in the data buffer 25 in accordance with the instruction from the control unit 23. The memory I/F 22 controls the storage operation of the codeword in the location that the control unit 23 indicates in the nonvolatile memory 3.
The encoder 26 generates, for example, a product code.
The product code illustrated in
The product code illustrated in
Next, the process for reading the codeword from the nonvolatile memory 3 in the present embodiment will be described. The control unit 23 designates the address in the nonvolatile memory 3 and gives the memory I/F 22 an instruction for reading the codeword from the nonvolatile memory 3. Meanwhile, the control unit 23 instructs the decoder 27 to start decoding. The memory I/F 22 reads a received word corresponding to the codeword from the nonvolatile memory 3 in accordance with the instruction from the control unit 23. The decoder 27 decodes the received word read from the nonvolatile memory 3.
When data is written in the nonvolatile memory 3 that is a NAND memory, electrons are inserted in accordance with the data value such that the number of electrons (the amount of charge) at the floating gate corresponds to one of a plurality of distributions (threshold distributions). To simplify the description, an example of one bit/cell in which a memory cell stores a bit will be described herein. In the one bit/cell, one of the two distributions corresponds to “0” while the other corresponds to “1”. When a voltage is applied to the memory cell and the applied voltage is equal to or higher than the voltage value in accordance with the amount of charge of the memory cell, a current flows. When a voltage lower than the voltage value is applied to the memory cell, a current does not flow. Thus, the boundary voltage is determined for each memory cell in accordance with the amount of charge of the memory cell. The voltage determined in accordance with the amount of charge of the memory cell is herein referred to as a threshold voltage (Vth). Electrons are inserted in an initial state such that the number of electrons corresponds to one of the two threshold distributions. When the data is read, applying a reference read voltage that divides the two threshold distribution to the memory cell can determine whether the data stored in the memory cell is “1”.
Hard bit read is a reading method in which the nonvolatile memory 3 applies a reference read voltage to a memory cell to determine whether the data stored in the memory cell is “1” or “0”, and outputs the result from the determination. Note that the read voltage applied in the hard bit read is sometimes changed from the reference read voltage.
With reference to
The HIHO decoding with which the codeword input as the hard decision value is decoded is, for example, bounded distance decoding. The HIHO decoding is not limited to bounded distance decoding. The HIHO Decoder 271 may use any HIHO decoding method. When the product code illustrated as an example in
The HIHO Decoder 271 determines after step S2 whether all of the codewords included in the product code are successfully decoded, and notifies the result from the determination to the control unit 23. The control unit 23 determines based on the notification from the HIHO Decoder 271 whether all of the codewords included in the product code are successfully decoded (step S3). When all of the codewords are successfully decoded (Yes in step S3), the reading process is terminated. Note that the control unit 23 determines in step S3 whether all of the codewords in at least one of the dimensions included in the product code are successfully decoded. When redundant bits such as CRC bits are added as an error correcting code, the codewords may also be checked with the error correcting code in the determination in step S3 whether the codewords are successfully decoded.
When the control unit 23 determines that a codeword included in the product code fails to be decoded (No in step S3), the control unit 23 designates the address to be read and gives the memory I/F 22 an instruction for reading the data of the address with soft bit read (SBR) from the nonvolatile memory 3. Then, the memory I/F 22 reads the data with soft bit read in which the data is read as a soft decision value (step S4).
In the present embodiment, the codeword read with soft bit read from the nonvolatile memory 3 is the input for the SISO decoding in the SISO Decoder 272. By the soft bit read, the value obtained by taking the logarithm of the ratio of the probability (or likelihood) that the value stored in the memory cell in the nonvolatile memory 3 is “0” to the probability (or likelihood) that the value is “1”, namely, the Log Likelihood Ratio (LLR) is obtained.
Alternatively, when it is assumed that the logarithm of the ratio of the probability that the value stored in the nonvolatile memory 3 is “0” to the probability that the value is “1” is known, the known logarithm is referred to as a priori value. The SISO Decoder 272 decodes each of the codewords in each of the dimensions, using the communication channel value, namely, the LLR and the priori value as the input. In other words, the SISO Decoder 272 finds the most likely codeword among the codewords satisfying the code constraint as the decoded words, using the communication channel value, namely, the LLR and the priori value as the input. The SISO Decoder 272 decodes each of the codewords in each of the dimensions. The decoding provides the value obtained by taking the logarithm of the ratio of the probability that each of the bits of a codeword is “0” to the probability that each of the bits is “1”, namely, log a posteriori probability ratio. The log a posteriori probability ratio is referred to a posteriori value in the present embodiment.
The LLR can be found from the result from the determination whether the threshold voltage of each of the memory cells is equal to or higher than each of the read voltages, for example, with an LLR table.
Either the memory controller 2 or the nonvolatile memory 3 may convert data into an LLR from the result from the determination whether the threshold voltage of each of the memory cells is equal to or higher than each of the read voltages. When the memory controller 2 converts data into an LLR, the nonvolatile memory 3 outputs, for example, the information indicating the region in which the threshold voltage of each of the memory cells is included among eight regions; a region including voltages lower than the voltage Vr1, a region including voltages equal to or higher than the voltage Vr1 and lower than the voltage Vr2, a region including voltages equal to or higher than the voltage Vr2 and lower than the voltage Vr3, a region including voltages equal to or higher than the voltage Vr3 and lower than the voltage Vr4, a region including voltages equal to or higher than the voltage Vr4 and lower than the voltage Vr5, a region including voltages equal to or higher than the voltage Vr5 and lower than the voltage Vr6, a region including voltages equal to or higher than the voltage Vr6 and lower than the voltage Vr7, and a region including voltages equal to or higher than the voltage Vr7. Then, the memory I/F 22 finds the LLR in accordance with the LLR table and the information output from the nonvolatile memory 3, and outputs the found LLR to the decoder 27.
A single level cell that stores one bit/cell is described as an example with reference to
With reference to
The process described above enables a high-speed reading when the errors may be corrected with the hard bit read and HIHO decoding and the decoding is completed only with the hard bit read and HIHO decoding. On the other hand, when the errors fail to be corrected with the hard bit read and HIHO decoding, performing SISO decoding with a high efficiency of correcting errors can improve the efficiency of correcting errors. The hard bit read and HIHO decoding is performed first in the present embodiment and, when the errors fail to be corrected with the hard bit read and HIHO decoding, the soft bit read and SISO decoding is subsequently performed. Note that, however, the soft bit read and SISO decoding may be performed first without the hard bit read and HIHO decoding.
Next, the SISO decoding according to the present embodiment will be described.
The first decoder 54 decodes the first-dimensional codewords with SISO decoding. The second decoder 55 decodes the second-dimensional codewords with SISO decoding. Hereinafter, the SISO decoding is referred to also merely as soft decision decoding. The first decoder 54 and the second decoder 55 may perform the soft decision decoding in any specific method without a special constraint.
The SISO Decoder 272 according to the present embodiment decodes data, using an extrinsic value obtained in another dimension as the priori value. For example, the first decoder 54 uses the extrinsic value (the second extrinsic value) obtained by decoding the second-dimensional codeword stored in the second extrinsic value memory 53 to decode a first-dimensional codeword. Similarly, the second decoder 55 uses the extrinsic value (the first extrinsic value) obtained by decoding the first-dimensional codeword stored in the first extrinsic value memory 51 to decode the second-dimensional codeword.
The method for calculating an extrinsic value in the first decoder 54 and the second decoder 55 according to the present embodiment will be described. As described above, the decoding success rate φ is calculated based on the distance information in the present embodiment, and the extrinsic value is calculated by the expression (1) using the decoding success rate φ.
The first decoder 54 calculates an decoded word with soft decision decoding, using a communication channel value (or a communication channel value+a priori value (the priori value is the extrinsic value obtained by the decoding in another dimension)) (step S21). Next, the first decoder 54 calculates the distance information by the expression (4) based on the decoded word and the communication channel value (or the communication channel value+the priori value) (step S22). Subsequently, as described in the expression (4), the first decoder 54 calculates the position of the bit of which error is corrected in the decoded word, in other words, calculates the sum of the absolute values of ri of the i satisfying diri<0 so as to use the calculated value as the distance information. The i satisfying diri<0 may be found by actually calculating diri for every i. Alternatively, the i satisfying diri<0 may be found with an error vector (the information indicating the position of the error bit) obtained with soft decision decoding.
Next, the first decoder 54 calculates the decoding success rate φ, using the distance information and the table (step S23). Subsequently, the first decoder 54 calculates the extrinsic value by the expression (1) based on the decoding success rate φ, the decoding result, and the communication channel value (or the communication channel value+the priori value) (step S24).
With reference to
The SISO Decoder 272 determines based on the result from the hard decision of the posteriori value whether to terminate the SISO decoding (step S14). Specifically, the hard decision unit 56 determines the posteriori value of each of the bits of each of the codewords with hard decision, and outputs the posteriori value to the completion determination unit 57. The completion determination unit 57 determines based on the result from the hard decision whether to terminate the SISO decoding, and outputs the determination result to the decoding control unit 58. For example, one of the following conditions or the combination of two or more of the conditions may be used as the check for determining the termination. The first condition is that the parity check in the first-dimensional codewords is satisfied (no error is found). The second condition is that the parity check in the second-dimensional codewords is satisfied (no error is found). The third condition is that the check on the error detecting code is satisfied (no error is found) when the redundant bits such as CRC bits are added as an error detecting code.
When determining to terminate the SISO decoding (satisfied in step S14), the SISO Decoder 272 determines the success of the SISO decoding and terminates the SISO decoding. When it is determined that the condition for terminating the SISO decoding is not satisfied (un-satisfied in step S14), the decoding control unit 58 determines whether the counter itr that indicates the number of iteration of the SISO decoding indicates the number smaller than the maximum number itr max of iteration of the SISO decoding (step S15). When the counter itr indicates the number smaller than the number itr max (Yes in step S15), the decoding control unit 58 increases the number of the counter itr by one (step S16), and the process goes back to step S12. When the number of the counter itr is equal to or larger than the number itr max (No in step S15), it is determined that the decoding is failed and the SISO decoding is terminated.
As described above, an extrinsic value is calculated by the decoding of the codewords in each of the dimensions, and the extrinsic value is calculated with the decoding success rate calculated based on the distance information in the present embodiment. Thus, a product code is decoded with an iteration process in the present embodiment while the extrinsic value obtained by the decoding of the codewords in another dimension is used as the priori value for the decoding of the codewords in each of the dimensions in the SISO decoding. This can increase the efficiency of correcting errors with a simple process.
Note that the distance between the decoded word and the soft decision input shown in the expression (3) may be used as the distance information although the distance information shown in the expression (4) is used as an example in the present embodiment.
Note that the present invention may be applied in order to repeatedly decode not only a product code but also a code with a plurality of constraints in SISO decoding although an example in which the product code including the first-dimensional codewords (the first codewords) and the second-dimensional codewords (the second codewords) is decoded with the SISO decoding is described in the present embodiment. For example, the present invention may be applied for decoding of a concatenated code including the first codewords and the second codewords.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
This application is based upon and claims the benefit of priority from U.S. Provisional Application No. 62/130,978, filed on Mar. 10, 2015; the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62130978 | Mar 2015 | US |