New Paragraph

Paragraphs

Actions Matter Content Para # Notes Modified
View Edit
Delete
US-8380915-A1 In one embodiment, the adjustment module 408 stops readjusting a read voltage threshold once a retry threshold is satisfied. For example, if the ECC decoder 322 cannot correct a data error and/or if the read bias for the data set continues to deviate from the known bias when a retry threshold for the data set is satisfied, the adjustment module 408 may cease making adjustments to the read voltage threshold. The retry threshold may be selected based on a set of possible read voltage threshold levels, or the like. In one embodiment, a retry threshold sets a number of times which the adjustment module 408 may adjust a read voltage threshold. In another embodiment, a retry threshold may set an amount of time in which the adjustment module 408 may make read voltage threshold adjustments. The solid-state storage controller 104, in certain embodiments, may take further remedial action in response to the retry threshold being satisfied, such as retiring the storage cells associated with the data set, logically replacing the storage cells associated with the data set, or the like. 214 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In another embodiment, the adjustment module 408 uses a search algorithm to determine the read voltage threshold based on the direction of deviation. For example, the range of voltages in the direction of deviation from the current read voltage threshold may be the search space for the search algorithm. The adjustment module 408, in one embodiment, may use a linear search, a binary search, or the like to determine the read voltage threshold. To check each step as part of the search algorithm, the data set read module 402 may re-read the data set in response to each adjustment, and the deviation module 404 may re-determine whether the read bias of the re-read data set deviates from the known bias. The direction module 406 may re-determine a direction of deviation for the re-read data set to further the search. The adjustment module 408 may iteratively readjust the read voltage threshold based on the re-determined direction of deviation until the deviation module 404 determines that the read bias of a re-read data set does not deviate from the known bias, or until each of the read voltage threshold level has been tested, and/or until the data set can be corrected using ECC checkbits, or the like. 213 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In a further embodiment, the adjustment module 408 determines an amount to adjust the read voltage threshold based on an amplitude of the direction or amplitude of the difference determined by the direction module 406. In another embodiment, the adjustment module 408 may scale or otherwise adjust the amplitude from the direction module 406 and adjust the read voltage threshold the adjusted amount. For example, the adjustment module 408, in one embodiment, may adjust the read voltage threshold by several adjustment levels in a single adjustment, based on the amplitude of the direction. In a further embodiment, the adjustment module 408 may select an amount to adjust the read voltage threshold based on additional factors such as age, amount of wear, usage history, error history, or other aspects of the solid-state storage media 110. As described above with regard to FIG. 3B, in certain embodiments, the adjustment module 408 may make a read voltage threshold adjustment based on one or more statistics for the solid-state storage device 102 that the configuration module 352 receives from the device factor module 354. 212 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In one embodiment, the adjustment module 408 adjusts a read voltage threshold for the storage cells of the solid-state storage media 110 based on the direction of deviation that the direction module 406 determines. The adjustment module 408, in one embodiment, may adjust the read voltage threshold in the direction of deviation, away from the direction of deviation, or the like. For example, in one embodiment, the adjustment module 408 may raise the read voltage threshold from a previous read voltage threshold in response to the direction module 406 detecting more binary ones than expected in the known bias and lower the read voltage threshold in response to fewer binary ones than expected. While the relative directions may change based on characteristics of the storage cells of the solid-state storage media 110 and the storage scheme employed, the adjustment module 408 adjusts the read voltage threshold to correct or compensate for the difference determined by the direction module 406. 211 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 Advantageously, having an indication as to which direction to adjust the read voltage threshold provides a significant reduction in time and resources needed to identify a new adjusted read voltage level. If the direction in which to make a read voltage threshold was unknown, identifying a new read voltage threshold may require a labor and time intensive process of trial and error as different possible read voltage thresholds are set and then tested and then adjusted as needed. The process may be needed to find a read voltage threshold that results in a re-read of the data packet substantially matching the known bias. 210 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In a further embodiment, the configuration module 352 may make a random configuration parameter adjustment 358, in response to a data error or the like, if input from each of the inverse bias module 332, the ECC decoder 322, and the device factor module 354 is unavailable. For example, the configuration module 352 may try a configuration parameter adjustment 358 in one direction, re-read the data set and check for errors, and try a configuration parameter adjustment 358 in the other direction if the error persists. 181 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In another example, if the read bias of the data set is 0.3, meaning that thirty percent of the data bits are binary ones, the direction module 406, in one embodiment, would subtract the expected bias, 0.5, from the read bias of the data set, 0.3, for a difference of −0.2. In this example, the direction would be the opposite of the first example, i.e. “−0.2,” “negative,” “less then,” “down,” or the like. 208 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In one embodiment, a binary zero is represented by a voltage below the read voltage threshold and a binary one is represented by a voltage above the read voltage threshold. In one example, a data set is stored with a known bias of 0.5, representing that the expected bias of the data set should be one half binary ones, or DC balanced. In this example, the data set is read from the storage cells and the data set has a read bias of 0.7, meaning that seventy percent of the data bits are binary ones. To determine the direction, in one embodiment, the direction module 406 subtracts the expected bias, 0.5, from the read bias of the data set, 0.7, for a direction of 0.2. The direction may be the entire result (i.e. “0.2”), the sign of the result (i.e. “positive”), a relationship (i.e. “greater than”), a direction, (i.e. “up”), or another indicator that represents the difference between the expected bias of 0.5 and the read bias of 0.7. 207 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In embodiments where an error bias from the ECC decoder 322 is available, the direction module 406 may determine the direction of deviation based on one or more bits of the data set that are in error, as indicated by the error bias. In other embodiments, as described above with regard to FIG. 3B, the direction module 406 may combine directions based on input from the inverse bias module 332, the ECC decoder 322, and/or the device factor module 354 to determine a direction of deviation, or the like. 206 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 The direction module 406, in one embodiment, may determine the direction by subtracting a ratio, proportion, or other representation of the known bias from a representation of the read bias of the data set. For example, in one embodiment, the direction module 406 may subtract the proportion of binary ones, zeroes, multi-bit binary symbols, or the like that are expected based on the known bias from the proportion of binary ones, zeroes, multi-bit binary symbols, or the like that are in the data set. Depending on whether ratios of binary ones are compared or ratios of binary zeroes are compared and whether a high voltage represents a binary one or a binary zero, or other specific architectures of the storage cells, the direction module 406 may invert the difference or perform another transform to determine the direction. 205 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In one embodiment, the direction module 406 determines a direction of deviation for the data set. The direction of deviation, in one embodiment, is a difference between the read bias of the data set and the known bias. The direction or difference may be represented as a value, a sign (i.e. positive or negative), a relationship (i.e. greater than, less than), a direction (i.e. up, down), or the like. The direction module 406, in certain embodiments, may determine a direction of deviation based on an encoding type used for storage cells of the solid-state storage media 110, based on a physical and/or electrical architecture of the storage cells of the storage media 110, or the like. For example, the direction module 406 may examine the bias deviation in the data set to determine a direction of deviation based on a storage media type (2-bit MLC, 3-bit MLC, n-bit-MLC), which page of a multi-phase programming model was read, an encoding type for the solid-state storage media 110 (such as a Gray code encoding type, a binary code encoding type, or the like), and/or a magnitude of the determined deviation. 204 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 The deviation module 404, in one embodiment, checks the read bias of each data set that the data set read module 402 reads. For example, if the data set read module 402 uses the monitor module 418, the deviation module 404 may monitor the read biases of data sets regularly as they are read from the solid-state storage media 110. The monitor module 418, in one embodiment, may compare read biases of each data set that is requested by a client. In a further embodiment, the monitor module 418 may check read biases of requested data sets for example at regular intervals, and/or in response to a command, or the like. In another embodiment, if the data set read module 402 uses the read error module 420, the deviation module 404 may check the read bias of a data set in response to a data error, as part of a testing operation, or the like. 203 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 As described in greater detail below with regard to FIG. 6C, in certain embodiments, the data set read module 402 may read a data set that includes only a subset of the bits stored by a grouping of multi-level storage cells, and the deviation module 404 may determine whether or not the read bias of the data set deviates from the known bias based on the subset of the bits. For example, a data set may include only data values from LSBs (lower pages), only values from MSBs (upper pages), or the like. In another embodiment, the deviation module 404 may determine whether or not a read bias of a data set deviates from a known bias based at least partially on an encoding type used for storage cells of the solid-state storage media 110, a physical and/or electrical architecture of the storage cells of the storage media 110, or the like. In other embodiments, the deviation module 404 may perform a transform on a data set that may combine data from different pages to include both LSB and MSB bits in a single data set, to coordinate LSB and MSB bits and/or pages from different data sets, or the like. 202 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 Thus, the MSB and LSB in the same multi-level storage cell may have different addresses in the storage device 102. In certain embodiments, the upper page includes the MSBs of a plurality of multi-level storage cells, and the lower page includes the LSBs of the same multi-level storage cells. Writes directed to the upper page may therefore cause changes only in the MSBs of the associated multi-level storage cells, while writes directed to the lower page cause changes only in the LSBs of the associated multi-level storage cells. 201 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In one embodiment, the data set or packet that the configuration module 352 receives has a known bias. The data set or packet has a known bias for one of at least three reasons. First, the data set or packet may have a known bias because the bias module 318 biased the data set or packet when the data set or packet was written. In one embodiment, the bias module 318 and/or the inverse bias module 332 cooperate with the configuration module 352, communicating the known bias to the configuration module 352. Second, the data set or packet may have a known bias because the data set or packet is read from a virgin, unwritten region of the solid-state storage media 110. For example, in one embodiment, virgin, unwritten regions of the solid-state storage media 110 may typically have a known bias of exclusively binary ones or exclusively binary zeroes in an unwritten state. Third, the data set or packet may have a known bias because the ECC decoder 322 has corrected the data set or packet and has determined the original, correct values of one or more bits of the data set that were in error. The correct values for the bits in the data set comprise this known bias. A deviation from the known bias caused by errors in the data set is an error bias. 153 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In another embodiment, the read data pipeline 108 includes a decompression module 336 that decompresses a data segment formatted by the depacketizer 324. In one embodiment, the decompression module 336 uses compression information stored in one or both of the packet header and the container label to select a complementary routine to that used to compress the data by the compression module 312. In another embodiment, the decompression routine used by the decompression module 336 is dictated by the device requesting the data segment being decompressed. In another embodiment, the decompression module 336 selects a decompression routine according to default settings on a per data structure type or data structure class basis. A first packet of a first object may be able to override a default decompression routine and a second packet of a second data structure of the same data structure class and data structure type may use the default decompression routine and a third packet of a third data structure of the same data structure class and data structure type may use no decompression. 162 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In another embodiment, the read data pipeline 108 includes a decryption module 334 that decrypts a data segment formatted by the depacketizer 324 prior to sending the data segment to the output buffer 330. The data segment may be decrypted using an encryption key received in conjunction with the read request that initiates retrieval of the requested packet received by the read synchronization buffer 328. The decryption module 334 may decrypt a first packet with an encryption key received in conjunction with the read request for the first packet and then may decrypt a second packet with a different encryption key or may pass the second packet on to the next stage of the read data pipeline 108 without decryption. When the packet was stored with a non-secret cryptographic nonce, the nonce is used in conjunction with an encryption key to decrypt the data packet. The encryption key may be received from a client 114, a computer 112, key manager, or other device that manages the encryption key to be used by the solid-state storage controller 104. 161 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In a further embodiment, the inverse bias module 332 converts the biased packets back to their original source data without using an indicator. Instead of using an indicator, the inverse bias module 332 may implement an algorithm that is the inverse operation of the bias module 318. This algorithm may inverse the bias for each data packet received and/or a select number of data packets received. In the depicted embodiment, the inverse bias module 332 is located between the ECC decoder 322 and the depacketizer 324. In a further embodiment, the inverse bias module 332 may be located elsewhere in the read data pipeline 108, based on the location of the bias module 318 in the write data pipeline 106. 160 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In one embodiment, the read data pipeline 108 includes an inverse bias module 332 that receives one or more requested biased packets from the ECC decoder 322, either directly or indirectly, and converts the one or more requested packets back to their original source form by reversing the biasing process of the bias module 318 prior to sending the one or more requested packets to the depacketizer 324. In one embodiment, the inverse bias module 332 may use one or more indicators stored by the bias module 318 to convert the biased packets back to their original source data. In certain embodiments, the inverse bias module 332 may provide a known bias, a read bias, and/or a deviation from a known bias for a packet or other data set to the configuration module 352, as described below with regard to FIG. 3B. 159 Added by DJM 3 2021 3/12/21, 12:00 AM
View Edit
Delete
US-8380915-A1 In one embodiment, the ECC encoder 304 creates independent ECC checkbits for each channel, storage element, die, chip, PEB, or other grouping of storage cells. The ECC checkbits are stored with the data on a particular grouping of storage cells rather than being distributed across multiple groupings. If ECC checkbits are created and stored independently for each grouping of storage cells, the configuration module 352, in response to a data error, may use the ECC checkbits and the known architecture for how an ECC checkbits are written to the groupings of storage cells to determine in which grouping of storage cells the data error occurred, and adjust the read voltage thresholds of those groupings. If ECC checkbits for the data packet are stored across multiple groupings of storage cells, the configuration module 352 may separately check the read biases of data sets from each grouping of storage cells and adjust one or more of the corresponding read voltage thresholds. An array of storage elements with multiple channels is described in greater detail with regard to FIGS. 6A and 6B. 158 Added by DJM 3 2021 3/12/21, 12:00 AM

Page 383 of 438, showing 20 record(s) out of 8,747 total