JP2018198358A - Error correction program, and error correction device - Google Patents
Error correction program, and error correction device Download PDFInfo
- Publication number
- JP2018198358A JP2018198358A JP2017101669A JP2017101669A JP2018198358A JP 2018198358 A JP2018198358 A JP 2018198358A JP 2017101669 A JP2017101669 A JP 2017101669A JP 2017101669 A JP2017101669 A JP 2017101669A JP 2018198358 A JP2018198358 A JP 2018198358A
- Authority
- JP
- Japan
- Prior art keywords
- data
- damaged
- bit string
- exclusive
- integer
- 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.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
Description
本開示は、誤り訂正プログラム等に関する。 The present disclosure relates to an error correction program and the like.
データの記憶媒体への書き込み及び読み出しを行ったり、データの送受信を行ったりする場合、物理的なノイズや機器の障害等によって、データが破損するリスクが存在する。該リスクに対応するため、書き込みや送信の際にデータを冗長化し、データの一部に破損が生じた場合であっても該破損がある一定の範囲内であればデータを復元できる、種々の技術が開発されている。 When data is written to and read from a storage medium, or when data is transmitted and received, there is a risk of data corruption due to physical noise, equipment failure, or the like. In order to cope with this risk, data can be made redundant at the time of writing or sending, and even if a part of the data is damaged, the data can be restored if the damage is within a certain range. Technology has been developed.
特許文献1には、このようなデータを復元できる技術として、データをある一定のサイズに分割してデータブロックを生成し、このデータブロックを用いてガロア体の積演算に基づくパリティを含む2種類のパリティを生成し、データブロックとこれらのパリティとを冗長化されたデータとして用いる、という技術が開示されている。
In
しかしながら、特許文献1に開示されている技術(以下、従来技術)では、ガロア体の積演算に基づいてパリティを生成するため、処理負荷が大きいという問題があった。
本開示は、データの誤り訂正において、処理負荷を抑制することを目的とする。
However, the technique disclosed in Patent Document 1 (hereinafter, “prior art”) has a problem that the processing load is large because parity is generated based on a Galois field product operation.
An object of the present disclosure is to reduce processing load in error correction of data.
上記課題に鑑みてなされた本発明の一側面に係る誤り訂正プログラムは、ビット長がlであるN個(Nは2以上の整数)のAデータ(n)(nは0〜N−1の整数)から冗長化データを生成すると共に、冗長化データからAデータ(n)を生成する装置としてコンピュータを動作させる。誤り訂正プログラムは、生成部、特定部、及び、復元部を備える。 An error correction program according to one aspect of the present invention made in view of the above problem is provided with N pieces of N data (where N is an integer of 2 or more) A data (n) (n is 0 to N-1). Redundant data is generated from the integer) and the computer is operated as a device that generates A data (n) from the redundant data. The error correction program includes a generation unit, a specification unit, and a restoration unit.
ここで、2進数で表した値における0又は1の値の並びを、ビット列とする。また、Aデータ(n)が示すビット列を、A(n)とする。また、A(n)の各々に対応する整数であって、各整数は他の整数とは異なる値を有する整数を、S(n)とし、S(n)の最大値をSmaxとする。また、A(n)に対応しており、ビット長がSmaxとlとを加算した値であるビット列を、B(n)とし、B(n)は、S(n)を指数として2を累乗した値と、A(n)が示す値とを乗算した値を示す。また、全てのA(n)の排他的論理和を示すビット列であるP1を示すデータを、P1データとし、全てのB(n)の排他的論理和を示すビット列であるP2を示すデータを、P2データとする。 Here, a sequence of 0 or 1 values in binary values is a bit string. A bit string indicated by A data (n) is A (n). An integer corresponding to each of A (n) and each integer having a value different from the other integers is S (n), and the maximum value of S (n) is Smax. A bit string corresponding to A (n) and having a bit length obtained by adding Smax and l is B (n), and B (n) is a power of 2 with S (n) as an exponent. A value obtained by multiplying the obtained value by the value indicated by A (n) is shown. Further, data indicating P1 which is a bit string indicating exclusive OR of all A (n) is P1 data, and data indicating P2 which is a bit string indicating exclusive OR of all B (n) is Let it be P2 data.
生成部は、Aデータ(n)に基づきP1データ及びP2データを生成し、Aデータ(n)、P1データ、及び、P2データの各々について、当該データの誤りを検出するための付加データを生成し、Aデータ(n)、P1データ、P2データ、及び、付加データを、冗長化データとする。 The generation unit generates P1 data and P2 data based on the A data (n), and generates additional data for detecting an error in the data for each of the A data (n), P1 data, and P2 data. The A data (n), P1 data, P2 data, and additional data are made redundant data.
また、特定部は、冗長化データに含まれる付加データに基づき、該冗長化データに含まれるAデータ(n)、P1データ、及び、P2データのうちの破損しているデータを特定する。 Further, the specifying unit specifies damaged data among the A data (n), the P1 data, and the P2 data included in the redundant data based on the additional data included in the redundant data.
また、復元部は、冗長化データにおいて、Aデータ(n)のうちの2つが破損しており、且つ、P1データ及びP2データが破損していない場合に、冗長化データに基づき、破損している2つのAデータ(n)を復元する。 In addition, in the redundant data, the restoration unit is damaged based on the redundant data when two of the A data (n) are damaged and the P1 data and the P2 data are not damaged. The two existing A data (n) are restored.
また、破損している2つのAデータ(n)のnの値を、f0、f1(f0、f1は0〜N−1の整数)とし、破損していないAデータ(n)のnの値を、t(tは、0〜N−1の整数であって、f0、f1以外の整数)とする。また、A(f0)とA(f1)との排他的論理和を示すビット列を、X0とし、B(f0)とB(f1)との排他的論理和を示すビット列を、X1とする。また、B(f0)において、当該B(f0)に含まれるA(f0)の最下位ビット、最上位ビットに相当するビットの位置を、それぞれ、bl、bmとし、X1におけるblからbmまでのビット列を、X1Aとする。 The values of n of the two damaged A data (n) are f0 and f1 (f0 and f1 are integers of 0 to N-1), and the value of n of the A data (n) that is not damaged Is t (t is an integer of 0 to N-1 and is an integer other than f0 and f1). A bit string indicating the exclusive OR of A (f0) and A (f1) is X0, and a bit string indicating the exclusive OR of B (f0) and B (f1) is X1. Also, in B (f0), the positions of the bits corresponding to the least significant bit and the most significant bit of A (f0) included in the B (f0) are bl and bm, respectively, and from bl to bm in X1 Let the bit string be X1A.
また、復元部は、全てのA(t)とP1との排他的論理和を算出することで、X0を算出し、A(t)に基づき算出された全てのB(t)とP2との排他的論理和に基づき、X1Aを算出する。また、S(f0)とS(f1)との差の絶対値を指数として2を累乗した値を、Sとし、A(f1)が示す値をSで除算した値を示す、ビット長がlであるビット列、又は、A(f1)が示す値をSで乗算した値を示すビット列における、最下位ビットから並ぶビット長がlであるビット列を、A´(f1)とする。復元部は、X0とX1Aとの排他的論理和を算出することで、A(f1)とA´(f1)との排他的論理和であるX2を算出し、X2に基づきA(f1)を特定し、特定したA(f1)と、P1又はP2とに基づき、A(f0)を特定し、特定したA(f0)及びA(f1)に基づき、Aデータ(f0)及びAデータ(f1)を復元する。 Further, the restoration unit calculates X0 by calculating an exclusive OR of all A (t) and P1, and calculates all B (t) and P2 calculated based on A (t). X1A is calculated based on the exclusive OR. A value obtained by dividing the absolute value of the difference between S (f0) and S (f1) by an exponent is set to S, and S is a value obtained by dividing the value indicated by A (f1) by S. Or a bit string having a bit length of 1 from the least significant bit in a bit string indicating a value obtained by multiplying the value indicated by A (f1) by S and the value indicated by A (f1) is A ′ (f1). The restoration unit calculates X2 which is the exclusive OR of A (f1) and A ′ (f1) by calculating the exclusive OR of X0 and X1A, and calculates A (f1) based on X2. Based on the identified A (f1) and P1 or P2, the A (f0) is identified, and the A data (f0) and the A data (f1) are identified based on the identified A (f0) and A (f1). ).
このような構成によれば、ガロア体の積演算を用いること無く、排他的論理和等を用いてデータの誤り訂正が行われるので、データの誤り訂正において処理負荷を抑制することができる。 According to such a configuration, since error correction of data is performed using exclusive OR or the like without using Galois field product operation, the processing load can be suppressed in error correction of data.
なお、上記構成において、復元部は、Aデータ(n)のうちの1つであるAデータ(f2)(f2は0〜N−1の整数)が破損しており、且つ、P1データが破損していない場合に、破損していないAデータ(n)をAデータ(t)(tは、0〜N−1の整数であって、f2以外の整数)とし、全てのA(t)とP1との排他的論理和をA(f2)として算出し、算出したA(f2)に基づきAデータ(f2)を復元しても良い。 In the above configuration, the restoration unit has corrupted A data (f2) (f2 is an integer from 0 to N-1) which is one of A data (n), and P1 data is corrupted. If not, A data (n) that is not damaged is A data (t) (t is an integer from 0 to N-1 and is an integer other than f2), and all A (t) An exclusive OR with P1 may be calculated as A (f2), and A data (f2) may be restored based on the calculated A (f2).
このような構成によれば、P1が破損していない場合に、破損しているデータを特定することができる。
また、上記構成において、復元部は、Aデータ(n)のうちの1つであるAデータ(f3)(f3は0〜N−1の整数)が破損しており、且つ、P2データが破損していない場合に、破損していないAデータ(n)をAデータ(t)(tは、0〜N−1の整数であって、f3以外の整数)とし、全てのB(t)とP2との排他的論理和をB(f3)として算出し、算出したB(f3)に基づきAデータ(f3)を復元しても良い。
According to such a configuration, damaged data can be identified when P1 is not damaged.
Further, in the above configuration, the restoration unit has corrupted A data (f3) (f3 is an integer of 0 to N-1) which is one of A data (n), and P2 data is corrupted. If not, A data (n) that is not damaged is A data (t) (t is an integer from 0 to N-1 and is an integer other than f3), and all B (t) and An exclusive OR with P2 may be calculated as B (f3), and A data (f3) may be restored based on the calculated B (f3).
このような構成によれば、P2が破損していない場合に、破損しているデータを特定することができる。
また、上記構成において、誤り訂正プログラムは、冗長化データを1つのコンピュータファイルとして出力するように構成されてもよい。このような構成によれば、冗長化データを1つのデータとして扱うことができるので、ユーザにとっての利便性が向上する。
According to such a structure, when P2 is not damaged, the damaged data can be specified.
In the above configuration, the error correction program may be configured to output the redundant data as one computer file. According to such a configuration, the redundant data can be handled as one data, so that convenience for the user is improved.
なお、上述した誤り訂正プログラムにより動作するコンピュータに相当する、誤り訂正装置を構成してもよい。このような場合であっても、同様の効果を得ることができる。 Note that an error correction apparatus corresponding to a computer that operates according to the above-described error correction program may be configured. Even in such a case, the same effect can be obtained.
以下、本発明の実施形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. The embodiment of the present invention is not limited to the following embodiment, and can take various forms as long as they belong to the technical scope of the present invention.
[1.構成の説明]
図1Aは、本実施形態の誤り訂正装置として作動する周知のPC1の構成を示している。PC1は、ディスプレイ10、HDD20、CPU30、ROM40、RAM50、入力装置60等を備える。
[1. Description of configuration]
FIG. 1A shows a configuration of a well-known
ディスプレイ10は、映像信号に基づき、CPU30等にて生成された映像を表示する。入力装置60は、キーボード、マウス等から構成され、ユーザから受け付けた操作に応じた信号をCPU30に出力する。ROM40は読み出し専用の不揮発性メモリであり、HDD20は読み出し、書き込み可能な不揮発性メモリである。ROM40、HDD20には、CPU30が読み出して実行するプログラム等が予め記憶されている。RAM50は読み出し、書き込み可能な揮発性メモリであり、CPU30がROM40、HDD20に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存したり、作業用のデータを一時的に保存したりするための記憶領域として用いられる。
The
CPU30は、OSをHDD20から読み出して実行し、HDD20に記憶されている各種プログラムをOS上のプロセスとして実行する。このプロセスにおいて、CPU30は入力装置60から信号の入力を受け付け、ディスプレイ10に表示する映像を生成し、RAM50、HDD20に対してデータの読み出し、書き込みの制御を行う。
The
PC1には、本実施形態の誤り訂正プログラムがインストールされている。誤り訂正プログラムは、HDD20に保存されていると共に、OS上のプロセスとして実行されるアプリケーションの1つであり、誤り訂正プログラムを動作させることで、PC1は誤り訂正装置として稼働する。なお、誤り訂正装置を、PC1以外の電子装置として構成しても良い。
The error correction program of this embodiment is installed in the PC1. The error correction program is one of applications that are stored in the
[2.動作の説明]
(1)概要について
まず、誤り訂正プログラムの概要について説明する。以下の説明では、誤り訂正プログラムが処理を行うといった記載がなされているが、これは、誤り訂正プログラムに従い動作するPC1のCPU30が処理を行うということを意味するのは、言うまでも無い。
[2. Explanation of operation]
(1) Outline First, the outline of the error correction program will be described. In the following description, it is described that the error correction program performs processing, but it goes without saying that this means that the
誤り訂正プログラムは、冗長化の対象となるデータ(以下、オリジナルデータ)から冗長化データを生成する生成部と、冗長化データにおいて破損しているデータを特定する特定部と、破損しているデータを復元する復元部と、を備える。ここでいう冗長化データとは、オリジナルデータが冗長化されたデータのことである。冗長化とは、オリジナルデータに該オリジナルデータ以外の情報を追加することによって耐障害性を向上させること、をいう。 The error correction program includes a generating unit that generates redundant data from data to be redundant (hereinafter referred to as original data), a specific unit that identifies data that is damaged in the redundant data, and damaged data. And a restoration unit for restoring. Redundant data here refers to data in which original data is made redundant. Redundancy refers to improving fault tolerance by adding information other than the original data to the original data.
なお、ここでいうオリジナルデータとは、PC1に搭載されたプログラムを用いて作成された任意のデータをいう。オリジナルデータには、例えば、入力装置60を介してユーザから受け付けた操作に応じて、PC1に搭載されたプログラム(一例として、CADプログラム)を用いて作成された、ビル、家屋等の建築物を含む各種構造物(以後、建設物)を建設するための三次元の設計図を表すデータが含まれうる。但し、これに限定されるものではなく、オリジナルデータには、PC1に搭載されたプログラムを用いて作成された、種々の設計図を表すデータが含まれうる。
The original data here refers to arbitrary data created using a program installed in the
誤り訂正プログラムにおいて、生成部は、後述する図3に示すように、冗長化データを生成する冗長化処理を実行する。また、誤り訂正プログラムにおいて、特定部及び復元部は、後述する図4、図5、図8に示すように、冗長化データにおいて破損しているデータを特定し、破損しているデータを復元する復元処理を実行する。以下、順に説明する。 In the error correction program, the generation unit executes a redundancy process for generating redundant data as shown in FIG. In the error correction program, the specifying unit and the restoring unit specify damaged data in the redundant data and restore the damaged data, as shown in FIGS. Perform the restoration process. Hereinafter, it demonstrates in order.
(2)冗長化処理について
(2−1)冗長化処理の概要
冗長化処理では、誤り訂正プログラムは、オリジナルデータをある一定のサイズに分割してデータブロックを生成し、このデータブロックを用いて2種類のパリティを生成し、データブロックとこれらのパリティとを含む冗長化データを生成する。ここでいうパリティとは、破損したデータブロックを破損していないデータブロックに基づいて特定するために用いられる情報をいう。
(2) Redundancy processing (2-1) Overview of redundancy processing In the redundancy processing, the error correction program divides the original data into a certain size to generate a data block, and uses this data block. Two types of parity are generated, and redundant data including a data block and these parities is generated. Parity here refers to information used to identify a damaged data block based on an uncorrupted data block.
誤り訂正プログラムは、はじめに、冗長化の対象となるデータ(以下、オリジナルデータ)から同一サイズのN個のデータであるデータブロック(以後、Aデータ(n)とも記載)を生成し、Aデータ(n)から冗長化データを生成する。なお、Nは2以上の整数であり、nは、0〜N−1の整数である。また、Aデータ(n)のサイズをビット長で表すと、lビットであり、バイト長で表すと、Lバイトとなる。 The error correction program first generates data blocks (hereinafter also referred to as A data (n)) of N data of the same size from data to be redundant (hereinafter referred to as original data), and generates A data ( n) Redundant data is generated. N is an integer of 2 or more, and n is an integer of 0 to N-1. Further, when the size of the A data (n) is represented by a bit length, it is 1 bit, and when represented by a byte length, it is L bytes.
オリジナルデータのサイズは、Aデータ(n)のサイズであるLの整数倍であることが望ましい。なお、オリジナルデータのサイズがLの整数倍でない場合は、例えば、Aデータ(0)、Aデータ(1)、Aデータ(2)、・・・といった様に順に分割した際に最後となるAデータ(N−1)のサイズが、L未満となることがあり得る。この場合、誤り訂正プログラムは、不足分を0で充填することによって、Aデータ(n−1)のサイズがLとなるよう調整してもよい。 The size of the original data is preferably an integer multiple of L, which is the size of the A data (n). If the size of the original data is not an integral multiple of L, for example, the last A when the data is divided in order such as A data (0), A data (1), A data (2),. The size of the data (N-1) may be less than L. In this case, the error correction program may adjust the size of the A data (n−1) to L by filling the shortage with 0.
誤り訂正プログラムは、Aデータ(n)に加えて更に、2種類のパリティデータ、及び、付加データh(n)を生成する。2種類のパリティデータとは、P1データ、P2データである。パリティデータは1つ又は2つのAデータ(n)が破損した際、破損したAデータ(n)を復元可能にするためのデータである。 The error correction program generates two types of parity data and additional data h (n) in addition to the A data (n). The two types of parity data are P1 data and P2 data. The parity data is data for making it possible to restore the damaged A data (n) when one or two A data (n) is damaged.
誤り訂正プログラムは、Aデータ(n)、P1データ、P2データ、付加データ、及び、例えば管理データといったその他データを含む冗長化データを生成する。
なお、本実施形態では、管理データがその他データとして含まれているが、これに限定されるものではない。その他データには、例えば、通信において送受信するデータに含まれるヘッダやフッダ等、が含まれうる。誤り訂正プログラムは、少なくともAデータ(n)、P1データ、P2データ、及び、付加データを含むデータ、として構成されうる。
The error correction program generates redundant data including A data (n), P1 data, P2 data, additional data, and other data such as management data.
In the present embodiment, management data is included as other data, but the present invention is not limited to this. The other data may include, for example, a header or a footer included in data transmitted / received in communication. The error correction program can be configured as data including at least A data (n), P1 data, P2 data, and additional data.
以下では、Aデータ(n)、P1データ、及び、P2データが示すビット列を、それぞれ、A(n)、P1、及び、P2と記載する。ビット列とは、2進数で表した値における0又は1の値の並びを意味する。また、理解を容易にするために、本実施形態の具体例を説明する際には、図1Bに示すように、N=4とし、A(0)、A(1)、A(2)、A(3)をA(n)(nは0〜3の整数)として説明する。但し、Nが4に限定されないことは、言うまでもない。 Hereinafter, the bit strings indicated by the A data (n), the P1 data, and the P2 data are referred to as A (n), P1, and P2, respectively. The bit string means a sequence of 0 or 1 values in binary values. In order to facilitate understanding, when describing a specific example of the present embodiment, as shown in FIG. 1B, N = 4, and A (0), A (1), A (2), A (3) is described as A (n) (n is an integer of 0 to 3). However, it goes without saying that N is not limited to 4.
(2−1−1)P1の生成
誤り訂正プログラムは、全てのA(n)の排他的論理和を、P1として算出する。なお、P1のサイズは、lビット(換言すれば、Lバイト)となる。図2Aは、本実施形態において、N=4としたときに、A(0)〜A(3)の排他的論理和としてP1が生成される様子を示す。以下では、排他的論理和を「^」の記号で表す。つまり、P1は(1)式のように表される。
(2-1-1) Generation of P1 The error correction program calculates the exclusive OR of all A (n) as P1. Note that the size of P1 is 1 bit (in other words, L bytes). FIG. 2A shows how P1 is generated as an exclusive OR of A (0) to A (3) when N = 4 in this embodiment. Hereinafter, the exclusive OR is represented by the symbol “^”. That is, P1 is expressed as in equation (1).
P1=A(0)^A(1)^A(2)^A(3) (1)
(2−1−2)P2の生成
ここで、A(n)の各々に対応するN個の整数であって、各整数は、他の整数とは異なる値を有する整数を、S(n)とする。なお、S(n)は0以上の整数であっても良い。また、S(n)の最大値を、Smaxとする。また、A(n)に対応するビット列を、B(n)とする。B(n)のサイズは、バイト長がMであり、ビット長がmである。また、B(n)のサイズをビット長で表すと、Smaxとlとを加算した値となる。B(n)は、A(n)が示す値と、S(n)を指数として2を累乗した値とを乗算した値を示す。換言すれば、B(n)は、A(n)をS(n)ビット上位側にシフトした値を示す。そして、P2は、全てのB(n)の排他的論理和を示す。
P1 = A (0) ^ A (1) ^ A (2) ^ A (3) (1)
(2-1-2) Generation of P2 Here, N integers corresponding to each of A (n), each integer being an integer having a value different from the other integers, S (n) And S (n) may be an integer of 0 or more. The maximum value of S (n) is Smax. A bit string corresponding to A (n) is B (n). As for the size of B (n), the byte length is M and the bit length is m. Further, when the size of B (n) is expressed in bit length, it is a value obtained by adding Smax and l. B (n) represents a value obtained by multiplying the value indicated by A (n) by a value obtained by raising S (n) to an exponent of 2. In other words, B (n) indicates a value obtained by shifting A (n) to the upper side of S (n) bits. P2 represents an exclusive OR of all B (n).
なお、シフトとは、所定のメモリ領域に記憶されているデータが示すビット列を上位側又は下位側に移動させることで、該ビット列を編集することを意味する。ここで、予め定められた正の整数を、Dとする。ビット列をDビット上位側にシフトした場合には、シフト後の該メモリ領域における最下位ビットから上位側に並ぶDビットには、0が設定された状態となる。また、ビット列をDビット下位側にシフトした場合には、シフト後の該ビット列における最上位ビットから下位側に並ぶDビットには、0が設定された状態となる。そして、シフト後の該メモリ領域に記憶されているデータが示すビット列が、シフトの結果として得られる。 The shift means that the bit string is edited by moving the bit string indicated by the data stored in the predetermined memory area to the upper side or the lower side. Here, a predetermined positive integer is D. When the bit string is shifted to the upper side of D bits, 0 is set to the D bits arranged from the least significant bit to the upper side in the memory area after the shift. When the bit string is shifted to the lower side of D bits, 0 is set to the D bits arranged from the most significant bit to the lower side in the bit string after the shift. Then, the bit string indicated by the data stored in the memory area after the shift is obtained as a result of the shift.
誤り訂正プログラムは、A(n)に基づきP2を算出する。具体的には、例えば、乗算、除算、加算、減算、又は、データのシフト等や、Aデータ(n)をメモリの所定のアドレスに保存したりすることで、A(n)からB(n)が算出される。そして、全てのB(n)の排他的論理和を算出することで、P2が算出される。P2のサイズは、Mバイト(換言すれば、Smax+lビット)となる。 The error correction program calculates P2 based on A (n). Specifically, for example, by multiplying, dividing, adding, subtracting, or shifting data, or storing A data (n) at a predetermined address in the memory, A (n) to B (n ) Is calculated. Then, P2 is calculated by calculating an exclusive OR of all B (n). The size of P2 is M bytes (in other words, Smax + 1 bits).
図2Bは、本実施形態において、N=4としたときに、B(0)〜B(3)の排他的論理和としてP2が生成される様子を示す。この場合、SmaxはS(3)となる。
ここで、S(n)は、一例として、nk(kは1以上の整数)として表されるものとする。また、一例として、kは8の倍数とする。すなわち、k=8x(xは1以上の整数)、つまり、S(n)=8nxとなる。また、この場合、P2のバイト長であるMは、L+(N−1)xバイトとなる。
FIG. 2B shows how P2 is generated as an exclusive OR of B (0) to B (3) when N = 4 in this embodiment. In this case, Smax is S (3).
Here, S (n) is represented as nk (k is an integer of 1 or more) as an example. As an example, k is a multiple of 8. That is, k = 8x (x is an integer equal to or greater than 1), that is, S (n) = 8nx. In this case, M, which is the byte length of P2, is L + (N-1) x bytes.
また、ここでは、S(n)をnkとする例を示したが、これに限定されるものではない。S(n)は、nの増加と無関係に、ランダムに設定されうる。
なお、kは、任意の値に設定されうる。但し、本実施形態のように、kは、8、16、32、・・・等といったバイト単位、すなわち8の倍数であることが望ましい。更に述べると、kは、コンピュータのバス幅に等しい値とすることが望ましい。例えば、64ビットアーキテクチャのコンピュータで64ビットバスが用いられる場合であれば、k=64とすることが望ましい。
Moreover, although the example which set S (n) to nk was shown here, it is not limited to this. S (n) can be set randomly regardless of the increase in n.
Note that k can be set to an arbitrary value. However, as in this embodiment, k is preferably a byte unit such as 8, 16, 32,..., That is, a multiple of 8. More specifically, k is preferably equal to the computer bus width. For example, if a 64-bit bus is used in a 64-bit architecture computer, k = 64 is desirable.
本実施形態においては、一例として、B(n)及びP2の算出は、Aデータ(n)のメモリ転送と、A(n)と、該メモリ転送先に記憶されているデータが示すビット列との排他的論理和と、によって、一括して実現される。すなわち、メモリには、予めP2データが記憶される領域(P2領域)として、Mバイトの領域が設定されている。P2の算出を開始する直前は、P2領域に0が設定される。また、P2領域には、A(n)の記憶領域であるR(n)が定められている。R(n)の先頭アドレスは、0が設定されたP2領域におけるR(n)にAデータ(n)をメモリ転送することで、P2領域に保存されたデータがB(n)を示すよう調整されている。一例として、R(n)の先頭アドレスは、P2領域の先頭アドレスから、P2領域の末尾側に、x(N−1−n)バイトオフセットされたアドレスとなる。なお、Aデータ(n)の記憶領域R(n)は、他のAデータ(n)の記憶領域と一部重複する。 In the present embodiment, as an example, the calculation of B (n) and P2 is based on the memory transfer of A data (n), A (n), and the bit string indicated by the data stored in the memory transfer destination. It is realized in a lump by exclusive OR. That is, an area of M bytes is set in the memory as an area (P2 area) in which P2 data is stored in advance. Immediately before starting the calculation of P2, 0 is set in the P2 area. In the P2 area, R (n), which is a storage area for A (n), is defined. The start address of R (n) is adjusted so that the data stored in the P2 area indicates B (n) by transferring the A data (n) to R (n) in the P2 area where 0 is set. Has been. As an example, the head address of R (n) is an address offset by x (N-1-n) bytes from the head address of the P2 area to the tail side of the P2 area. The storage area R (n) for A data (n) partially overlaps the storage area for other A data (n).
そして、R(n)にAデータ(n)が転送される際、R(n)に記憶されているデータが示すビット列とA(n)との排他的論理和が算出される。そして、算出された値が、R(n)に記憶される。このため、Aデータ(n)が全てP2領域に転送されると、P2領域にてP2データが生成される。これにより、乗除算等を用いること無く、メモリ転送によりP2を生成できるため、処理負荷を抑制できる。 Then, when the A data (n) is transferred to R (n), an exclusive OR of the bit string indicated by the data stored in R (n) and A (n) is calculated. The calculated value is stored in R (n). For this reason, when all A data (n) is transferred to the P2 area, P2 data is generated in the P2 area. Accordingly, P2 can be generated by memory transfer without using multiplication / division and the like, so that the processing load can be suppressed.
但し、P2の生成方法は、これに限定されるものではない。例えば、A(n)に基づいてB(n)を示すデータを生成し、これらのデータからP2データを生成してP2領域に記憶しても良い。 However, the generation method of P2 is not limited to this. For example, data indicating B (n) may be generated based on A (n), and P2 data may be generated from these data and stored in the P2 area.
ここで、P2は、(2)式のように表される。
P2=B(0)^B(1)^B(2)^B(3) (2)
(2−1−3)付加データの生成
誤り訂正プログラムは、Aデータ(n)、P1データ、及び、P2データの各々について、当該データの誤りを検出するためのデータである付加データを生成する。ここでは、Aデータ(n)、P1データ、及び、P2データの各々から算出したハッシュ値を示すデータが、付加データとして用いられる。ハッシュ値とは、元になるデータに対して予め定められた演算処理(以下、ハッシュ関数)を行うことによって求められる値をいう。以下では、Aデータ(n)、P1データ、及び、P2データの各々から算出したハッシュ値を示すデータを、それぞれ、h(n)、h(P1)、h(P2)とする。ここでは、各データについて、同じハッシュ関数を用いてハッシュ値を算出するものとする。h(n)、h(P1)、h(P2)は、予め定められたデータサイズ(以下、ハッシュサイズ)となる。
Here, P2 is expressed as in equation (2).
P2 = B (0) ^ B (1) ^ B (2) ^ B (3) (2)
(2-1-3) Generation of Additional Data The error correction program generates additional data that is data for detecting an error in the data for each of the A data (n), the P1 data, and the P2 data. . Here, data indicating a hash value calculated from each of A data (n), P1 data, and P2 data is used as additional data. The hash value is a value obtained by performing a predetermined calculation process (hereinafter referred to as a hash function) on the original data. Hereinafter, data indicating the hash values calculated from each of the A data (n), the P1 data, and the P2 data are referred to as h (n), h (P1), and h (P2), respectively. Here, it is assumed that a hash value is calculated for each piece of data using the same hash function. h (n), h (P1), and h (P2) have predetermined data sizes (hereinafter referred to as hash sizes).
(2−1−4)管理データ
管理データは、誤り訂正プログラムにおいて、予めその値が定められている種々のデータをいう。管理データは、例えば、A(n)の数であるN、A(n)のサイズであるL、ハッシュサイズ、及び、B(n)及びP2のサイズであるM等を示す。また、管理データには、例えば、上述のkやx等といった、nとS(n)とを対応づけるためのデータが含まれうる。これらのデータ等は、予めHDD20に記憶されており、誤り訂正プログラムを実行する際に、RAM50に記憶される。
(2-1-4) Management Data Management data refers to various data whose values are determined in advance in the error correction program. The management data indicates, for example, N as the number of A (n), L as the size of A (n), hash size, and M as the sizes of B (n) and P2. Further, the management data may include data for associating n with S (n), such as k and x described above. These data and the like are stored in advance in the
(2−2)冗長化処理
次に、冗長化処理について、図3を用いて説明する。誤り訂正プログラムは、例えば、HDD20に対して、PC1上のプログラムによって生成されたオリジナルデータの書き込みを行う際に、本冗長化処理を実行する。本冗長化処理によって生成された冗長化データは、HDD20に対して、1つのコンピュータファイルとして記憶されるものとする。1つのコンピュータファイルとは、PC1におけるファイルシステム上で、1つのファイルとして扱われるデータであること、を意味する。
(2-2) Redundancy Processing Next, the redundancy processing will be described with reference to FIG. The error correction program executes this redundancy processing when writing original data generated by the program on the
なお、以下の説明において主語が省略されている場合は、誤り訂正プログラムを主語とする。また、オリジナルデータは、HDD20において、予め定められた領域に記憶されているものとする。
In addition, when the subject is abbreviate | omitted in the following description, an error correction program is made into a subject. Also, it is assumed that the original data is stored in a predetermined area in the
はじめに、S110では、RAM50から管理データを取得する。
S115では、HDD20において、P1データが記憶されるサイズがLバイトの領域(以下、P1領域)、及び、P2領域を設定する。また、本ステップでは、P1領域及びP2領域は、0に初期化される。また、nは0に初期化される。
First, in S110, management data is acquired from the
In S115, the
S120〜S150では、オリジナルデータからLバイトのAデータ(n)を生成する処理が繰り返し実行される。また、S120〜S150が繰り返し実行されることによって、P1データ及びP2データが生成される。 In S120 to S150, the process of generating L-byte A data (n) from the original data is repeatedly executed. Moreover, P1 data and P2 data are produced | generated by repeatedly performing S120-S150.
具体的には、S120では、オリジナルデータにおいて、S120〜S150の処理対象となっていないデータ(以下、未処理データ)のサイズが、L以上か否かを判断する。未処理データがL以上の場合、処理をS130へ移行させ、L未満の場合、処理をS125へ移行させる。 Specifically, in S120, it is determined whether or not the size of data (hereinafter, unprocessed data) that is not the processing target in S120 to S150 in the original data is L or more. If the unprocessed data is L or more, the process proceeds to S130, and if it is less than L, the process proceeds to S125.
S125では、未処理データに、所定のサイズの0を示すデータを加えたものを、Lバイトのデータとする。なお、未処理データに対しどのように0を示すデータを加えるかについては、適宜定められる。 In S125, unprocessed data plus data indicating a predetermined size of 0 is taken as L-byte data. Note that how to add data indicating 0 to unprocessed data is appropriately determined.
S130では、オリジナルデータからLバイトのデータをAデータ(n)として取得し、Aデータ(n)をHDD20に記憶する。
S135では、S130にて取得したAデータ(n)が示すA(n)と、P1領域に記憶されたデータが示すビット列との排他的論理和を算出し、算出結果をP1領域に記憶する。
In S 130, L bytes of data are acquired from the original data as A data (n), and the A data (n) is stored in the
In S135, an exclusive OR of A (n) indicated by the A data (n) acquired in S130 and the bit string indicated by the data stored in the P1 area is calculated, and the calculation result is stored in the P1 area.
S140では、S130にて取得したAデータ(n)を、上述のように、P2領域内にメモリ転送し、且つ、排他的論理和を算出する。
S145では、Aデータ(n)についてのハッシュ値であるh(n)を算出し、h(n)をHDD20に記憶する。また、本ステップでは、n+1を新たなnとして記憶し直す。
In S140, the A data (n) acquired in S130 is transferred to the memory in the P2 area as described above, and an exclusive OR is calculated.
In S145, the hash value h (n) for the A data (n) is calculated, and h (n) is stored in the
S150では、オリジナルデータのうち、未処理データがあるか否かを判断する。未処理データがある場合は、処理をS120へ移行させ、S120〜S150の処理を繰り返す。未処理データがない場合は、処理をS155へ移行させる。これにより、S155へ処理が移行されるまでに、Aデータ(n)及びh(n)(nは0〜N−1)、P1データ、P2データがそれぞれ生成され、HDD20に記憶される。
In S150, it is determined whether there is unprocessed data among the original data. If there is unprocessed data, the process proceeds to S120, and the processes of S120 to S150 are repeated. If there is no unprocessed data, the process proceeds to S155. As a result, A data (n) and h (n) (n is 0 to N-1), P1 data, and P2 data are generated and stored in the
S155では、P1データについてのハッシュ値を示すh(P1)を生成し、h(P1)をHDD20に記憶する。
S160では、P2データについてのハッシュ値を示すh(P2)を生成し、h(P2)をHDD20に記憶する。そして、本冗長化処理は終了となる。
In S155, h (P1) indicating a hash value for the P1 data is generated, and h (P1) is stored in the
In S160, h (P2) indicating a hash value for the P2 data is generated, and h (P2) is stored in the
このようにして、Aデータ(n)、h(n)、P1データ、h(P1)、P2データ、h(P2)、及び、管理データが、冗長化データとして、HDD20に記憶される。
(3)復元処理について
(3−1)復元処理の概要
復元処理では、誤り訂正プログラムは、特定部が、冗長化データにおいて破損しているデータを特定する。続いて、誤り訂正プログラムは、復元部が、冗長化データにおいて破損しているデータの数が2以下であり、且つAデータ(n)のうち破損しているものが2つ以下である場合に、破損しているAデータ(n)を特定し、復元する。なお、P1データ及びP2データの両方が破損している場合、及び、破損しているデータの数が3以上である場合、誤り訂正プログラムは、破損しているAデータ(n)を復元できない。
In this way, the A data (n), h (n), P1 data, h (P1), P2 data, h (P2), and management data are stored in the
(3) About Restoration Processing (3-1) Overview of Restoration Processing In the restoration processing, the error correction program identifies data that is damaged in the redundant data by the identifying unit. Subsequently, the error correction program is used when the restoration unit has a number of damaged data in the redundant data of 2 or less and 2 or less of the A data (n) are damaged. The damaged A data (n) is identified and restored. If both P1 data and P2 data are damaged, and if the number of damaged data is 3 or more, the error correction program cannot restore the damaged A data (n).
(3−2)復元処理
続いて、誤り訂正プログラムにおける特定部及び復元部が実行する復元処理について、図4を用いて説明する。誤り訂正プログラムは、例えば、HDD20から、冗長化データの読み出しを行う際に、本復元処理を実行する。
(3-2) Restoration Process Next, the restoration process executed by the specifying unit and the restoration unit in the error correction program will be described with reference to FIG. For example, the error correction program executes this restoration processing when reading redundant data from the
はじめに、S210では、破損しているデータを特定する。具体的には、冗長化データに含まれるh(n)、h(P1)及びh(P2)を用いて、冗長化データに含まれるAデータ(n)、P1データ、及び、P2データのうちの破損しているデータを特定する。 First, in S210, damaged data is specified. Specifically, using h (n), h (P1), and h (P2) included in the redundant data, among the A data (n), P1 data, and P2 data included in the redundant data Identify corrupt data.
つまり、本ステップでは、冗長化データに含まれるAデータ(n)、P1データ、及び、P2データから、冗長化データの生成時と同じハッシュ関数を用いてハッシュ値が算出される。そして、算出されたハッシュ値と冗長化データに含まれるh(n)、h(P1)、及び、h(P2)とが一致していない場合に、一致していないデータを破損しているデータとして特定する。このようなハッシュ値に基づいて破損しているデータを特定する技術は、公知の技術であるため、詳細な説明を割愛する。 That is, in this step, the hash value is calculated from the A data (n), P1 data, and P2 data included in the redundant data using the same hash function as that used when generating the redundant data. If the calculated hash value and h (n), h (P1), and h (P2) included in the redundant data do not match, the data that does not match is corrupted. As specified. Since a technique for identifying data that is damaged based on such a hash value is a known technique, a detailed description thereof is omitted.
S215では、少なくとも1つのAデータ(n)が破損しているか否かを判断する。少なくとも1つのAデータ(n)が破損している場合は、処理をS220へ移行させ、破損していない場合は、本復元処理を終了させる。 In S215, it is determined whether or not at least one A data (n) is damaged. If at least one A data (n) is damaged, the process proceeds to S220, and if not damaged, the restoration process is terminated.
S220では、Aデータ(n)とP1データとP2データとのうち、破損しているデータの数が2よりも大きいか否かを判断する。破損しているデータの数が2よりも大きい場合は処理をS255へ移行させ、該数が2以下である場合は処理をS225へ移行させる。 In S220, it is determined whether or not the number of damaged data among A data (n), P1 data, and P2 data is greater than two. If the number of damaged data is greater than 2, the process proceeds to S255, and if the number is 2 or less, the process proceeds to S225.
S225では、破損しているAデータ(n)の数が2であるか否かを判断する。ここで、破損しているAデータ(n)の数が2である場合は、処理をS230へ移行させて第1復元処理を実行する。第1復元処理では、破損している2つのA(n)を復元して、本復元処理を終了させる。破損しているAデータ(n)の数が2でない場合、つまり1である場合は、処理をS235へ移行させる。 In S225, it is determined whether or not the number of damaged A data (n) is two. If the number of damaged A data (n) is 2, the process proceeds to S230 and the first restoration process is executed. In the first restoration process, two damaged A (n) are restored, and the restoration process is terminated. If the number of damaged A data (n) is not 2, that is, 1, the process proceeds to S235.
S235では、P1データが破損しているか否かを判断する。ここで、P1データが破損していない場合は、処理をS240へ移行させて第2復元処理を実行する。第2復元処理では、破損している1つのAデータ(n)を復元して、本復元処理を終了させる。P1データが破損している場合は、処理をS245へ移行させる。 In S235, it is determined whether or not the P1 data is damaged. If the P1 data is not damaged, the process proceeds to S240 and the second restoration process is executed. In the second restoration process, one damaged A data (n) is restored, and this restoration process is terminated. If the P1 data is damaged, the process proceeds to S245.
S245では、P2データが破損しているか否かを判断する。ここで、P2データが破損していない場合は、処理をS250へ移行させて第3復元処理を実行する。第3復元処理では、破損している1つのAデータ(n)を復元して、本復元処理を終了させる。P2データが破損している場合は、処理をS255へ移行させる。 In S245, it is determined whether or not the P2 data is damaged. If the P2 data is not damaged, the process proceeds to S250 and the third restoration process is executed. In the third restoration process, one damaged A data (n) is restored, and this restoration process is terminated. If the P2 data is damaged, the process proceeds to S255.
P1データ及びP2データの両方が破損している場合、及び、破損しているデータの数が3以上である場合に移行するS255では、一例として、復元処理が異常終了されたことを表す異常フラグをセットし、本復元処理を終了させる。 In S255 that is shifted when both the P1 data and the P2 data are damaged, and when the number of damaged data is 3 or more, as an example, an abnormal flag indicating that the restoration process has ended abnormally To complete the restoration process.
次に、第1復元処理、第2復元処理、第3復元処理をそれぞれ説明する。
(3−2−1)第1復元処理
次に、第1復元処理について、図5を用いて説明する。第1復元処理では、Aデータ(n)のうちの2つが破損しており、且つ、P1データ及びP2データが破損していない場合に、破損している2つのAデータ(n)が復元される。ここで、破損しているAデータ(n)のnの値を、f0、f1(f0、f1は0〜N−1の整数)とし、破損していないAデータ(n)のnの値を、t(tは、0〜N−1の整数であって、f0、f1以外の整数)とする。
Next, the first restoration process, the second restoration process, and the third restoration process will be described.
(3-2-1) First Restoration Process Next, the first restoration process will be described with reference to FIG. In the first restoration process, when two of the A data (n) are damaged and the P1 data and the P2 data are not damaged, the two damaged A data (n) are restored. The Here, the value of n of the damaged A data (n) is set to f0, f1 (f0, f1 is an integer of 0 to N-1), and the value of n of the A data (n) that is not damaged is , T (t is an integer from 0 to N-1 and is an integer other than f0 and f1).
図6Aは、本実施形態において、N=4としたときに、Aデータ(1)とAデータ(2)とが破損しており、且つ、Aデータ(0)とAデータ(3)とP1とP2とが破損していない様子を示す。 FIG. 6A shows that in this embodiment, when N = 4, A data (1) and A data (2) are damaged, and A data (0), A data (3), and P1 And P2 are not damaged.
S310では、全てのA(t)とP1との排他的論理和を算出することで、A(f0)とA(f1)との排他的論理和を示すビット列であるX0を算出する。すなわち、本実施形態においては、図6Bに示すように、A(0)とA(3)とP1との排他的論理和を、X0として算出する。P1は(1)式で表されることから、X0は、以下の(3)式で表されるように、A(1)とA(2)との排他的論理和に相当する。 In S310, X0, which is a bit string indicating the exclusive OR of A (f0) and A (f1), is calculated by calculating the exclusive OR of all A (t) and P1. That is, in the present embodiment, as shown in FIG. 6B, the exclusive OR of A (0), A (3), and P1 is calculated as X0. Since P1 is expressed by equation (1), X0 corresponds to an exclusive OR of A (1) and A (2) as expressed by the following equation (3).
P1=A(0)^A(1)^A(2)^A(3)
A(0)^P1=A(0)^A(0)^A(1)^A(2)^A(3)
A(0)^P1=A(1)^A(2)^A(3)
A(3)^A(0)^P1=A(3)^A(1)^A(2)^A(3)
A(3)^A(0)^P1=A(1)^A(2)=X0 (3)
S320では、A(t)に基づきB(t)を算出する。すなわち、本実施形態においては、破損していないA(0)とA(3)とに基づき、B(0)とB(3)とを算出する。
P1 = A (0) ^ A (1) ^ A (2) ^ A (3)
A (0) ^ P1 = A (0) ^ A (0) ^ A (1) ^ A (2) ^ A (3)
A (0) ^ P1 = A (1) ^ A (2) ^ A (3)
A (3) ^ A (0) ^ P1 = A (3) ^ A (1) ^ A (2) ^ A (3)
A (3) ^ A (0) ^ P1 = A (1) ^ A (2) = X0 (3)
In S320, B (t) is calculated based on A (t). That is, in this embodiment, B (0) and B (3) are calculated based on A (0) and A (3) that are not damaged.
S330では、全てのB(t)とP2との排他的論理和を算出することで、B(f0)とB(f1)との排他的論理和を示すビット列であるX1を算出する。すなわち、本実施形態においては、図6Cに示すように、B(0)とB(3)とP2との排他的論理和を、X1として算出する。P2は(2)式で表されることから、X1は、以下の(4)式で表されるように、B(1)とB(2)との排他的論理和に相当する。 In S330, the exclusive OR of all B (t) and P2 is calculated, thereby calculating X1, which is a bit string indicating the exclusive OR of B (f0) and B (f1). That is, in the present embodiment, as shown in FIG. 6C, an exclusive OR of B (0), B (3), and P2 is calculated as X1. Since P2 is expressed by equation (2), X1 corresponds to an exclusive OR of B (1) and B (2) as expressed by equation (4) below.
P2=B(0)^B(1)^B(2)^B(3)
B(0)^B(3)^P2=B(1)^B(2)=X1 (4)
そして、S340〜S360では、次のようにしてA(f0)、A(f1)が復元される。
P2 = B (0) ^ B (1) ^ B (2) ^ B (3)
B (0) ^ B (3) ^ P2 = B (1) ^ B (2) = X1 (4)
In S340 to S360, A (f0) and A (f1) are restored as follows.
まず、B(f0)において、A(f0)の最下位ビット、最上位ビットに相当するビットの位置を、それぞれ、bl、bmとする。つまり、B(f0)におけるA(f0)が占めるビット列の最下位ビットの位置を、blとし、該ビット列の最上位ビットの位置を、bmとする。そして、X1におけるblからbmまでのビット列を、X1Aとする。 First, in B (f0), the positions of bits corresponding to the least significant bit and the most significant bit of A (f0) are set to bl and bm, respectively. That is, the position of the least significant bit of the bit string occupied by A (f0) in B (f0) is set to bl, and the position of the most significant bit of the bit string is set to bm. A bit string from bl to bm in X1 is assumed to be X1A.
本実施形態では、一例として、Aデータ(1)とAデータ(2)とが破損している。X1におけるX1Aを、B(1)に含まれるA(1)に揃えるか(f0<f1、つまり、f0=1、f1=2とするか)、又は、B(2)におけるA(2)に揃えるか(f0>f1、つまり、f0=2、f1=1とするか)によって、計算方法は異なるものとなる。 In this embodiment, as an example, A data (1) and A data (2) are damaged. X1A in X1 is aligned with A (1) included in B (1) (f0 <f1, that is, f0 = 1, f1 = 2), or A (2) in B (2) Depending on whether they are aligned (f0> f1, that is, whether f0 = 2 and f1 = 1), the calculation method differs.
すなわち、f0<f1(換言すれば、f0=1、f1=2)の場合、図6Cに示すように、B(1)におけるA(1)が占める部分の最下位のビット、最上位のビットが、それぞれ、bl、bmとなる。そして、X1Aは、A(1)と、B(2)におけるblからbmかけてのビット列との排他的論理和を示す。一方、f0>f1(換言すれば、f0=2、f1=1)の場合、B(2)におけるA(2)が占める部分の最下位のビット、最上位のビットが、それぞれ、bl、bmとなる。そして、X1Aは、A(2)と、B(1)におけるblからbmかけてのビット列との排他的論理和を示す。 That is, when f0 <f1 (in other words, f0 = 1 and f1 = 2), as shown in FIG. 6C, the least significant bit and the most significant bit of the portion occupied by A (1) in B (1) Are bl and bm, respectively. X1A indicates an exclusive OR of A (1) and a bit string from bl to bm in B (2). On the other hand, when f0> f1 (in other words, f0 = 2, f1 = 1), the least significant bit and the most significant bit of the portion occupied by A (2) in B (2) are bl and bm, respectively. It becomes. X1A indicates an exclusive OR of A (2) and a bit string from bl to bm in B (1).
また、図6Dに示すように、f0<f1の場合には、A(f1)を、S(f0)とS(f1)との差分の絶対値である|S(f0)−S(f1)|ビット上位側にシフトさせたデータ列を、A´(f1)とする。なお、本実施形態では、|S(f0)−S(f1)|=kとなる。ここで、|S(f0)−S(f1)|を指数として2を累乗した値を、Sとする。換言すれば、A´(f1)は、A(f1)が示す値をSで乗算した値のビット列における、最下位ビットから並ぶデータ長がlであるビット列となる。一方、f0>f1の場合には、A(f1)を、|S(f0)−S(f1)|ビット下位側にシフトさせたデータ列を、A´(f1)とする。換言すれば、A´(f1)は、A(f1)が示す値をSで除算した値を示す、ビット長がlであるビット列となる。 Also, as shown in FIG. 6D, when f0 <f1, A (f1) is the absolute value of the difference between S (f0) and S (f1) | S (f0) −S (f1) A data string shifted to the upper | bit is A ′ (f1). In this embodiment, | S (f0) −S (f1) | = k. Here, S is a value obtained by raising 2 with exponents of | S (f0) −S (f1) |. In other words, A ′ (f1) is a bit string whose data length is 1 from the least significant bit in the bit string obtained by multiplying the value indicated by A (f1) by S. On the other hand, when f0> f1, a data string obtained by shifting A (f1) to | S (f0) −S (f1) | bit lower side is set as A ′ (f1). In other words, A ′ (f1) is a bit string having a bit length of 1 indicating a value obtained by dividing the value indicated by A (f1) by S.
そして、図7Aに示すように、X0とX1Aとの排他的論理和であるX2を算出する。X2は、A(f1)とA´(f1)との排他的論理和に相当する。さらに、X2に基づきA(f1)を特定し、特定したA(f1)と、P1又はP2とに基づき、A(f0)を特定する。 Then, as shown in FIG. 7A, X2, which is an exclusive OR of X0 and X1A, is calculated. X2 corresponds to an exclusive OR of A (f1) and A ′ (f1). Further, A (f1) is specified based on X2, and A (f0) is specified based on the specified A (f1) and P1 or P2.
本実施形態では、一例として、X1を下位側にシフトした上でX2を算出する。
まず、f0<f1とした場合について説明する。S340では、X1をS(1)ビット(換言すれば、kビット)下位側にシフトさせたX1´を算出する。図7Bに示すように、X1´は、A(1)と同じ値を示すビット長がmのビット列と、A(2)をS(2)−S(1)ビット上位側にシフトした値と同じ値を示す、ビット長がmのビット列との排他的論理和を示す。そして、X1´における最下位ビットから並ぶビット長がlのビット列を、X1Aとして特定する。
In the present embodiment, as an example, X2 is calculated after shifting X1 to the lower side.
First, the case where f0 <f1 is described. In S340, X1 ′ obtained by shifting X1 to the lower side of S (1) bits (in other words, k bits) is calculated. As shown in FIG. 7B, X1 ′ is a bit string having the same value as A (1) and a bit length of m, and a value obtained by shifting A (2) to the upper side of S (2) −S (1) bits. An exclusive OR with a bit string having the same bit length and a bit length of m is shown. Then, a bit string having a bit length of 1 arranged from the least significant bit in X1 ′ is specified as X1A.
S350では、X1AとX0との排他的論理和であるX2を算出する。図7Bに示すように、X2は、A(2)と、A(2)をS(2)−S(1)ビット(換言すれば、kビット)上位側にシフトしたビット列との排他的論理和に相当する。 In S350, X2 which is an exclusive OR of X1A and X0 is calculated. As shown in FIG. 7B, X2 is an exclusive logic between A (2) and a bit string obtained by shifting A (2) to S (2) -S (1) bits (in other words, k bits). Equivalent to the sum.
一方、f0>f1とした場合、以下のようにしてX2が算出される。すなわち、S340では、X1をS(2)ビット下位側にシフトさせたX1´を算出する。図8に示すように、X1´は、A(1)をS(1)ビット下位側にシフトさせたビット列と同じ値を示す、ビット長がmのビット列と、A(2)と同じ値を示すビット長がmのビット列との排他的論理和を示す。そして、X1´における最下位ビットから並ぶビット長がlのビット列を、X1Aとして特定する。 On the other hand, when f0> f1, X2 is calculated as follows. That is, in S340, X1 ′ obtained by shifting X1 to the lower side of S (2) bits is calculated. As shown in FIG. 8, X1 ′ indicates the same value as the bit string obtained by shifting A (1) to the lower side of S (1) bits, and the same value as A (2). The exclusive OR with the bit string whose bit length is m is shown. Then, a bit string having a bit length of 1 arranged from the least significant bit in X1 ′ is specified as X1A.
S350では、X1AとX0との排他的論理和であるX2を算出する。図8に示すように、X2は、A(1)と、A(1)をS(2)−S(1)ビット(換言すれば、kビット)下位側にシフトしたビット列との排他的論理和に相当する。 In S350, X2 which is an exclusive OR of X1A and X0 is calculated. As shown in FIG. 8, X2 is an exclusive logic between A (1) and a bit string obtained by shifting A (1) to S (2) -S (1) bits (in other words, k bits). Equivalent to the sum.
なお、この他にも、一例として、X0と同じ値を示すビット長がmのビット列を、S(1)ビット、又は、S(2)ビット上位側にシフトしたX0´を算出しても良い。そして、X0´とX1との排他的論理和であるYを算出しても良い。Yにおけるblからbmまでのビット列は、X2となる。シフト等により、YからX2を算出しても良い。 In addition, as an example, X0 ′ obtained by shifting a bit string having the same value as X0 and having a bit length of m to S (1) bits or S (2) bits higher side may be calculated. . Then, Y that is an exclusive OR of X0 ′ and X1 may be calculated. The bit string from bl to bm in Y is X2. X2 may be calculated from Y by a shift or the like.
続いて、S360では、X2に基づきA(f1)が特定され、その後、A(f0)が特定される。
まず、f0<f1の場合、つまり、f1=2の場合、X2は、A(f1)と、A(f1)を、|S(f0)−S(f1)|ビット上位側にシフトしたビット列であるA´(f1)との排他的論理和となる。このため、本実施形態では、X2は、図7Bに示すように、A(2)と、A(2)をS(2)−S(1)ビット(換言すれば、kビット)上位側にシフトしたビット列との排他的論理和に相当する。まず、X2に基づき、A(f1)が特定される。以下では、A(f1)の特定方法について説明する。
Subsequently, in S360, A (f1) is specified based on X2, and then A (f0) is specified.
First, when f0 <f1, that is, when f1 = 2, X2 is a bit string obtained by shifting A (f1) and A (f1) to | S (f0) −S (f1) | It becomes an exclusive OR with a certain A ′ (f1). For this reason, in this embodiment, as shown in FIG. 7B, X2 sets A (2) and A (2) to the upper side of S (2) -S (1) bits (in other words, k bits). This corresponds to exclusive OR with the shifted bit string. First, A (f1) is specified based on X2. Below, the identification method of A (f1) is demonstrated.
X2及びA(2)において、最下位ビットから並ぶビット長がS(2)−S(1)のビット列を、(ア)とする。また、A´(2)において、最下位ビットから並ぶビット長がS(2)−S(1)のビット列は、全て0となる。このため、図9Aに示すように、X2及びA(2)の(ア)は一致する。したがって、X2の(ア)を、A(2)における(ア)として特定できる。 In X2 and A (2), a bit string having bit lengths S (2) -S (1) arranged from the least significant bit is represented by (a). Further, in A ′ (2), all bit strings having bit lengths S (2) −S (1) arranged from the least significant bit are 0. Therefore, as shown in FIG. 9A, (2) of X2 and A (2) match. Therefore, (A) of X2 can be specified as (A) in A (2).
次に、A(2)、X2において、(ア)の上位側に隣接するビットから上位側に並ぶビット長がkのビット列を、それぞれ、(イ)、(ウ)とする。図9Bに示すように、(ウ)は、(ア)と(イ)との排他的論理和に相当する。このため、A(2)の(ア)とX2の(ウ)との排他的論理和を算出することで、A(2)の(イ)を特定できる。 Next, in A (2) and X2, bit strings having a bit length k arranged from the bit adjacent to the upper side of (a) to the upper side are denoted by (A) and (C), respectively. As shown in FIG. 9B, (c) corresponds to an exclusive OR of (a) and (b). For this reason, (i) of A (2) can be specified by calculating the exclusive OR of (a) of A (2) and (c) of X2.
そして、図9Cに示すように、同様にして、A(2)における(イ)の上位側に隣接するビットから上位側に並ぶビットを、ビット長がkのビット列単位で繰り返し特定することで、A(2)を特定する。 Similarly, as shown in FIG. 9C, by repeatedly specifying the bits arranged in the upper side from the bits adjacent to the upper side of (A) in A (2) in units of bit strings having a bit length of k, A (2) is specified.
一方、f0>f1の場合、つまり、f1=1の場合、X2は、A(f1)と、A(f1)を、|S(f0)−S(f1)|ビット下位側にシフトしたビット列であるA´(f1)との排他的論理和となる。このため、本実施形態では、X2は、図8に示すように、A(1)と、A(1)をS(2)−S(1)ビット(換言すれば、kビット)下位側にシフトしたビット列との排他的論理和に相当する。そして、同様にして、まず、X2に基づき、A(f1)が特定される。 On the other hand, when f0> f1, that is, when f1 = 1, X2 is a bit string obtained by shifting A (f1) and A (f1) to | S (f0) −S (f1) | It becomes an exclusive OR with a certain A ′ (f1). For this reason, in this embodiment, as shown in FIG. 8, X2 moves A (1) and A (1) to the lower side of S (2) -S (1) bits (in other words, k bits). This corresponds to exclusive OR with the shifted bit string. Similarly, first, A (f1) is specified based on X2.
X2及びA(1)において、最上位ビットから並ぶビット長がS(2)−S(1)のビット列を、(ア)とする。また、A´(1)において、最上位ビットから並ぶビット長がS(2)−S(1)のビット列は、全て0となる。このため、図9Dに示すように、X2及びA(1)の(ア)は一致する。したがって、X2の(ア)を、A(1)における(ア)として特定できる。 In X2 and A (1), a bit string having bit lengths S (2) -S (1) arranged from the most significant bit is represented by (a). Further, in A ′ (1), all bit strings having bit lengths S (2) −S (1) arranged from the most significant bit are 0. Therefore, as shown in FIG. 9D, X2 and A (1) (a) match. Therefore, (A) of X2 can be specified as (A) in A (1).
次に、A(1)、X2において、(ア)の下位側に隣接するビットから下位側に並ぶビット長がkのビット列を、それぞれ、(イ)、(ウ)とする。図9Dに示すように、(ウ)は、(ア)と(イ)との排他的論理和に相当する。このため、A(1)の(ア)とX2の(ウ)との排他的論理和を算出することで、A(1)の(イ)を特定できる。 Next, in A (1) and X2, bit strings having a bit length k arranged from the bit adjacent to the lower side of (a) to the lower side are set to (A) and (C), respectively. As shown in FIG. 9D, (c) corresponds to an exclusive OR of (a) and (b). Therefore, by calculating the exclusive OR of (A) of A (1) and (C) of X2, it is possible to specify (A) of A (1).
そして、同様にして、A(1)における(イ)の下位側に隣接するビットから下位側に並ぶビットを、ビット長がkのビット列単位で繰り返し特定することで、A(1)を特定する。 Similarly, A (1) is specified by repeatedly specifying bits arranged in the lower order from the bits adjacent to the lower order side of (A) in A (1) in units of bit strings having a bit length of k. .
次に、A(f1)と、P1又はP2とに基づき、A(f0)を特定する。具体的には、P1とA(t)と排他的論理和により算出されたX0とA(f1)との排他的論理和を、A(f0)として算出しても良い。この他にも、A(f1)に基づきB(f1)を算出しても良い。そして、X1とB(f1)との排他的論理和を、B(f0)として算出し、B(f0)に基づきA(f0)を算出しても良い。 Next, A (f0) is specified based on A (f1) and P1 or P2. Specifically, an exclusive OR of X0 and A (f1) calculated by exclusive OR of P1, A (t) may be calculated as A (f0). In addition, B (f1) may be calculated based on A (f1). Then, an exclusive OR of X1 and B (f1) may be calculated as B (f0), and A (f0) may be calculated based on B (f0).
誤り訂正プログラムは、特定したA(f0)、A(f1)を、冗長化データにおけるAデータ(f0)、Aデータ(f1)に設定することで、これらのデータを復元する。そして、第1復元処理を終了する。 The error correction program restores these data by setting the specified A (f0) and A (f1) to the A data (f0) and A data (f1) in the redundant data. Then, the first restoration process is terminated.
(3−2−2)第2復元処理
次に、第2復元処理について、図10Aを用いて説明する。誤り訂正プログラムは、第2復元処理では、Aデータ(n)のうちの1つであるAデータ(f2)(f2は0〜N−1の整数)が破損しており、且つ、P1データが破損していない場合に、A(f2)を特定することが可能である。ここで、破損していないAデータ(n)をAデータ(t)(tは、0〜N−1の整数であって、f2以外の整数)と記載する。
(3-2-2) Second Restoration Process Next, the second restoration process will be described with reference to FIG. 10A. In the error correction program, in the second restoration process, A data (f2) (f2 is an integer of 0 to N−1) which is one of the A data (n) is damaged, and the P1 data is If it is not damaged, A (f2) can be specified. Here, the A data (n) which is not damaged is described as A data (t) (t is an integer of 0 to N-1 and is an integer other than f2).
図10Bは、一例として、Aデータ(0)〜Aデータ(3)のうちAデータ(1)が破損しており、且つ、P2データが破損しP1データが破損していない様子を示す。この場合、f2=1であり、tは0、2、3である。 FIG. 10B shows, as an example, a state in which A data (1) among A data (0) to A data (3) is damaged, P2 data is damaged, and P1 data is not damaged. In this case, f2 = 1 and t is 0, 2, 3.
S410では、全てのA(t)とP1との各々が示す値の排他的論理和を、A(f2)として算出する。なお、算出したA(f2)を、冗長化データにおけるAデータ(f2)に設定することで、Aデータ(f2)が復元されても良い。そして、第2復元処理を終了する。 In S410, the exclusive OR of the values indicated by all of A (t) and P1 is calculated as A (f2). Note that the A data (f2) may be restored by setting the calculated A (f2) to the A data (f2) in the redundant data. Then, the second restoration process is terminated.
(3−2−3)第3復元処理
次に、第3復元処理について、図10Cを用いて説明する。誤り訂正プログラムは、第3復元処理では、Aデータ(n)のうちの1つであるAデータ(f3)(f3は0〜N−1の整数)が破損しており、且つ、P2データが破損していない場合に、A(f3)を特定することが可能である。ここで、破損していないAデータ(n)をAデータ(t)(tは、0〜N−1の整数であって、f3以外の整数)と記載する。
(3-2-3) Third Restoration Process Next, the third restoration process will be described with reference to FIG. 10C. In the error correction program, in the third restoration process, one of the A data (n), A data (f3) (f3 is an integer of 0 to N-1) is damaged, and the P2 data is If it is not damaged, A (f3) can be specified. Here, the A data (n) which is not damaged is described as A data (t) (t is an integer from 0 to N−1 and is an integer other than f3).
図10Dは、一例として、Aデータ(0)〜Aデータ(3)のうちAデータ(1)が破損しており、且つ、P1データが破損しP2データが破損していない様子を示す。この場合、f3=1であり、tは0、2、3である。 FIG. 10D shows, as an example, a state in which A data (1) among A data (0) to A data (3) is damaged, P1 data is damaged, and P2 data is not damaged. In this case, f3 = 1 and t is 0, 2, 3.
S510では、A(t)に基づき、B(t)を算出する。すなわち、本実施形態おいては、A(0)とA(2)とA(3)とに基づき、B(0)とB(2)とB(3)とを算出する。 In S510, B (t) is calculated based on A (t). That is, in this embodiment, B (0), B (2), and B (3) are calculated based on A (0), A (2), and A (3).
S520では、全てのB(t)とP2との排他的論理和を示すビット列であるX3を算出する。
ここで、X3をS(f3)ビット下位側にシフトした値を、X3´とする。S530では、X3に基づきX3´を算出する。なお、X3´は、例えば、除算やシフト等により算出される。そして、X3´の最下位ビットから並ぶlビットのビット列を、A(f3)として特定する。なお、特定したA(f3)を、冗長化データにおけるAデータ(f3)に設定することで、Aデータ(f3)が復元されても良い。そして、第3復元処理を終了する。
In S520, X3, which is a bit string indicating the exclusive OR of all B (t) and P2, is calculated.
Here, a value obtained by shifting X3 to the lower side of S (f3) bits is assumed to be X3 ′. In S530, X3 ′ is calculated based on X3. X3 ′ is calculated by, for example, division or shift. Then, a 1-bit bit string arranged from the least significant bit of X3 ′ is specified as A (f3). Note that the A data (f3) may be restored by setting the specified A (f3) as the A data (f3) in the redundant data. Then, the third restoration process is terminated.
[3.効果]
本実施形態の誤り訂正プログラムによれば、ガロア体の積演算を用いること無く、排他的論理和等を用いてデータの誤り訂正が行われるので、データの誤り訂正において処理負荷を抑制することができる。また、冗長化データを生成する際には、A(n)をP2領域にメモリ転送しながら排他的論理和を行うことで、P2データが生成される。このため、冗長化データを生成する際の処理負荷を抑制できる。
[3. effect]
According to the error correction program of the present embodiment, since error correction of data is performed using exclusive OR or the like without using Galois field product operation, the processing load can be suppressed in data error correction. it can. Further, when generating redundant data, P2 data is generated by performing an exclusive OR while A (n) is transferred to the P2 area in the memory. For this reason, the processing load at the time of producing | generating redundant data can be suppressed.
[4.他の実施形態]
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
[4. Other Embodiments]
As mentioned above, although embodiment of this indication was described, this indication is not limited to the above-mentioned embodiment, and can carry out various modifications.
(4a)上記実施形態では、S(n)は、8の倍数に設定されていたが、これに限定されるものではない。S(n)は、例えば、S(0)=2、S(1)=8、S(2)=0、S(3)=4、といったように、8の倍数といったような所定の数の倍数でなく、任意に設定されうる。なお、上記実施形態及びこの例においては、いずれも、nとS(n)との対応を表すデータが管理データとして含まれる。また、S(n)にnの値そのものを用いてもよい。この場合、nとS(n)との対応を表すデータが管理データとして不要になる。これにより、管理データのための記憶領域を別の用途に活用することができる。 (4a) In the above embodiment, S (n) is set to a multiple of 8. However, the present invention is not limited to this. S (n) is a predetermined number such as a multiple of 8, such as S (0) = 2, S (1) = 8, S (2) = 0, S (3) = 4, etc. It is not a multiple and can be set arbitrarily. Note that, in the above embodiment and this example, data representing the correspondence between n and S (n) is included as management data. Further, the value of n itself may be used for S (n). In this case, data representing the correspondence between n and S (n) is not required as management data. Thereby, the storage area for the management data can be used for another purpose.
(4b)上述した誤り訂正プログラムにより動作するコンピュータに相当する、誤り訂正装置を構成してもよい。このような場合であっても、誤り訂正プログラムにより得られる効果と同様の効果を得ることができる。 (4b) You may comprise the error correction apparatus corresponded to the computer which operate | moves with the error correction program mentioned above. Even in this case, the same effect as that obtained by the error correction program can be obtained.
(4c)上記実施形態では、オリジナルデータから生成された冗長化データは、HDD20に対して、1つのコンピュータファイルとして記憶されていたが、これに限定されるものではない。冗長化データは、異なる複数のHDDに対して、HDD毎に分割して記憶されうる。また、冗長化データは、パケット単位に分割されて、送受信されうる。
(4c) In the above embodiment, the redundant data generated from the original data is stored as one computer file in the
HDDでは、セクタ単位でデータの書き込みが行われる。データの破損は、これらセクタ単位、パケット単位で発生する可能性が高い。Aデータ(n)と該Aデータ(n)から生成されたh(n)とを含むデータを、分割ブロックというものとする。分割ブロックの大きさは、セクタ又はパケットの整数倍となるように設定されることが望ましい。つまり、分割ブロックの大きさがセクタ又はパケットの整数倍となるように、Aデータ(n)のサイズであるLが設定されることが望ましい。 In the HDD, data is written in units of sectors. Data corruption is highly likely to occur in these sector units and packet units. Data including A data (n) and h (n) generated from the A data (n) is referred to as a divided block. The size of the divided block is desirably set to be an integral multiple of the sector or packet. That is, it is desirable to set L as the size of the A data (n) so that the size of the divided block is an integral multiple of the sector or the packet.
また、これによれば、分割ブロックの境界と、セクタ又はパケットによる境界とを一致させることができるので、セクタ又はブロックにおけるデータの破損が複数の分割ブロックに渡って影響を与えること、を抑制することができる。 Further, according to this, since the boundary of the divided block and the boundary by the sector or the packet can be made coincident, it is possible to suppress the data corruption in the sector or the block from affecting the plurality of divided blocks. be able to.
(4d)上記実施形態では、ハッシュ値を付加データとして用いたが、これに限定されるものではない。付加データは、例えば、周知のパリティ符号といったように、Aデータ(n)、P1データ、P2データが破損しているか否かを特定できる情報であればよい。 (4d) Although the hash value is used as additional data in the above embodiment, the present invention is not limited to this. The additional data may be information that can specify whether the A data (n), the P1 data, and the P2 data are damaged, such as a known parity code.
(4e)上記実施形態では、オリジナルデータを分割して複数のAデータ(n)を生成し、Aデータ(n)に基づいてP1データ及びP2データを生成し、少なくともこれらを含む冗長化データを生成したが、これに限定されるものではない。冗長化プログラムは、例えば、Aデータ(n)の各々を更に小分割サイズK(K<L)に分割するように構成されてもよい。そして、冗長化プログラムは、該小分割サイズKのデータをAデータ(n)と見なして、同様に、P1データ及びP2データを生成して記憶するように構成されてもよい。つまり、オリジナルデータに全体に対してP1データ及びP2データといった2つのパリティが1組だけ生成されるのではなく、オリジナルデータに全体に対してP1データ及びP2データが複数組生成されてもよい。これによれば、より耐障害性を向上させることができる。 (4e) In the above embodiment, the original data is divided to generate a plurality of A data (n), P1 data and P2 data are generated based on the A data (n), and at least redundant data including these is generated. Although it produced | generated, it is not limited to this. For example, the redundancy program may be configured to further divide each of the A data (n) into small division sizes K (K <L). The redundancy program may be configured to regard the data of the small division size K as A data (n) and similarly generate and store P1 data and P2 data. That is, not only one set of two parities such as P1 data and P2 data is generated for the entire original data, but a plurality of sets of P1 data and P2 data may be generated for the entire original data. According to this, the fault tolerance can be further improved.
(4f)上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。 (4f) A plurality of functions of one constituent element in the embodiment may be realized by a plurality of constituent elements, or a single function of one constituent element may be realized by a plurality of constituent elements. . Further, a plurality of functions possessed by a plurality of constituent elements may be realized by one constituent element, or one function realized by a plurality of constituent elements may be realized by one constituent element. Moreover, you may abbreviate | omit a part of structure of the said embodiment. In addition, at least a part of the configuration of the above embodiment may be added to or replaced with the configuration of the other embodiment. In addition, all the aspects included in the technical idea specified from the wording described in the claims are embodiments of the present disclosure.
[5.特許請求の範囲との対応]
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。冗長化処理(S110〜S160)が生成部に相当し、S210が特定部に相当し、S215〜S250が復元部に相当する。
[5. Correspondence with Claims]
The correspondence between the terms used in the description of the above embodiment and the terms used in the description of the claims is shown. Redundancy processing (S110 to S160) corresponds to a generation unit, S210 corresponds to a specific unit, and S215 to S250 correspond to a restoration unit.
1…PC、10…ディスプレイ、20…HDD、30…CPU、40…ROM、50…RAM、60…入力装置。
DESCRIPTION OF
Claims (5)
2進数で表した値における0又は1の値の並びを、ビット列とし、
前記Aデータ(n)が示す前記ビット列を、A(n)とし、
前記A(n)の各々に対応する整数であって、各整数は他の整数とは異なる値を有する整数を、S(n)とし、前記S(n)の最大値をSmaxとし、
前記A(n)に対応しており、ビット長が前記Smaxと前記lとを加算した値である前記ビット列を、B(n)とし、前記B(n)は、前記S(n)を指数として2を累乗した値と、前記A(n)が示す値とを乗算した値を示し、
全ての前記A(n)の排他的論理和を示す前記ビット列であるP1を示すデータを、P1データとし、全ての前記B(n)の排他的論理和を示す前記ビット列であるP2を示すデータを、P2データとし、
前記Aデータ(n)に基づき前記P1データ及び前記P2データを生成し、前記Aデータ(n)、前記P1データ、及び、前記P2データの各々について、当該データの誤りを検出するための付加データを生成し、前記Aデータ(n)、前記P1データ、前記P2データ、及び、前記付加データを、前記冗長化データとする生成部と、
前記冗長化データに含まれる前記付加データに基づき、該冗長化データに含まれる前記Aデータ(n)、前記P1データ、及び、前記P2データのうちの破損しているデータを特定する特定部と、
前記冗長化データにおいて、前記Aデータ(n)のうちの2つが破損しており、且つ、前記P1データ及び前記P2データが破損していない場合に、前記冗長化データに基づき、破損している2つの前記Aデータ(n)を復元する復元部として、コンピュータを動作させ、
破損している2つの前記Aデータ(n)のnの値を、f0、f1(f0、f1は0〜N−1の整数)とし、破損していない前記Aデータ(n)のnの値を、t(tは、0〜N−1の整数であって、f0、f1以外の整数)とし、
前記A(f0)と前記A(f1)との排他的論理和を示す前記ビット列を、X0とし、
前記B(f0)と前記B(f1)との排他的論理和を示す前記ビット列を、X1とし、
前記B(f0)において、当該B(f0)に含まれる前記A(f0)の最下位ビット、最上位ビットに相当するビットの位置を、それぞれ、bl、bmとし、前記X1における前記blから前記bmまでの前記ビット列を、X1Aとし、
前記復元部は、
全ての前記A(t)と前記P1との排他的論理和を算出することで、前記X0を算出し、
前記A(t)に基づき算出された全ての前記B(t)と前記P2との排他的論理和に基づき、前記X1Aを算出し、
前記S(f0)と前記S(f1)との差の絶対値を指数として2を累乗した値を、Sとし、
前記A(f1)が示す値を前記Sで除算した値を示す、ビット長が前記lである前記ビット列、又は、前記A(f1)が示す値を前記Sで乗算した値を示す前記ビット列における、最下位ビットから並ぶビット長が前記lである前記ビット列を、A´(f1)とし、
前記X0と前記X1Aとの排他的論理和を算出することで、前記A(f1)と前記A´(f1)との排他的論理和であるX2を算出し、
前記X2に基づき前記A(f1)を特定し、特定した前記A(f1)と、前記P1又は前記P2とに基づき、前記A(f0)を特定し、特定した前記A(f0)及び前記A(f1)に基づき、前記Aデータ(f0)及び前記Aデータ(f1)を復元する
誤り訂正プログラム。 Redundant data is generated from N pieces of N data (N is an integer of 2 or more) having a bit length of 1 (n is an integer of 0 to N-1), and the A data is generated from the redundant data. An error correction program for operating a computer as a device for generating (n),
A sequence of 0 or 1 values in a binary number is a bit string,
The bit string indicated by the A data (n) is A (n),
S (n) is an integer corresponding to each of the A (n), each integer having a value different from other integers, and the maximum value of the S (n) is Smax,
The bit string corresponding to A (n) and having a bit length obtained by adding Smax and l is B (n), and B (n) is an index of S (n). Represents a value obtained by multiplying a value obtained by raising 2 to the value indicated by A (n),
Data indicating P1 which is the bit string indicating the exclusive OR of all the A (n) is P1 data, and data indicating P2 which is the bit string indicating the exclusive OR of all the B (n) Is P2 data,
The P1 data and the P2 data are generated based on the A data (n), and additional data for detecting an error in the data for each of the A data (n), the P1 data, and the P2 data Generating the A data (n), the P1 data, the P2 data, and the additional data as the redundant data;
Based on the additional data included in the redundant data, a specifying unit that specifies damaged data among the A data (n), the P1 data, and the P2 data included in the redundant data; ,
In the redundant data, when two of the A data (n) are damaged and the P1 data and the P2 data are not damaged, the redundant data is damaged based on the redundant data. As a restoration unit for restoring the two A data (n), the computer is operated,
The values of n of the two damaged A data (n) are f0 and f1 (f0, f1 is an integer of 0 to N-1), and the value of n of the A data (n) that is not damaged , T (t is an integer from 0 to N-1 and is an integer other than f0 and f1),
The bit string indicating the exclusive OR of A (f0) and A (f1) is X0,
The bit string indicating the exclusive OR of B (f0) and B (f1) is X1,
In B (f0), the positions of the bits corresponding to the least significant bit and the most significant bit of A (f0) included in B (f0) are bl and bm, respectively, and from the bl in the X1 to the The bit string up to bm is X1A,
The restoration unit
X0 is calculated by calculating an exclusive OR of all the A (t) and P1.
Based on the exclusive OR of all the B (t) and P2 calculated based on the A (t), the X1A is calculated.
A value obtained by raising the absolute value of the difference between S (f0) and S (f1) to an exponent of 2 is defined as S,
In the bit string indicating the value obtained by dividing the value indicated by A (f1) by S, the bit string having a bit length of l, or the bit string indicating the value obtained by multiplying the value indicated by A (f1) by S , The bit string whose bit length arranged from the least significant bit is l is A ′ (f1),
By calculating the exclusive OR of X0 and X1A, X2 that is the exclusive OR of A (f1) and A ′ (f1) is calculated,
The A (f1) is identified based on the X2, the A (f0) is identified based on the identified A (f1) and the P1 or P2, and the identified A (f0) and A An error correction program for restoring the A data (f0) and the A data (f1) based on (f1).
前記復元部は、
前記Aデータ(n)のうちの1つである前記Aデータ(f2)(f2は0〜N−1の整数)が破損しており、且つ、前記P1データが破損していない場合に、
破損していない前記Aデータ(n)を前記Aデータ(t)(tは、0〜N−1の整数であって、f2以外の整数)とし、
全ての前記A(t)と前記P1との排他的論理和を前記A(f2)として算出し、算出した前記A(f2)に基づき前記Aデータ(f2)を復元する
誤り訂正プログラム。 The error correction program according to claim 1,
The restoration unit
When the A data (f2) (f2 is an integer of 0 to N-1) which is one of the A data (n) is damaged and the P1 data is not damaged,
The A data (n) that is not damaged is the A data (t) (t is an integer of 0 to N-1 and is an integer other than f2),
An error correction program that calculates an exclusive OR of all the A (t) and the P1 as the A (f2) and restores the A data (f2) based on the calculated A (f2).
前記復元部は、
前記Aデータ(n)のうちの1つである前記Aデータ(f3)(f3は0〜N−1の整数)が破損しており、且つ、前記P2データが破損していない場合に、
破損していない前記Aデータ(n)を前記Aデータ(t)(tは、0〜N−1の整数であって、f3以外の整数)とし、
全ての前記B(t)と前記P2との排他的論理和を前記B(f3)として算出し、算出した前記B(f3)に基づき前記Aデータ(f3)を復元する
誤り訂正プログラム。 The error correction program according to claim 1 or 2,
The restoration unit
When the A data (f3) (f3 is an integer of 0 to N-1) that is one of the A data (n) is damaged and the P2 data is not damaged,
The A data (n) that is not damaged is the A data (t) (t is an integer from 0 to N-1 and is an integer other than f3),
An error correction program that calculates an exclusive OR of all the B (t) and the P2 as the B (f3) and restores the A data (f3) based on the calculated B (f3).
前記冗長化データを1つのコンピュータファイルとして出力する
誤り訂正プログラム。 The error correction program according to any one of claims 1 to 3,
An error correction program for outputting the redundant data as one computer file.
2進数で表した値における0又は1の値の並びを、ビット列とし、
前記Aデータ(n)が示す前記ビット列を、A(n)とし、
前記A(n)の各々に対応する整数であって、各整数は他の整数とは異なる値を有する整数を、S(n)とし、前記S(n)の最大値をSmaxとし、
前記A(n)に対応しており、ビット長が前記Smaxと前記lとを加算した値である前記ビット列を、B(n)とし、前記B(n)は、前記S(n)を指数として2を累乗した値と、前記A(n)が示す値とを乗算した値を示し、
全ての前記A(n)の排他的論理和を示す前記ビット列であるP1を示すデータを、P1データとし、全ての前記B(n)の排他的論理和を示す前記ビット列であるP2を示すデータを、P2データとし、
前記Aデータ(n)に基づき前記P1データ及び前記P2データを生成し、前記Aデータ(n)、前記P1データ、及び、前記P2データの各々について、当該データの誤りを検出するための付加データを生成し、前記Aデータ(n)、前記P1データ、前記P2データ、及び、前記付加データを、前記冗長化データとする生成部と、
前記冗長化データに含まれる前記付加データに基づき、該冗長化データに含まれる前記Aデータ(n)、前記P1データ、及び、前記P2データのうちの破損しているデータを特定する特定部と、
前記冗長化データにおいて、前記Aデータ(n)のうちの2つが破損しており、且つ、前記P1データ及び前記P2データが破損していない場合に、前記冗長化データに基づき、破損している2つの前記Aデータ(n)を復元する復元部と、を備え、
破損している2つの前記Aデータ(n)のnの値を、f0、f1(f0、f1は0〜N−1の整数)とし、破損していない前記Aデータ(n)のnの値を、t(tは、0〜N−1の整数であって、f0、f1以外の整数)とし、
前記A(f0)と前記A(f1)との排他的論理和を示す前記ビット列を、X0とし、
前記B(f0)と前記B(f1)との排他的論理和を示す前記ビット列を、X1とし、
前記B(f0)において、当該B(f0)に含まれる前記A(f0)の最下位ビット、最上位ビットに相当するビットの位置を、それぞれ、bl、bmとし、前記X1における前記blから前記bmまでの前記ビット列を、X1Aとし、
前記復元部は、
全ての前記A(t)と前記P1との排他的論理和を算出することで、前記X0を算出し、
前記A(t)に基づき算出された全ての前記B(t)と前記P2との排他的論理和に基づき、前記X1Aを算出し、
前記S(f0)と前記S(f1)との差の絶対値を指数として2を累乗した値を、Sとし、
前記A(f1)が示す値を前記Sで除算した値を示す、ビット長が前記lである前記ビット列、又は、前記A(f1)が示す値を前記Sで乗算した値を示す前記ビット列における、最下位ビットから並ぶビット長が前記lである前記ビット列を、A´(f1)とし、
前記X0と前記X1Aとの排他的論理和を算出することで、前記A(f1)と前記A´(f1)との排他的論理和であるX2を算出し、
前記X2に基づき前記A(f1)を特定し、特定した前記A(f1)と、前記P1又は前記P2とに基づき、前記A(f0)を特定し、特定した前記A(f0)及び前記A(f1)に基づき、前記Aデータ(f0)及び前記Aデータ(f1)を復元する
誤り訂正装置。 Redundant data is generated from N pieces of N data (N is an integer of 2 or more) having a bit length of 1 (n is an integer of 0 to N-1), and the A data is generated from the redundant data. An error correction device for operating a computer as a device for generating (n),
A sequence of 0 or 1 values in a binary number is a bit string,
The bit string indicated by the A data (n) is A (n),
S (n) is an integer corresponding to each of the A (n), each integer having a value different from other integers, and the maximum value of the S (n) is Smax,
The bit string corresponding to A (n) and having a bit length obtained by adding Smax and l is B (n), and B (n) is an index of S (n). Represents a value obtained by multiplying a value obtained by raising 2 to the value indicated by A (n),
Data indicating P1 which is the bit string indicating the exclusive OR of all the A (n) is P1 data, and data indicating P2 which is the bit string indicating the exclusive OR of all the B (n) Is P2 data,
The P1 data and the P2 data are generated based on the A data (n), and additional data for detecting an error in the data for each of the A data (n), the P1 data, and the P2 data Generating the A data (n), the P1 data, the P2 data, and the additional data as the redundant data;
Based on the additional data included in the redundant data, a specifying unit that specifies damaged data among the A data (n), the P1 data, and the P2 data included in the redundant data; ,
In the redundant data, when two of the A data (n) are damaged and the P1 data and the P2 data are not damaged, the redundant data is damaged based on the redundant data. A restoration unit for restoring the two A data (n),
The values of n of the two damaged A data (n) are f0 and f1 (f0, f1 is an integer of 0 to N-1), and the value of n of the A data (n) that is not damaged , T (t is an integer from 0 to N-1 and is an integer other than f0 and f1),
The bit string indicating the exclusive OR of A (f0) and A (f1) is X0,
The bit string indicating the exclusive OR of B (f0) and B (f1) is X1,
In B (f0), the positions of the bits corresponding to the least significant bit and the most significant bit of A (f0) included in B (f0) are bl and bm, respectively, and from the bl in the X1 to the The bit string up to bm is X1A,
The restoration unit
X0 is calculated by calculating an exclusive OR of all the A (t) and P1.
Based on the exclusive OR of all the B (t) and P2 calculated based on the A (t), the X1A is calculated.
A value obtained by raising the absolute value of the difference between S (f0) and S (f1) to an exponent of 2 is defined as S,
In the bit string indicating the value obtained by dividing the value indicated by A (f1) by S, the bit string having a bit length of l, or the bit string indicating the value obtained by multiplying the value indicated by A (f1) by S , The bit string whose bit length arranged from the least significant bit is l is A ′ (f1),
By calculating the exclusive OR of X0 and X1A, X2 that is the exclusive OR of A (f1) and A ′ (f1) is calculated,
The A (f1) is identified based on the X2, the A (f0) is identified based on the identified A (f1) and the P1 or P2, and the identified A (f0) and A An error correction device for restoring the A data (f0) and the A data (f1) based on (f1).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017101669A JP2018198358A (en) | 2017-05-23 | 2017-05-23 | Error correction program, and error correction device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017101669A JP2018198358A (en) | 2017-05-23 | 2017-05-23 | Error correction program, and error correction device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018198358A true JP2018198358A (en) | 2018-12-13 |
Family
ID=64663064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017101669A Pending JP2018198358A (en) | 2017-05-23 | 2017-05-23 | Error correction program, and error correction device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018198358A (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004165922A (en) * | 2002-11-12 | 2004-06-10 | Sony Corp | Apparatus, method, and program for information processing |
JP2008186400A (en) * | 2007-01-31 | 2008-08-14 | Fujitsu Ltd | Raid system and data recovery apparatus using galois field |
-
2017
- 2017-05-23 JP JP2017101669A patent/JP2018198358A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004165922A (en) * | 2002-11-12 | 2004-06-10 | Sony Corp | Apparatus, method, and program for information processing |
JP2008186400A (en) * | 2007-01-31 | 2008-08-14 | Fujitsu Ltd | Raid system and data recovery apparatus using galois field |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111553473B (en) | Data redundancy method and neural network processor for executing the same | |
CN104052576B (en) | Data recovery method based on error correcting codes in cloud storage | |
CN110750382B (en) | Minimum storage regeneration code coding method and system for improving data repair performance | |
CN112860475B (en) | Method, device, system and medium for recovering check block based on RS erasure code | |
WO2020047707A1 (en) | Data coding, decoding and repairing method for distributed storage system | |
WO2016082156A1 (en) | Metadata recovery method and apparatus | |
US20210218419A1 (en) | Method, device and apparatus for storing data, computer readable storage medium | |
CN112000512B (en) | Data restoration method and related device | |
KR101801075B1 (en) | Method, apparatus, and system for reading and writing data | |
WO2018000788A1 (en) | Data-storage method and apparatus, and data-recovery method and apparatus | |
CN112799875B (en) | Method, system, device and medium for verification recovery based on Gaussian elimination | |
CN110990189A (en) | Data storage method and device, electronic equipment and computer readable storage medium | |
CN111782152A (en) | Data storage method, data recovery device, server and storage medium | |
CN105094924A (en) | Import method and device of mirror image files | |
CN111857603B (en) | Data processing method and related device | |
CN114385409A (en) | Encoding method based on erasure code, distributed system, device and storage medium | |
CN106802837B (en) | Method and device for updating error detection and correcting ECC code | |
US20080133967A1 (en) | Distributed object sharing system and method thereof | |
CN113468118B (en) | File increment storage method, device and storage medium based on blockchain | |
JP2018198358A (en) | Error correction program, and error correction device | |
CN114691414A (en) | Check block generation method and data recovery method | |
US20200112322A1 (en) | Multi-dimensional quasi-cyclic (qc) low-density parity-check (ldpc) code constructions | |
CN115454711A (en) | Method, device and medium for recovering erasure correction data in distributed storage system | |
CN115202589A (en) | Placement group member selection method, device, equipment and readable storage medium | |
CN107463462B (en) | Data restoration method and data restoration device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20190312 |