专利汇可以提供Encoding and rebuilding data for a DASD array专利检索,专利查询,专利分析的服务。并且An (M-1)xM data array can be rebuilt from an array of M DASDs when up to R DASDs fail, where M is a prime number, the data array being encoded to include zero XOR sums along traverses of slopes 0, 1, 2, ..., R-1, extended cyclically over the data array. The rebuilding includes calculating XOR-sums along the traversed paths of R slopes, cyclic and linear shifts and XOR operations, recovering the unavailable DASDs by means of iterative solution of a set of recursions, and finally writing the rebuilt array back to onto M recording paths inclusive of any spare paths.,下面是Encoding and rebuilding data for a DASD array专利的具体信息内容。
The present invention relates to a method and system for encoding data onto an array of M DASDs. The same system and method can subsequently be used to recover data if any of the DASDs become unavailable or are found to be in error.
One incarnation of a DASD array (RAID 3) designates synchronous access to multiple DASDs for storing data + parity with/without sparing. The data are segmented and written (striped) across the array in column major order. This accords with the typology provided by Patterson et al, "A Case For Redundant Arrays Of Inexpensive Disks (RAID)", Report No. UCB/CSD 87/391, December 1987, Computer Science Division, U. of California, Berkeley.
The parity coding and striping of data across multiple DASDs and the rebuilding of data after a single DASD failure by logically combining (XORing) remaining available blocks was introduced by Ouchi et al US Pat 4,092,732, "System for Recovering Data Stored in a Failed Memory Unit", issued 5/30/78. Also, the dynamic substitution of a formatted DASD for a failed unit ("hot sparing" was described for a single parity domain by Arvin Park et al, "Providing Fault Tolerance In Parallel Secondary Storage Systems", Dept. Computer Science, Princeton University, Report CS-TR-057-86, Nov.7, 1986. Likewise, dynamically configuring multiple parity domains and sharing of formatted spares by the domains was taught by Dunphy et al, U.S Pat 4,914,656, "Disk Drive Memory", issued 4/3/90.
Because RAID 3 arrays read and write parity coded segmented data to N+P synchronous DASDs (N data and P parity DASDs), the data rate increases by N*single DASD rate. Also, the logical track size increases by N*single DASD track length. The P parity DASDs permits the array to continue operation even where one or more. DASDs have failed (degraded mode). The failure limit is based on the properties of the parity coding, the amount of spare storage capacity, the time available to reconstitute missing data, the likelihood of multiple/concurrent failures etc.
In degraded mode where P = 1, if the parity DASD is the one that is unavailable, the data is nonetheless accessible, N blocks at a time, from the N data DASDs. If one of the data DASD is the one that has failed, then it is necessary to rebuild the missing block from each referenced stripe or ordered segment set by logically combining the remaining blocks from the same stripe or set. Since this operation must be performed for each access, it substantially lowers throughput.
Where a formatted spare DASD is substituted for a failed DASD and data rebuilt and rewritten on said spare (rebuild mode), throughput returns to its normal rate. The array is said to change from a degraded to a normal (fault tolerant) mode. It should be noted that the rebuild and rewriting of the missing data onto a spare DASD may be done on a scheduled or opportunistic basis. Relatedly, the array becomes prone to total disablement should another failure occur while in degraded or rebuild modes.
Blaum et al, USSN: 07/653,596, "Method and Means for Encoding and Rebuilding Data Contents of Up to Two Unavailable DASDS in an Array of DASDS", filed 02/11/1991, European Application 92300586.2 (IBM Ref. No. SA9-90-055) teaches a method for coding and rebuilding an (M-1)xM bit data array onto an M synchronous DASD array when up to two DASDs fail, M being a prime number. Pairs of simple parities are recursively coded in respective diagonal major and intersecting row major order data array directions. This covers the array as if it were a topological torus. Rebuilding data upon unavailability of no more than two DASDs requires repeating the coding step where the diagonals are oppositely sloped and writing the rebuilt array back.
"Data error" means any change in stored value as a consequence of a random noise or burst process. In systems storing binary values such as 1 1 1 0 0 1 0 0, remnant magnetization states change such that some 1′s become 0′s and some 0′s become 1′s. This might appear as 1 1 0 0 0 1 0 1. Here, the values in the 3rd and 8th positions from the left are random errors. A run of errors due to a burst source might appear as 1 1 1 1 1 1 1 0. Note, while the first seven consecutive positions were overwritten, only positions 3 through 7 are actually in error.
"Erasure" is the removal of any data value in a storage location. For example, the data string 1 x x x x 1 0 0 omits any binary values in positions 2 through 5.
Parity codes detect and correct errors in different data contexts. These include communication over noisy channels and recording of interleaved bits, bytes, or blocks on DASD arrays. Simple parity codes are favored because of processing simplicity (XORing to recover lost block) and the parity domain can be made very large (redundancy/data storage is very small).
It is known that detection and correction of errors of data stored in finite and semi-infinite arrays such as DASDs or on magnetic tape using simple parity codes could be enhanced by taking parity diagonally and transversely across a data array as well as longitudinally. These parity codes are of the block type meaning that the actions taken with respect to one finite array are independent of the actions taken in its neighbors. This avoids the propagation of error or mistake from block to block as may be possible in codes of the cyclic type.
Eachus, USP 3,685,016, "Array Method And Apparatus For Encoding Detecting And/Or Correcting Data", issued 8/15/1972, discloses a majority logic error detection method as applied over near infinite strings of convolutional coded data. In Eachus, an N*K data array uses a decode of a first check segment over N bits as a series of XOR additions along each column of the array, N being a prime number. Eachus also discloses the decoding of second and third check segments over N bits as a series of XOR additions along a series of respective left and right diagonals taken across the array.
Patel, USP 4,201,976, issued 5/6/1980 and Patel, USP 4,205,324, issued 5/27/1980 extended Eachus through the use of spare rows and columns. The rows supported diagonal and transverse parity to enhance error correction in a multiple track magnetic tape stored data system
Patel's methods were based upon Prusinkiewicz and Budkowski, "A Double Track Error Correction Code for Magnetic Tape", IEEE Trans. on Computers", pp 642-645, June 1976. It constitutes a cyclic code defined over a near infinite field i.e. a convolution code over an infinite tape. Patel added a second diagonal. Disadvantageously, an error in the convolutional code propagates throughout the encoded sequence, however long. Block codes limit error propagation to the individual length.
Schilling et al, USP 4,796,260, "Schilling-Manela Forward Error Correction and Detection Code Method and Apparatus", issued 1/3/1989 discloses the use of two sets of differently sloped diagonal parity determinations over an arbitrarily sized G*H data array.
Accordingly the invention provides a method for encoding data onto an array of M DASDs, comprising the steps of:
Preferably the coding and writing steps further include the steps of generating the data array across a two-dimensional distribution of DASDs, or along a first dimension formed from M DASDs and a second dimension formed from (M-1) predetermined recording extents on at least one track of each of M DASDs. It is also preferred that each of the M traverse lines of a given slope commences in the top row of the data array, and exhibits even parity.
A (M′-1)xM′ data array, where M′ is not a prime number, can be encoded by first expanding the data array to include additional columns of uniform data to yield an effective array of (M-1)xM, where M is a prime number.
The invention also provides a method of rebuilding data encoded using any above method onto spare DASDs, responsive to R DASDs being unavailable (R ≦ P), comprising parity coding the array elements from the M-R available DASDs onto the spare DASDs, said coding being executed on a traverse along lines of slopes 0, 1, 2, ... R-1 respectively extended cyclically over the array, the coding logically combining data array elements included within each traverse slope such that they sum to a predetermined value.
Thus encoding and rebuilding can be performed using the same process, the former generating the contents of parity DASDs by treating them as containing initially unavailable data.
The invention further provides data processing system having a CPU, an array of at least M = N data + P parity DASDs, and means inter-coupling the CPU and the array for accessing selectable ones of the DASDs, said means including means for read and write accesses of M data elements striped over M DASDs, said inter-coupling means comprising means for parity block coding and writing M data elements from an (M-1)xM data array to the M DASD array, said coding being executed on a traverse along lines of slopes 0, 1, 2, ... P-1 respectively extended cyclically over the array, the coding logically combining data array elements included within each traverse slope such that they sum to a predetermined value.
Preferably the intercoupling means includes means for synchronously accessing said array of M DASDs.
Likewise this the same system can be used for rebuilding data encoded using the above system onto spare DASDs, wherein the means for parity coding the array elements from the M-R available DASDs onto the spare DASDs is responsive to R DASDs being unavailable (R ≦ P) to execute the coding on a traverse along lines of slopes 0, 1, 2, ... R-1 respectively extended cyclically over the array, the coding logically combining data array elements included within each traverse slope such that they sum to a predetermined value.
In addition to a DASD system, the invention also provides a recording system having M = N data + P parity parallel recording paths, and means for reading and writing across a subset at a time of said M paths, said system comprising means for parity block coding and writing M data elements from an (M-1)xM data array to the M paths, said coding being executed on a traverse along lines of slopes 0, 1, 2, ... P-1 respectively extended cyclically over the array, the coding logically combining data array elements included within each traverse slope such that they sum to a predetermined value.
Thus the encoding/rebuilding of the invention enhances the availability of a DASD array in the presence of data errors, erasures, and DASD failures and allows rebuilding of the data contents including erasures of up to a predetermined number R of unavailable DASDs in an array of M DASDs. A degraded mode operation is permitted even in the presence of more than one DASD failure and method provided of simple parity group coding and data rebuilding on a spare DASD that returns the DASD array to fault tolerance. The simple parity coding and XOR operations thereby avoids multiplications over finite fields as found in standard Reed- Solomon codes, executes only XOR parity coding over the block rather than convolutional type coding as described in Patel, and reduces the number of operations associated with executing a write update and simple parity encoding.
This is accomplished by the steps of (a) simple parity coding over a data array of critical dimension; (b) striping and writing the parity coded data array to a DASD array; and (c) responsive to up to a predetermined number R of DASD failures, rebuilding the data on a patterned or random basis by accessing the data array and repeating steps (a) and (b) where the recursion is but slightly modified to take the unavailable DASDs into account.
In a DASD array of M = N data + P parity + S spare DASDs, the R unavailable DASDs can be rebuilt where R ≦ P. Alternatively, up to one DASD in error can be corrected in the presence of up to R-2 unavailable DASDs for R ≦ P.
In processing, an (M-1)xM bit or byte data array is emulationally extended cyclically in the sense that a dummy "phantom" of 0′s is added to obtain an M*M bit or byte data array. Then, the last row is followed by the first column and the last column is followed by the first column. In other words, both rows and columns are considered following a cyclic order.
More particularly, the coding steps (a) or (c) include a recursion to generate a preselected number R of simple parity encodings over bits within an (M-1)xM data bit array. The generation takes place using parity along lines of different slopes. The array size M must be a prime number.
Next, at completion of coding the data array or portions thereof, (M-1) bits or bytes at a time in vertical order are striped and written to counterpart ones of M failure independent DASDs. Lastly, responsive to the unavailability of up to a preselected number R of DASDs, unavailable data is rebuilt from no less than (M-R) available DASDs by accessing the data array inclusive of erasures and repeating steps (a) and (b) on a scheduled or opportunistic basis in the same manner as the parity coding was originally processed.
It is also possible to rebuild and rewrite one DASD in error and up to R-2 unavailable DASDs where R ≦ P. The DASD in error requires the redundancy equivalent of two parity DASDs to identify and correct the errant unit.
It should be appreciated that the (M-1)xM array is one in which lines of different slopes exhibit even parity. Bits forming a referenced byte for instance are read vertically. Arbitrarily, a traverse would start in the upper left hand corner defining thereby M lines of a given slope. With such multiple coded traversal parity, it follows that such an (M-1)xM array code can recover a preselected number R of erased bytes if and only if M is a prime number.
If the array reserves several DASDs as spares or otherwise reserves space on the DASDs within the array, then spares may be substituted for failed DASDs and rebuilt data written to the M DASD array inclusive of the spares.
In the case of DASD arrays where no more than three DASD may fail, the method includes (a) parity coding and writing an (M-1)xM data bit or byte array onto the M DASDs by following a traverse emulating the positively sloped motions of a chess rook, bishop, and knight extended cylically over the data array such that the logically combined (XORed) values over the traverses sum to zero, M being a prime number; and (b) responsive to the unavailability of up to three DASDs, rebuilding the data by repeating the coding step using data from the M-1 to M-3 available DASD′s on a scheduled or opportunistic basis and rewriting the rebuilt data onto spare DASD array capacity.
Thus the data contents of up to R ≦ P unavailable DASDs in an array of M = N data + P parity + S spare DASDs, can be encoded/rebuilt by:
The array of M DASDs can be synchronous. Repeating steps (a) and (b) results in correction of one DASD in error and up to R-2 unavailable DASDs, where R ≦ P: Typically the lines of different slopes exhibit even parity, and the (M-1)xM data array as mapped onto a logical plane includes an upper left hand corner, each traverse being initiated in the upper left hand corner of the (M-1)xM data array defining thereby M lines of a given slope. Traverses of slopes 0, 1, and 2 emulate the positively sloped motions of a chess rook, bishop, and knight upon a logical chessboard projection of the (M-1)xM data array.
An embodiment of the invention will. now be described by way of example with reference to the following drawings:
Figure 1 shows a synchronous DASD array illustrating striping, parity encoding, sparing, and data redo on spares.
Figures 2-4 relate to the coding step for rebuilding up to three unavailable DASDs in which an (M-1)xM data array is traversed in patterns emulating the chessboard moves of a rook, bishop, and knight exhibiting respective slope traversals of 0, 1, and 2.
Figure 5 exemplifies of a 4 x 5 data array with zero parity along all possible traverses of slopes 0, 1, and 2.
Figure 6 shows a layout for solving a recursion yielding the contents of the unavailable DASD's.
Figure 7 depicts a selector unit utilized in the layout processing shown in figure 6.
Figure 8 illustrates a logical gate implementation of the selector unit shown in Figure 7.
Referring now to figure 1, there is shown an array comprising a first and second DASD parity group coupling an intelligent parity generating and striping buffer (PSB) 7 over parallel paths 11, 13, 15, and 17. A processor array formed from CPU1 and CPU2 is coupled to data and control bus 9.
Processor 1 or 3 originated read and write commands establish a table directed access path to a parity group of DASDs by way of a standard accessing protocol and data movement over bus 9 shared memory 5 to PSB 7. The logical processing of a logical files is executed at PSB 7 In this regard, logical processing includes both striping (serial/parallel conversion of data) and parity generation and checking. The paths to and from the DASDs are table directed. In principle, an address specified in a read or write argument is translated by the PSB 7 via an array storage address table into the actual physical path between PSB 7 and the location on the DASDs of the requisite parity group.
To execute a write command, PSB 7 must first buffer the new data from the processor, read and buffer the. (M-1)xM data array from the DASD parity group within which the striped or interleaved elements of the block are to be written, recursively recompute the array including new designated diagonal and row parities taking the old data, old parity, and new data into account, and then rewrite the modified data array back onto the DASD parity group. For a read operation, PSB 7 responsive to a read command from a processor performs inverse operation sequence to that of writing. That is, the data array within which the data to be read must be extracted is buffered in PSB 7, appropriate row and diagonal parities tested, and the addressed data transferred across bus 9 to shared memory 5.
In the event that a DASD failure occurs while read accessing data, PSB 7 can select one from a number of alternatives. These include regenerating corrupted data on-the-fly by either (1) retry of the read command or (2) reconstruction of the data from remaining DASDs and replacement.
With respect to the processor 1 or 3 originating the read command, one strategy is to notify it of the failure occurrence only AFTER completion of the read data movement. This would permit the processor to control substitution of a spare DASD from a pool or from a DASD reserved exclusively to each parity group in the manner of Park et al. Responsive to processor commands such as DISABLE and RECONSTRUCT, PSB 7 can cause the failed DASD to be replaced with a designated spare DASD by table substituting the directory path to the spare for the table directory path of the failed DASD. Next, the data on the failed DASD can be rebuilt on the designated spare DASD.
PSB 7 can store a bit map of DASD availability and address map of the DASDs. In turn, the availability and address maps are referenced during the processing of each access command. Alterations to the maps may be originated by the processor using the DISABLE and RECONSTRUCT commands. In such an implementation, a permanent address is assigned to the SPARE DASD. Significantly, after failure notification, the processor 1 or 3 can interact with the address map of the DASDs. In turn, the availability and address maps are referenced during the processing of each access command. Alterations to the maps are originated by the processor using the DISABLE and RECONSTRUCT commands. The present implementation assigns a permanent address to the SPARE DASD.
Significantly, after failure notification, the processor can
Note, the dynamic substitution of a spare formatted DASDs for other DASDs online is termed "hot sparing".
It should be appreciated that where an M DASD array has M = N data + P parity + S spare DASDs, that any (M-1)xM data array including up to R unavailable DASDs, where R ≦ P can be rebuilt and rewritten on R ≦ S available spares. Also, where one DASD is in error it can be corrected even if it is in the presence of up to R-2 unavailable DASDs.
Illustratively, coding and rebuilding a data bit or byte array stored on an M DASD array for up to three unavailable DASDs will now be described. Referring now to figures 2-4, there is shown an encoded (M-1)xM data bit or byte array. The coding step assumes an M-th dummy row, referred to as a "phantom" row, which is all-zero. This row is not part of the coded data and, as such, need not be physically present. For the sake of clarity, however, it is drawn in the figures 2 to 5 where the coding features are described for the case of M = 5 DASDs.
Referring now to figure 2, there is illustrated the M slope-0 parity lines, which can be thought of as the traverse of a rook moving on a chesssboard. Namely, once coded, the parity along each horizontal line, that is each row in the array, must be even. Each parity line is marked by a different symbol (diamond for the first row, triangle for the second, etc.).
Referring now to figure 3, there is exhibited the M slope-1 parity lines, resembling the bishop moves on a chessboard. The first square (= array entry) in each such parity line. can be arbitrarily chosen, and consecutive squares are traversed by one-square-right and one-square-up moves, until the first square is revisited. All M slope lines are pairwise disjoint. Once coded, the array has even parity along these traverses.
Referring now to figure 4, there is depicted the M slope-2 parity lines, resembling the knight moves on a chessboard. Again, the first square is arbitrary, and subsequent squares are defined by consecutive one-square-right and two-squares-up moves, until the first square is reached. As in the slope-0 and slope-1 case, all M slope-2 lines are pairwise disjoint, and any coded array has even parity simultaneously along all the 3xM = 15 parity lines shown in Figures 2 to 4.
Referring now to figure 5, there is set out an example of a 4 x 5 data bit or byte array, with an appended phantom row, and such that all aforementioned 15 lines have even parity i.e., the XOR-sums along all these lines is zero.
As shown in the following examples, the encoding process allocates M-R = 2 DASDs (columns) in the array for storing the original data, and computes R = 3 redundant remaining DASDs (columns). The rebuilding process recovers the contents of up to R = 3 unavailable DASDs. Both processes, the encoding and rebuilding, are carried out by the same algorithm and, thus, can be implemented by the same piece of hardware. More specifically, the encoding process is regarded as the rebuilding process applied to the last R = 3 DASDs, regarded as unavailable ones.
The first step of the encoding-rebuilding method is calculating XOR-sums along the parity lines, M XOR-sums for the slope=0 lines, M sums for the slope=1 lines, and M sums for the slope=2 lines.
The second step is calculating an auxiliary row using basic bit-rotation, bit-shift, and XOR operations.
The third step calculates an associated base M-bit cell for each unavailable DASD. That is, up to three base M-bit cells altogether. The computation of each such M-bit cell requires only bit-rotation and XOR operations.
The fourth step extracts the contents of each unavailable DASD out of its associated base M-bit cell. To this end, up to R-1 = 2 recursions are solved for each unavailable DASD. A preferred layout for this purpose is given in Figures 6, 7, and 8.
Referring now to figure 6, there is shown a layout consisting of an M x M data bit or byte array. This layout may coincide with the space required to store the read/written DASDs, with each column in Figure 6 corresponding to one DASD. Each element in the array is capable of storing one bit, and, addition, each such element is equipped with a selector unit which has two data inputs, x and y, two outputs, u and v, and an input control bit s (Figure 7). When s = 0, the selector is in 'transparent mode', in which case the input x is directed into u and the input y is directed into v. By setting s = 1, the selector switches into 'active mode', where the input y is now directed into u and the XOR-sum x + y is directed into v. Figure 8 shows an example of a hardware implementation of this selector unit.
The input data to each recursion computation is depicted in figure 6 at the leftmost column (the 'a' values), whereas the output values ('b') are eventually computed into column 'm'. In order to perform the recursion necessary for the above- mentioned fourth step, the selectors in certain columns, namely 'l' and 'm', are set to 'active mode', whereas those in the other columns are set to 'transparent mode'.
The specific choice of 'l' and 'm' depends both on the location of the current unavailable DASD being recovered, and on which one, out of the at most two recursions required for that particular unavailable DASD, is now being performed. The last output value. (the 'b' value at the bottom) is initially set to zero, and information now flows and XORed up along the lines connecting the 'active' selectors in a zig-zag fashion, with the array, as before, extended cyclically.
In the event when the encoding-rebuilding algorithm is applied for encoding, only the last R = 3 columns in the array will eventually be active.
In both the encoding and decoding/reconstruction examples to follow, the DASD array comprises five synchronous DASDs C0-C4. C0 and C1 are assigned to store data while C2, C3 and C4 are reserved for storing simple parity. It is assumed that the array is bit interleaved. This means that three bits and two parity bits (M=5) are read or written to C0-C4 at a time. Thus for M=5, the data array has the dimension 4x5.
Given an (M-1)xM data array where M = a prime number and the last row S4 is dummy to facilitate visualization of the wrap-around parity lines. We assume that columns C1, C2 and C4 are rendered unavailable, while we attempt to reconstruct them from columns C0 and C3. Since we are trying to retrieve 3 columns, we assume that the array has parity along the lines of slope 0 (rook), slope 1 (bishop) and slope 2 (rook), as shown in figures 2, 3, and 4.
The polynomial notation below is slightly modified such that a polynomial in x expressed as 1 + X + X^2 where X^2 means X raised to the second power, etc.
Written as a polynomial on the variable X, C0 can be represented as
The array is assumed to be wrapped around in the manner of a torus It is required to find C1(X), C2(X) and C4(X). The decoding involves solving for the unknown C1(X), C2(X), and C4(X) in the following polynomial equations:
where sigma1(X), sigma2(X), and sigma4(X) are certain polynomials of degree ≦ 3, and the above equations hold modulo the polynomial
There are 4 main steps in the decoding algorithm. The last step involves solving the recursions, while the first 3 steps find the right hand sides of the 3 equations, i.e., sigma1, sigma2 and sigma4.
Step 1: This step estimates the 3 syndromes. Each syndrome is a polynomial in X. The erased bits are assumed to be 0 for syndrome calculation. S0(X) is obtained by exclusiving-OR the 5 horizontal lines (rooks), S1(X) by exclusiving-OR the 5 lines of slope 1 (bishops) and S2(X) by exclusiving-OR the 5 lines of slope 2 (knights). The result of these calculations in the present array gives:
The 3 syndromes above are used to construct the so called syndrome polynomial in Z, denoted S(Z), whose coefficients are S0(X), S1(X) and S2(X). Hence,
Step 2: This step involves calculating the polynomial Q(Z) that is the product of the so called erasure locator polynomial with the syndrome polynomial calculated in step 1. The erasure locator polynomial is defined as:
Notice that the powers of X, i.e., 1, 2 and 4 correspond to the erased columns. We find Q(Z)=R(Z)S(Z) recursively.
The initial value for Q(Z) is set as S(Z). Q(Z) is then set as (1+XZ)Q(Z), thus:
Multiplying by X is cyclic on the polynomials on X modulo X^ 5.
So,
and
This gives
Similarly, in the next recursion we set Q(Z) as (1+X^2)Q(Z). So,
Finally, in the last recursion we set Q(Z) as (1+X^4)Q(Z), giving
This is the end of step 2 of the algorithm.
Step 3: In this step the right hand sides of the recursion are found, i.e., the coefficients sigma1(X), sigma2(X) and sigma4(X).
In the previous step, it was found:
The value sigma1(X) is given by the coefficient 2 of dividing Q(Z) by 1+XZ. Similarly, sigma2(X) is given by the coefficient 2 of dividing Q(Z) by 1+X^2Z and sigma4(X) is given by the coefficient 2 of dividing Q(Z) by 1+X^4Z. Next, each of these values is recursively determined.
Starting with sigma1(X). Initially, sigma1(X) is set as Q0(X)=1+X^2. In the next recursion, sigma1(X) is set as
The final recursion for sigma1(X) sets
A similar procedure is applied to sigma2(X). The initial value is set as Q0(X)=1+X^ 2. Then:
and finally,
For sigma4(X), the initial value is also set as Q0(X)=1+X^2. Then,
and finally,
Step 4: This is the final step of the algorithm. It performs a double recursion for each of the missing values C1(X), C2(X) and C4(X). It is necessary to solve
Starting with the first equation, let (X+X^ 4)C1(X)=C1′(X), so we have to solve:
Let C1′(X)=a0+a1X+a2(X^ 2)+a3(X^ 3). It is necessary to find a0, a1, a2, a3 and a4. Notice that:
so
Now, excluding terms in X^ 4, it should be remembered that the final result has to be given in polynomials of degree at most 3. From now on, X^ 4 is replaced by 1+X+X^ 2+X^ 3, so the equation becomes:
Notice that
Solving the recursion, we start by:
a2=1,
a2+a1+a3=0, so a1+a3=1,
a1+a0+a3=0, so a0=1,
a0+a3=1, so a3=0,
and since a1+a3=1, we get a1=1.
So,
Next, the recursion (X+X^ 4)C1(X)=C1′(X)=1+X+X^ 2 should be solved.
This gives
If C1(X)=a0+a1X+a2(X^ 2)+a3(X^ 3),
Solving, we obtain
a3=0, a0+a1=1, a2=1, a1=0 and a0=1.
So,
Next, same process for C2(X) and C4(X) is repeated For C2(X), we have to solve
Define (X^ 2+X^ 4)C2(X)=C2′(X), so we solve
or
If C2′(X)=a0+a1X+a2(X^ 2)+a3(X^ 3), we have
This gives a2=1, a1+a3=1, a0=1, a3=1 and a1=0, so C2′(X)=1+X^ 2+X^ 3. Now we solve:
This gives
Making C2(X)=a0+a1X+a2(X^ 2)+a3(X^ 3), we have
So, a0=0, a3+a2=1, a1=0, a2=1 and a3=0. This gives, C2(X)=X^ 2.
Finally, it is necessary to solve
Define (X^ 2+X^ 4)C4(X)=C4′(X), so we solve
Making C4′(X)=a0+a1X+a2(X^ 2)+a3(X^ 3), we have
This gives a3=1, a0+a1=1, a2=1, a1=0 and a0=1. So,
The final recursion is
Making C4(X)=a0+a1X+a2(X^ 2)+a3(X^ 3), we have
So, a0=0, a3+a2=1, a1=0, a2=1 and a3=0. This gives,
C4(X)=X^ 2.
The final decoded array is then
The encoding is analogous to the decoding, except that the last 3 columns are missing.
The method and means expressed above will now also be articulated at the logical processing level. The next several paragraphs are directed to a structured pseudo-code type of presentation.
For rebuilding the data contents of up to R unavailable DASDs in a synchronous array of M ≧ R DASDs, requires:
Associating the above procedure with the last example, (a) computes the three syndromes S0(X), S1(X) and S2(X) of Step 1 in the example. The auxiliary row in (b) is the polynomial Q(Z) of Step 2, with its coefficients Q0(X), Q1(X), Q2(X), ... , standing for the M-bit cells. The base M-bit cells of (c) are the polynomials sigma1(X), sigma2(X), and sigma4(X) computed in Step 3. Finally, Step 4 of the example corresponds to (d) and (e).
For correcting one DASD in error in the presence of up to R-2 unavailable DASDs, requires:
The block parity coding, writing, and array rebuilding principles of this invention may be extended to data storage on magnetic or optical multi-track tapes consisting of many tracks where information is stored in parallel. Each bit or byte in a track is synchronous with every bit or byte in the same location in different tracks. Sometimes, loss of signal in one or more tracks makes the whole track unavailable to the user, so coding is employed in order to retrieve the information lost in the erased tracks. The logical processing of magnetic of optical multi-track tape storage proceeds on the same error detection and correction modality as that used with DASD arrays.
标题 | 发布/更新时间 | 阅读量 |
---|---|---|
一种基于学习的稀疏表示的超分辨率图像重建方法 | 2020-05-11 | 851 |
基于非凸非光滑二阶正则项和稀疏保真项的优化方法 | 2020-05-12 | 514 |
作业型飞行机器人的四自由度机械臂遥操作系统及方法 | 2020-05-13 | 644 |
成像信号提取装置及其使用方法 | 2020-05-12 | 185 |
保持锐利特征的三维重建方法及系统 | 2020-05-11 | 988 |
3D面部模型重建装置和方法 | 2020-05-11 | 75 |
一种基于人脸三维重建的改进PCA算法 | 2020-05-12 | 738 |
一种基于稀疏变换的低剂量CT图像重建方法 | 2020-05-08 | 649 |
一种图像超分辨率的方法、装置、电子设备及存储介质 | 2020-05-08 | 584 |
基于自样例增强的超分辨率图像重建方法 | 2020-05-08 | 276 |
高效检索全球专利专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。
我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。
专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。