WO2014115277A1 - ストレージ装置およびストレージ装置制御方法 - Google Patents

ストレージ装置およびストレージ装置制御方法 Download PDF

Info

Publication number
WO2014115277A1
WO2014115277A1 PCT/JP2013/051392 JP2013051392W WO2014115277A1 WO 2014115277 A1 WO2014115277 A1 WO 2014115277A1 JP 2013051392 W JP2013051392 W JP 2013051392W WO 2014115277 A1 WO2014115277 A1 WO 2014115277A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
crc
code
processor
partial
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.)
Ceased
Application number
PCT/JP2013/051392
Other languages
English (en)
French (fr)
Inventor
笠原 信一
昌宏 井出
小島 徹也
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014558362A priority Critical patent/JP6046750B2/ja
Priority to PCT/JP2013/051392 priority patent/WO2014115277A1/ja
Priority to US14/758,929 priority patent/US9720767B2/en
Publication of WO2014115277A1 publication Critical patent/WO2014115277A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Definitions

  • the present invention relates to a data guarantee technique in a storage apparatus.
  • Patent Document 1 A technique for generating and confirming a guarantee code for transferred data in a communication interface between a storage apparatus and a host computer is known (Patent Document 1).
  • the DMA controller calculates a guarantee code for the concatenated data.
  • a certain DMA controller performs a certain data guarantee code calculation, and another DMA controller takes over the result of the calculation and transfers the next data.
  • the guarantee code is calculated. In this case, even if a plurality of DMA controllers are used, it is difficult to improve the data transfer performance because it is necessary to sequentially calculate a plurality of data.
  • a storage apparatus includes a channel control unit connected to a host computer, a storage unit connected to the channel control unit, the channel control unit, and the storage unit Connected to the processor.
  • the channel control unit has a plurality of calculation units.
  • the processor receives a request to read a plurality of element data from the host computer, the processor designates the plurality of element data for the plurality of arithmetic units, respectively.
  • the plurality of arithmetic units respectively read the plurality of element data from the storage unit, calculate a plurality of partial codes that are a plurality of guarantee codes based on the plurality of element data, and send the plurality of parts to the processor. Send each code.
  • the processor calculates a sequence code, which is a guarantee code of sequence data including the plurality of concatenated element data, based on the plurality of partial codes.
  • FIG. 1 shows the configuration of a storage apparatus according to an embodiment of the present invention.
  • FIG. 2 shows the configuration of the channel adapter 220.
  • FIG. 3 shows an example of response data for a multitrack read request.
  • FIG. 4 schematically shows the multitrack read process.
  • FIG. 5 shows the DMA processing.
  • FIG. 6 shows the final CRC process.
  • FIG. 7 shows a specific example of CRC final processing.
  • FIG. 8 shows the operation of the DMA controller and the MP 240 regarding CRC calculation.
  • aaa table such as “aaa list”, “aaaDB”, “aaa queue”, etc.
  • these information include tables, lists, DBs, queues, etc. It may be expressed by other than the data structure. Therefore, “aaa table”, “aaa list”, “aaaDB”, “aaa queue”, etc. may be referred to as “aaa information” to indicate that they are not dependent on the data structure.
  • program is used as the subject.
  • the program performs processing determined by being executed by the processor using the memory and the communication port (communication control device)
  • the processor is used as the subject.
  • the explanation may be as follows. Further, the processing disclosed with the program as the subject may be processing performed by a computer such as a management server or an information processing apparatus. Further, part or all of the program may be realized by dedicated hardware.
  • various programs may be installed in the storage device by a program distribution server or a computer-readable storage medium.
  • FIG. 1 shows a configuration of a storage apparatus according to an embodiment of the present invention.
  • the storage apparatus 100 shown in this figure is connected to a plurality of host computers 400.
  • the storage apparatus 100 includes a storage controller 200 and a plurality of HDD (Hard Disk Drive) 300.
  • the storage controller 200 is connected to the host computer 400 via a SAN (Storage Area Network) or the like.
  • the plurality of HDDs 300 are connected to the storage controller 200.
  • the storage apparatus 100 may be connected to one host computer 400. Further, the storage apparatus 100 may have one HDD 300. Further, instead of the HDD 300, another drive such as SSD (Solid State Drive) may be used.
  • SSD Solid State Drive
  • the storage controller 200 includes a switch (SW) 210, a plurality of channel adapters (CHA) 220, a plurality of data caches (Cache) 230, a plurality of MPs (Microprocessor) 240, and a plurality of disk adapters (DKA) 250.
  • SW switch
  • CH channel adapters
  • CH data caches
  • MP Microprocessor
  • DKA disk adapters
  • the storage controller 200 may have one data cache 230, one MP 240, or one disk adapter 250.
  • the switch 210 controls communication among the channel adapter 220, the data cache 230, the MP 240, and the disk adapter 250.
  • the channel adapter 220 is connected to the host computer 400 and controls communication with the host computer 400.
  • the data cache 230 stores data transmitted to the host computer 400 and data received from the host computer 400.
  • the data cache 230 further has a shared memory.
  • the shared memory stores programs and data used by the MP 240.
  • the MP 240 controls each unit of the storage apparatus 100 based on the program and data stored in the shared memory.
  • the disk adapter 250 is connected to the HDD 300 and controls communication with the HDD 300.
  • FIG. 2 shows the configuration of the channel adapter 220.
  • the channel adapter 220 includes a plurality of host channel control LSIs (large-scale integration) 510, a DMA LSI 520, and a plurality of intermediate buffers (DXBF) 530.
  • the channel adapter 220 may have one host channel control LSI 510.
  • the channel adapter 220 may have one intermediate buffer 530.
  • the host channel control LSI 510 includes a communication control unit 511 and an internal buffer 512.
  • the communication control unit 511 is connected to the host computer 400 and controls communication with the host computer 400 according to a predetermined protocol.
  • the communication control unit 511 uses FICON (Fiber Connectivity) -HPF (High Performance), but other protocols may be used.
  • the internal buffer 512 stores data to be transmitted to the host computer 400.
  • the intermediate buffer 530 is a DRAM (Dynamic Random Access Memory), for example, and stores data transferred from the data cache 230 by the DMA LSI 520.
  • DRAM Dynamic Random Access Memory
  • the DMA LSI 520 includes a plurality of DMA controllers (DMAC) 521.
  • DMAC DMA controllers
  • Each of the plurality of DMA controllers 521 may be a different DMA circuit or a virtual DMA controller to which a DMA circuit is assigned.
  • one DMA circuit in the DMA LSI 520 may be logically divided into a plurality of DMA controllers 521.
  • the DMA circuit calculates a guarantee code.
  • the guarantee code in this embodiment is a CRC, and the DMA circuit calculates a 4-byte CRC using an initial value of 4 bytes and an input having a length that is a multiple of 4 bytes.
  • the CRC generator polynomial is represented by, for example, 0x04C11DB7.
  • the guarantee code may be another error detection code or error correction code.
  • the DMA controller 521 reads data from the data cache 230 in accordance with an instruction from the MP 240, performs CRC calculation based on the read data, and writes the read data to the intermediate buffer 530.
  • FICON-HPF supports a multi-track read request for connecting and transferring a plurality of tracks by one read request.
  • the track here is data of an arbitrary length specified in units of 1 byte.
  • the storage apparatus 100 When the host computer 400 transmits a multitrack read request to the storage apparatus 100, the storage apparatus 100 performs multitrack read processing.
  • the multi-track read request specifies a plurality of tracks.
  • FIG. 3 shows an example of response data to the multitrack read request.
  • the storage apparatus 100 Upon receipt of the multi-track read request, the storage apparatus 100 transmits to the host computer 400 response data in which a plurality of tracks are concatenated in the order requested, a final PAD, and a final CRC.
  • Data obtained by concatenating the final PAD after the concatenated data is defined as the shaped data.
  • the length of the shaped data is a multiple of 4 bytes.
  • the final PAD is ALL zero data for adjusting the length.
  • the final CRC is the CRC of the shaped data.
  • the length of the final CRC is 4 bytes.
  • the MP 240 calculates the smallest multiple of 4 bytes that is equal to or greater than the concatenated data length as the shaped data length, and calculates a value obtained by subtracting the concatenated data length from the shaped data length as the final PAD length. Further, when the final PAD length is not 0, the MP 240 generates a final PAD that is ALL zero data of the final PAD length.
  • FIG. 4 schematically shows multitrack read processing.
  • the multi-track read request here specifies three tracks T (0), T (1), and T (2) stored in the storage apparatus 100.
  • the DMA LSI 520 includes three DMA controllers 521, X (0), X (1), and X (2).
  • T (0), T (1), and T (2) indicate states stored in the data cache 230. If any of T (0), T (1), and T (2) is determined to be a cache miss, the disk adapter 250 reads the track determined to be a cache miss from the HDD 300 and writes it to the data cache 230.
  • the host computer 400 issues a multitrack read request to the host channel control LSI 510 (S110).
  • the host channel control LSI 510 sends the multitrack read request to the MP 240 (S120).
  • the MP 240 Upon receiving the multitrack read request, the MP 240 assigns T (0) data transfer to X (0) and performs T (1) in order to perform data transfer of a plurality of tracks in parallel based on the multitrack read request. ) Is assigned to X (1), and T (2) is assigned to X (2). Thereafter, the MP 240 sends a transfer activation request designating T (0) to X (0) by CCW (channel command word) (S130), and sends a transfer activation request designating T (1) to X (1). Send (S140), a transfer activation request designating T (2) is sent to X (2) (S150).
  • CCW channel command word
  • X (0) activates DMA (0), which is T (0) DMA processing (S160).
  • DMA (0) reads T (0) in the data cache 230, performs CRC calculation based on T (0), and transfers T (0) to the intermediate buffer 530.
  • X (1) activates DMA (1), which is the DMA processing of T (1) (S170).
  • DMA (1) reads T (1) in the data cache 230, performs CRC calculation based on T (1), and transfers T (1) to the intermediate buffer 530.
  • X (2) activates DMA (2), which is the DMA processing of T (2) (S180). With DMA (2), X (2) reads T (2) in the data cache 230, performs CRC calculation based on T (2), and transfers T (2) to the intermediate buffer 530.
  • X (0) When DMA (0) is completed, X (0) sends a transfer completion report indicating the result of DMA (0) to MP 240 (S190). When DMA (1) is completed, X (1) sends a transfer completion report indicating the result of DMA (1) to MP 240 (S200). When DMA (2) is completed, X (2) sends a transfer completion report indicating the result of DMA (2) to MP 240 (S210).
  • the MP 240 Upon receiving the transfer completion report from X (0), X (1), and X (2), the MP 240 performs final CRC processing for calculating the final PAD and final CRC based on the transfer completion report (S220). Thereafter, the MP 240 writes the final PAD and the final CRC to the intermediate buffer 530 (S230), and sends a data transfer start instruction instructing transfer of response data to the host computer 400 to the host channel control LSI 510 (S240).
  • the host channel control LSI 510 receives the data transfer start instruction, the host channel control LSI 510 reads T (0), T (1), T (2), final PAD, and final CRC from the intermediate buffer 530, and gives an address offset in units of 1 byte. , T (0), T (1), T (2), final PAD, and final CRC are concatenated and stored in the internal buffer 512 as response data (S250). Thereafter, the host channel control LSI 510 transmits response data to the host computer 400 (S260). When the transfer of the response data is completed, the host channel control LSI 510 transmits a status response to the multitrack read request to the host computer 400 (S270).
  • the MP 240 assigns a plurality of tracks to be read to the plurality of DMA controllers 521, so that the plurality of DMA controllers 521 can perform a plurality of DMA processes in parallel.
  • the MP 240 can perform calculation based on the processing results of the plurality of DMA controllers 521, thereby calculating the CRC of data in which a plurality of tracks are sequentially connected.
  • any one of the intermediate buffer 530 and the internal buffer 512 may be used.
  • the DMA controller 521 may transfer the data in the data cache 230 to the internal buffer 512.
  • the communication control unit 511 may transfer the data in the intermediate buffer 530 to the host computer 400.
  • FIG. 5 shows the DMA processing
  • the transfer activation request includes a track length (transfer length), a transmission source address that is the address of the track in the data cache 230, a transmission destination address that is a transmission destination address in the intermediate buffer 530, and an initial CRC value. Including.
  • the transfer activation request may include information indicating whether or not to generate the CRC of the track.
  • the MP 240 designates 0xFFFFFF as the initial CRC value in the transfer activation request for the first track of the multi-track read request, and designates 0x00000000 as the initial CRC value in the transfer activation request for the track other than the first track.
  • the initial CRC value in the transfer activation request to X (0) is 0xFFFFFF
  • the initial CRC value in the transfer activation request to X (1) and X (2) is 0x00000000.
  • the transfer activation request to each DMA controller 521 designates a predetermined value as the CRC initial value, it is not necessary to include the result of CRC calculation by another DMA controller 521.
  • the DMA controller 521 obtains the track length from the transfer activation request, calculates a remainder obtained by dividing the track length by 4 bytes as a fraction data length, calculates a value obtained by subtracting the fraction data length from 4 bytes as a track PAD length, A value obtained by subtracting the fraction data length from the track length is calculated as a shortened data length, and a value obtained by adding the track PAD length to the track length is calculated as an extended data length.
  • the DMA controller 521 extracts data from the beginning to the shortened data length of the track as shortened data, and extracts data of the fraction data length following the shortened data from the track as fraction data.
  • the DMA controller 521 connects the track PAD, which is ALL zero data of the track PAD length, after the track to obtain extension data.
  • the shortened data length is a multiple of the largest 4 bytes below the track length
  • the extended data length is a multiple of the smallest 4 bytes above the track length.
  • the DMA controller 521 reads the track from the transmission source address of the data cache 230, calculates the shortened data CRC which is the CRC of the shortened data, and writes the extended data to the destination address of the intermediate buffer 530.
  • the DMA controller 521 sends a transfer completion report for the transfer activation request to the MP 240.
  • the transfer completion report includes abbreviated data CRC and fraction data.
  • X (0) divides T (0) into T (0) _t that is shortened data and T (0) _dat that is fractional data, and 0xFFFFFFFF T (0) _crc, which is the shortened data CRC, is calculated using the input T (0) _t as an initial value.
  • X (1) divides T (1) into T (1) _t which is shortened data and T (1) _dat which is fractional data, and 0x00000000 is set as an initial value and T (1) _t is set as T (1) _t.
  • T (1) _crc which is the shortened data CRC, is calculated as an input.
  • T (2) _t which is shortened data
  • T (2) _dat which is fractional data
  • 0x00000000 is set as an initial value
  • T (2) _t is set as T (2) _t.
  • T (2) _crc which is the shortened data CRC, is calculated as an input.
  • each DMA controller 521 uses the value specified by the MP 240 as the initial CRC value, so there is no need to take over the CRC calculated by another DMA controller 521. Thereby, the plurality of DMA controllers 521 can perform CRC calculation in parallel. Further, since the DMA controller 521 sends fractional data of less than 4 bytes to the MP 240 and does not perform CRC calculation of the fractional data, a DMA circuit that performs CRC calculation in units of 4 bytes can be used. Thereby, an increase in the circuit scale of the DMA controller 521 can be prevented.
  • FIG. 6 shows the final CRC process.
  • the track number is i
  • the last track number is n
  • the shortened data CRC of T (i) is T (i) _crc
  • the fractional data of T (i) is T (i) _dat
  • T The length (byte) of (i) is T (i) _len
  • the temporary CRC is temp_crc
  • the temporary data length is temp_len
  • the length [byte] of the final PAD is pad_len.
  • the MP 240 acquires T (i) _crc and T (i) _dat from the transfer completion report from the DMA controller 521.
  • the MP 240 initializes variables (S310).
  • the MP 240 substitutes 0 for i, and substitutes T (0) _crc for temp_crc.
  • the MP 240 calculates a new temp_crc by performing CRC calculation with temp_crc as an initial value and T (i) _dat as an input (S320). If the CRC calculation function is Fd, this processing is expressed by the following equation.
  • Temp_crc Fd (temp_crc, T (i) _dat)
  • temp_crc becomes the CRC of the data up to T (i).
  • the MP 240 calculates a new temp_crc by performing a CRC operation using temp_crc as an initial value and ALL zero data having a length of temp_len as an input (S360).
  • a function for calculating CRC using a certain initial value and an input of ALL zero data having a certain length is Fz, this processing is expressed by the following equation.
  • Temp_crc Fz (temp_crc, temp_len)
  • the MP 240 calculates a new temp_crc by performing an XOR (exclusive OR) operation of temp_crc and T (i) _crc in bit units (S370), and shifts the processing to S320.
  • XOR exclusive OR
  • this processing is expressed by the following equation.
  • Temp_crc becomes a CRC of data up to T (i) _t by the processing so far.
  • the MP 240 sets the initial value as temp_crc, inputs ALL zero data of the length of pad_len, and performs a CRC operation to calculate a new temp_crc (S380). ).
  • this process is expressed by the following equation.
  • Temp_crc becomes the CRC of the shaped data by the processing so far.
  • the MP 240 calculates the final CRC by performing bit inversion of temp_crc in accordance with the FICON-HPF specification (S390), and ends this flow. Using the aforementioned xor, this process is expressed by the following equation.
  • Temp_crc temp_crc xor 0xFFFFFFFF
  • the MP 240 can calculate the final CRC of the shaped data based on the shortened data CRC of each track calculated by the DMA controller 521.
  • the MP 240 calculates the CRC of the fraction data, so that the track length can be specified in units of 1 byte, and the DMA controller 521 can perform CRC calculation in units of 4 bytes, and the circuit scale of the DMA controller 521 Can be prevented.
  • the MP 240 sets the CRC of the data before the specific data among the concatenated data as an initial value, and sets the length of the specific data.
  • the CRC of the data up to the specific data among the concatenated data can be calculated.
  • the CRC of a plurality of data connected to the MP 240 can be calculated using the CRC calculation results of the plurality of data by the plurality of DMA controllers 521. Therefore, it is not necessary for another DMA controller 521 to take over the result of the CRC calculation by one DMA controller 521.
  • the DMA controller 521 can perform CRC calculation in units of 4 bytes.
  • the MP 240 may designate the initial CRC value in all DMA processes as 0x00000000, or may fix the initial CRC value in all DMA processes to 0x00000000. In this case, the MP 240 sets the initial CRC value in the final CRC process to 0xFFFFFF, inputs the zero data of the shortened data length of the first track, calculates the CRC, and performs the XOR operation between the CRC and the shortened data CRC. Thus, a result equal to the shortened data CRC calculated with the initial value of 0xFFFFFFFFFF can be obtained.
  • the data length of T (0) is 67 bytes
  • the data length of T (1) is 18 bytes
  • the data length of T (2) is 33 bytes. Therefore, the concatenated data length is 118 bytes, the final PAD length is 2 bytes, and the shaped data length is 120 bytes that is a multiple of 4 bytes.
  • X (0) divides 67 bytes of T (0) into 64 bytes of T (0) _t, which is a multiple of 4 bytes, and the remaining 3 bytes of T (0) _dat. Thereafter, X (0) calculates T (0) _crc by performing CRC calculation with 0xFFFFFF as an initial value and T (0) _t as an input.
  • X (1) divides 18-byte T (1) into 16-byte T (1) _t, which is a multiple of 4 bytes, and the remaining 2-byte T (1) _dat. Thereafter, X (1) calculates T (1) _crc by performing CRC calculation with 0x00000000 as an initial value and T (1) _t as an input.
  • X (2) divides 33-byte T (2) into 32-byte T (2) _t, which is a multiple of 4 bytes, and the remaining 1-byte T (2) _dat. Thereafter, X (2) calculates T (2) _crc by performing CRC calculation with 0x00000000 as an initial value and T (2) _t as an input.
  • FIG. 7 shows a specific example of CRC final processing.
  • the MP 240 calculates a new temp_crc by performing CRC calculation using T (0) _crc obtained from X (0) as an initial value and T (0) _dat obtained from X (0) as an input.
  • This temp_crc is a CRC of data up to T (0).
  • the MP 240 calculates a new temp_crc by performing a CRC operation using temp_crc as an initial value and 16-byte ALL zero data equal to the length of the shortened data of T (1) as an input. Thereafter, the MP 240 calculates a new temp_crc by performing an XOR operation between temp_crc and T (1) _crc obtained from X (1). After that, the MP 240 calculates a new temp_crc by performing CRC calculation using temp_crc as an initial value and T (1) _dat obtained from X (1) as an input. This temp_crc is a CRC of data up to T (1).
  • the MP 240 calculates a new temp_crc by performing a CRC operation using temp_crc as an initial value and 32 bytes of ALL zero data equal to the length of the shortened data of T (2) as an input. After that, the MP 240 calculates a new temp_crc by performing an XOR operation between temp_crc and T (2) _crc obtained from X (2). After that, the MP 240 calculates a new temp_crc by performing CRC calculation using temp_crc as an initial value and T (2) _dat obtained from X (2) as an input. This temp_crc is a CRC of data up to T (2).
  • the MP 240 calculates a new temp_crc by performing a CRC operation using the initial value as temp_crc and the 2-byte ALL zero data as the final PAD length as input.
  • This temp_crc is a CRC of data up to the final PAD.
  • the MP 240 calculates the final CRC by performing bit inversion of temp_crc.
  • the shared memory stores a plurality of LUTs (Lookup Tables).
  • the MP 240 calculates Fz by referring to the LUT according to the initial CRC value and the input ALL zero data length.
  • the calculation method and the size and number of LUTs are determined by the performance required for the storage apparatus 100, the assumed ALL zero data length, the size of the shared memory, and the like.
  • the initial value is 1 byte and the value is represented by Bi.
  • Each of the plurality of LUTs stores CRCs for all Bi.
  • the ALL zero data length of the prepared LUT is limited to a specific length.
  • Lt is, for example, 1, 2, 3, 4, 16, 256, 4096. In order to speed up the calculation, more types of Lt may be prepared.
  • Lt When Lt is less than 4, a LUT for each Lt is prepared.
  • the CRC obtained from this LUT is represented by LUT [Lt] [Bi].
  • Lt When Lt is 4 or more, the byte position of Bi in the initial value of 4 bytes is represented by Pb, and an LUT for each combination of Lt and Pb is prepared.
  • the CRC obtained from this LUT is represented by LUT [Lt] [Pb] [Bi].
  • MP240 calculates Fz by decomposing the ALL zero data length into combinations of Lt and performing CRC calculation corresponding to each decomposed Lt.
  • LUT calculation processing which is CRC calculation of ALL zero data according to Lt will be described.
  • each byte of temp_crc which is a 4-byte initial value, is represented by B0, B1, B2, and B3, and a left bit shift operator is represented by “ ⁇ ”.
  • temp_crc LUT [1] [B0] XOR (B1 ⁇ 8) XOR (B2 ⁇ 16) XOR (B3 ⁇ 24)
  • temp_crc LUT [2] [B0] XOR LUT [1] [B1] XOR (B2 ⁇ 16) XOR (B3 ⁇ 24)
  • temp_crc LUT [3] [B0] XOR LUT [2] [B1] XOR LUT [1] [B2] XOR (B3 ⁇ 24)
  • temp_crc LUT [Lt] [0] [B0] XOR LUT [Lt] [1] [B1] XOR LUT [Lt] [2] [B2] XOR LUT [Lt] [3] [B3]
  • the MP 240 decomposes the ALL zero data length into L 4096 + 4096 + 256 + 4 + 4 + 2 and performs LUT operation processing corresponding to each Lt.
  • the CRC calculation of the ALL zero data by the MP240 can be speeded up. Also, the number of LUTs can be reduced by decomposing the ALL zero data length into specific length combinations.
  • the MP 240 may calculate the CRC of the fraction data using the LUT.
  • the LUT has an initial value of 0x00000000 and stores a CRC calculation result for each input data of 1 byte.
  • the MP 240 performs a bit shift on the CRC obtained from the LUT according to the length of the fraction data, and performs an XOR operation with the previous CRC.
  • FIG. 8 shows operations of the DMA controller 521 and the MP 240 regarding the CRC calculation.
  • This sequence diagram shows the operation of the MP 240 and the DMA controller 521 X (0), X (1), and X (2).
  • the MP 240 sends a transfer activation request to X (0), X (1), and X (2), respectively.
  • X (0), X (1), and X (2) that have received the transfer activation request activate DMA (0), DMA (1), and DMA (2), respectively.
  • X (0), X (1), and X (2) perform DMA processing in parallel.
  • S190, S200, and S210 described above X (0), X (1), and X (2) that have completed the data transfer send a transfer completion report including the CRC calculation result to the MP240.
  • the MP 240 calculates the final CRC by performing the final CRC processing using the CRC calculation results from X (0), X (1), and X (2) in order.
  • a plurality of DMA controllers 521 can perform a CRC operation on a plurality of tracks in parallel, thereby transferring a plurality of tracks in parallel. Thereby, the performance of the multitrack read process can be improved.
  • each track may be a multiple of 4 bytes.
  • the MP 240 and the DMA controller 521 do not use fraction data, track PAD, final PAD, or the like.
  • a channel controller connected to the host computer; A storage unit connected to the channel control unit; A processor connected to the channel control unit and the storage unit; With The channel control unit has a plurality of calculation units, When the processor receives a request to read a plurality of element data from the host computer, the processor specifies the plurality of element data for the plurality of arithmetic units, The plurality of arithmetic units respectively read the plurality of element data from the storage unit, calculate a plurality of partial codes that are a plurality of guarantee codes based on the plurality of element data, and send the plurality of parts to the processor.
  • the processor calculates a sequence code that is a guarantee code of the sequence data including the plurality of concatenated element data based on the plurality of partial codes.
  • Storage device (Expression 2) The plurality of calculation units calculate the plurality of partial codes in parallel, The storage device according to expression 1. (Expression 3) The guarantee code is a CRC having a predetermined length. The storage device according to expression 2. (Expression 4) Each of the plurality of arithmetic units extracts partial data that is data having a length that is a multiple of the predetermined length from the element data specified by the processor, and uses the predetermined code as an initial value of the partial code. The partial code is calculated by performing guarantee code calculation with data as input, The storage device according to expression 3.
  • the processor temporarily performs a guarantee code calculation by using a guarantee code of data preceding the partial data in the series data as an initial value of the guarantee code, and inputting zero as a length equal to the partial data.
  • a guarantee code is calculated, and a guarantee code of data up to the partial data in the series data is calculated by XOR operation of the temporary guarantee code and the partial code.
  • the storage device according to expression 4. Each of the plurality of arithmetic units sends the fraction data to the processor when there is fraction data that is the remaining data of the partial data in the designated element data.
  • the storage device according to expression 5.
  • the processor performs a guarantee code calculation by using a guarantee code of data before the fraction data in the series data as an initial value of a guarantee code and the fraction data as an input, thereby performing the guarantee code calculation. Calculate the guarantee code for the data up to the fraction data,
  • the storage device according to expression 6. The processor sends the predetermined code to each of the plurality of arithmetic units; The storage device according to expression 7.
  • the predetermined code corresponding to the calculation unit in which element data other than the head of the plurality of element data is specified is zero of the predetermined length.
  • the channel control unit further includes a buffer connected to the plurality of arithmetic units, and a communication control unit connected to the buffer, The plurality of arithmetic units respectively write the plurality of element data to the buffer, The processor writes the sequence code to the buffer; The communication control unit concatenates and transmits the sequence data and the sequence code in the buffer to the host computer.
  • the storage device according to expression 9.
  • a channel control unit connected to a host computer; a storage unit connected to the channel control unit; and a processor connected to the channel control unit and the storage unit, wherein the channel control unit includes a plurality of operations.
  • a storage device control method for controlling a storage device having a storage unit When the processor receives a request to read a plurality of element data from the host computer, each of the plurality of element data is designated for the plurality of arithmetic units, The plurality of arithmetic units respectively read the plurality of element data from the storage unit, calculate a plurality of partial codes that are a plurality of guarantee codes based on the plurality of element data, and send the plurality of parts to the processor. Send each code, The processor calculates a sequence code that is a guarantee code of the sequence data including the plurality of element data connected based on the plurality of partial codes; A storage apparatus control method.
  • the channel control unit corresponds to the channel adapter 220 and the like.
  • the storage unit corresponds to the data cache 230, the HDD 300, or the like.
  • the processor corresponds to the MP 240 and the like.
  • the calculation unit corresponds to the DMA controller 521 and the like.
  • the buffer corresponds to the intermediate buffer 530, the internal buffer 512, and the like.
  • the communication control unit corresponds to the communication control unit 511 and the like.
  • Element data corresponds to a track or the like.
  • the partial data corresponds to shortened data or the like.
  • the partial code corresponds to the shortened data CRC or the like.
  • the series data corresponds to shaped data, concatenated data, and the like.
  • the sequence code corresponds to the final CRC or the like.
  • the predetermined code corresponds to 0xFFFFFFFF, 0x00000000, or the like.
  • 100 storage device
  • 200 storage controller
  • 210 switch
  • 220 channel adapter
  • 230 data cache
  • 250 disk adapter
  • 400 host computer
  • 510 host channel control LSI
  • 511 communication control unit
  • 512 internal Buffer
  • 520 DMA LSI
  • 521 DMA controller
  • 530 intermediate buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Bus Control (AREA)

Abstract

複数の演算部が、複数のデータに基づいて複数の保証コードを夫々算出することにより、データの転送性能を向上させる。 ストレージ装置は、チャネル制御部と、記憶部と、プロセッサと、を備える。チャネル制御部は、複数の演算部を有する。プロセッサは、複数の要素データを読み出す要求をホストコンピュータから受信した場合、複数の演算部に対して複数の要素データを夫々指定する。複数の演算部は、記憶部から複数の要素データを夫々読み出し、複数の要素データに基づいて複数の保証コードである複数の部分コードを夫々算出し、プロセッサへ複数の部分コードを夫々送る。プロセッサは、複数の部分コードに基づいて、連結された複数の要素データを含む系列データの保証コードである系列コードを算出する。

Description

ストレージ装置およびストレージ装置制御方法
 本発明は、ストレージ装置におけるデータ保証技術に関する。
 ストレージ装置とホストコンピュータの間の通信インタフェースにおいて、転送されるデータの保証コードの生成や確認を行う技術が知られている(特許文献1)。
米国特許出願公開第2008/0109615号明細書
 保証コードにCRC(Cyclic Redundancy Check)を用い、複数のデータが連結されたデータの保証コードを算出するために、複数のデータの夫々を用いて演算を行う場合、複数のデータの順序によって演算結果が異なるため、複数のデータの順序を維持して保証コードを算出する必要がある。
 複数のデータの転送に一つのDMA(Direct Memory Access)コントローラを用いる場合、そのDMAコントローラが、連結されたデータの保証コードを算出する。また、複数のデータの転送に複数のDMAコントローラを用いる場合、或るDMAコントローラが、或るデータの保証コードの演算を行い、別のDMAコントローラが、その演算の結果を引き継いで次のデータの保証コードの演算を行う。この場合、複数のDMAコントローラを用いても、複数のデータを逐次演算する必要があるため、データの転送性能を向上させることが困難である。
 上記課題を解決するために、本発明の一態様であるストレージ装置は、ホストコンピュータに接続されるチャネル制御部と、前記チャネル制御部に接続される記憶部と、前記チャネル制御部及び前記記憶部に接続されるプロセッサと、を備える。前記チャネル制御部は、複数の演算部を有する。前記プロセッサは、複数の要素データを読み出す要求を前記ホストコンピュータから受信した場合、前記複数の演算部に対して前記複数の要素データを夫々指定する。前記複数の演算部は、前記記憶部から前記複数の要素データを夫々読み出し、前記複数の要素データに基づいて複数の保証コードである複数の部分コードを夫々算出し、前記プロセッサへ前記複数の部分コードを夫々送る。前記プロセッサは、前記複数の部分コードに基づいて、連結された前記複数の要素データを含む系列データの保証コードである系列コードを算出する。
 本発明の一態様によれば、複数の演算部が、複数のデータに基づいて複数の保証コードを夫々算出することにより、データの転送性能を向上させることができる。
図1は、本発明の実施例のストレージ装置の構成を示す。 図2は、チャネルアダプタ220の構成を示す。 図3は、マルチトラックリード要求に対する応答データの一例を示す。 図4は、マルチトラックリード処理を模式的に示す。 図5は、DMA処理を示す。 図6は、最終CRC処理を示す。 図7は、CRC最終処理の具体例を示す。 図8は、CRC演算に関するDMAコントローラとMP240の動作を示す。
 以下、本発明の実施例について図面を用いて説明する。
 なお、以後の説明では「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等の表現にて本発明の情報を説明するが、これら情報はテーブル、リスト、DB、キュー、等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等について「aaa情報」と呼ぶことがある。
 さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いるが、これらについてはお互いに置換が可能である。
 以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御デバイス)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
 また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによってストレージ装置にインストールされてもよい。
 以下、本発明の実施例のストレージ装置について説明する。
 図1は、本発明の実施例のストレージ装置の構成を示す。この図に示されているストレージ装置100は、複数のホストコンピュータ400に接続されている。ストレージ装置100は、ストレージコントローラ200と、複数のHDD(Hard Disk Drive)300とを有する。ストレージコントローラ200は、SAN(Storage Area Network)等を介してホストコンピュータ400に接続されている。複数のHDD300は、ストレージコントローラ200に接続されている。なお、ストレージ装置100は、一つのホストコンピュータ400に接続されていても良い。また、ストレージ装置100は、一つのHDD300を有していても良い。また、HDD300の代わりに、SSD(Solid State Drive)等の他のドライブが用いられても良い。
 ストレージコントローラ200は、スイッチ(SW)210と、複数のチャネルアダプタ(CHA)220と、複数のデータキャッシュ(Cache)230と、複数のMP(Microprocessor)240と、複数のディスクアダプタ(DKA)250とを有する。ストレージコントローラ200は、一つのデータキャッシュ230を有していても良いし、一つのMP240を有していても良いし、一つのディスクアダプタ250を有していても良い。
 スイッチ210は、チャネルアダプタ220と、データキャッシュ230と、MP240と、ディスクアダプタ250との間の通信を制御する。
 チャネルアダプタ220は、ホストコンピュータ400に接続され、ホストコンピュータ400との通信を制御する。
 データキャッシュ230は、ホストコンピュータ400へ送信されるデータや、ホストコンピュータ400から受信されたデータを格納する。データキャッシュ230は更に、共用メモリを有する。共用メモリは、MP240により用いられるプログラム及びデータを格納する。
 MP240は、共用メモリに格納されたプログラム及びデータに基づいて、ストレージ装置100の各部を制御する。
 ディスクアダプタ250は、HDD300に接続され、HDD300との通信を制御する。
 図2は、チャネルアダプタ220の構成を示す。チャネルアダプタ220は、複数のホストチャネル制御LSI(large‐scale integration)510と、DMA用LSI520と、複数の中間バッファ(DXBF)530とを有する。チャネルアダプタ220は、一つのホストチャネル制御LSI510を有していても良い。チャネルアダプタ220は、一つの中間バッファ530を有していても良い。
 ホストチャネル制御LSI510は、通信制御部511と、内部バッファ512とを有する。通信制御部511は、ホストコンピュータ400に接続され、所定のプロトコルに従って、ホストコンピュータ400との通信を制御する。本実施例において通信制御部511は、FICON(Fiber Connectivity)-HPF(High Performance)を用いるが、他のプロトコルを用いても良い。内部バッファ512は、ホストコンピュータ400へ送信するデータを格納する。
 中間バッファ530は、例えばDRAM(Dynamic Random Access Memory)であり、DMA用LSI520によりデータキャッシュ230から転送されたデータ等を格納する。
 DMA用LSI520は、複数のDMAコントローラ(DMAC)521を有する。複数のDMAコントローラ521の夫々は、互いに異なるDMA回路であっても良いし、DMA回路が割り当てられる仮想DMAコントローラであっても良い。なお、DMA用LSI520内の一つのDMA回路が、論理的に複数のDMAコントローラ521に分割されても良い。DMA回路は、保証コードを算出する。本実施例における保証コードは、CRCであり、DMA回路は、4バイトの初期値と、4バイトの倍数の長さの入力とを用いて、4バイトのCRCを算出する。このCRCの生成多項式は例えば、0x04C11DB7で表される。なお、保証コードは、他の誤り検出符号や誤り訂正符号であっても良い。
 DMAコントローラ521は、MP240からの指示に従って、データキャッシュ230からデータを読み出し、読み出されたデータに基づいてCRC演算を行い、読み出されたデータを中間バッファ530へ書き込む。
 FICON-HPFは、一つのリード要求により複数のトラックを連結して転送するためのマルチトラックリード要求をサポートする。ここでのトラックは、1バイト単位で指定される任意の長さのデータである。
 以下、マルチトラックリード処理について説明する。
 ホストコンピュータ400がマルチトラックリード要求をストレージ装置100へ送信することにより、ストレージ装置100は、マルチトラックリード処理を行う。マルチトラックリード要求は、複数のトラックを指定する。
 図3は、マルチトラックリード要求に対する応答データの一例を示す。
 マルチトラックリード要求を受けたストレージ装置100は、複数のトラックが要求された順に連結された連結データと、最終PADと、最終CRCとを連結した応答データをホストコンピュータ400へ送信する。連結データの後に最終PADが連結されたデータを整形データとする。整形データの長さは4バイトの倍数である。最終PADは、長さを調整するためのALLゼロデータである。最終CRCは、整形データのCRCである。最終CRCの長さは4バイトである。ここで、MP240は、連結データ長以上で最も小さい4バイトの倍数を整形データ長として算出し、整形データ長から連結データ長を減じた値を最終PAD長として算出する。更にMP240は、最終PAD長が0でない場合、最終PAD長のALLゼロデータである最終PADを生成する。
 図4は、マルチトラックリード処理を模式的に示す。
 この図は、ホストコンピュータ400と、ホストチャネル制御LSI510と、中間バッファ530と、複数のDMAコントローラ521と、MP240と、データキャッシュ230との間のデータの流れを示す。ここでのマルチトラックリード要求は、ストレージ装置100に格納された三つのトラックであるT(0)、T(1)、T(2)を指定する。また、DMA用LSI520は、三つのDMAコントローラ521であるX(0)、X(1)、X(2)を有する。ここで、T(0)、T(1)、T(2)は、データキャッシュ230に格納されている状態を示す。T(0)、T(1)、T(2)の何れかがキャッシュミスと判定された場合、ディスクアダプタ250は、キャッシュミスと判定されたトラックをHDD300から読み出し、データキャッシュ230へ書き込む。
 まず、ホストコンピュータ400は、マルチトラックリード要求をホストチャネル制御LSI510へ発行する(S110)。マルチトラックリード要求を受けたホストチャネル制御LSI510は、そのマルチトラックリード要求をMP240へ送る(S120)。
 マルチトラックリード要求を受けたMP240は、そのマルチトラックリード要求に基づいて、複数のトラックのデータ転送を並列に行うために、T(0)のデータ転送をX(0)に割り当て、T(1)のデータ転送をX(1)に割り当て、T(2)のデータ転送をX(2)に割り当てる。その後、MP240は、CCW(channel command word)により、T(0)を指定する転送起動要求をX(0)へ送り(S130)、T(1)を指定する転送起動要求をX(1)へ送り(S140)、T(2)を指定する転送起動要求をX(2)へ送る(S150)。
 転送起動要求を受けたX(0)は、T(0)のDMA処理であるDMA(0)を起動する(S160)。DMA(0)により、X(0)は、データキャッシュ230内のT(0)を読み出し、T(0)に基づいてCRC演算を行うと共に、T(0)を中間バッファ530へ転送する。転送起動要求を受けたX(1)は、T(1)のDMA処理であるDMA(1)を起動する(S170)。DMA(1)により、X(1)は、データキャッシュ230内のT(1)を読み出し、T(1)に基づいてCRC演算を行うと共に、T(1)を中間バッファ530へ転送する。転送起動要求を受けたX(2)は、T(2)のDMA処理であるDMA(2)を起動する(S180)。DMA(2)により、X(2)は、データキャッシュ230内のT(2)を読み出し、T(2)に基づいてCRC演算を行うと共に、T(2)を中間バッファ530へ転送する。
 DMA(0)が完了すると、X(0)は、DMA(0)の結果を示す転送完了報告をMP240へ送る(S190)。DMA(1)が完了すると、X(1)は、DMA(1)の結果を示す転送完了報告をMP240へ送る(S200)。DMA(2)が完了すると、X(2)は、DMA(2)の結果を示す転送完了報告をMP240へ送る(S210)。
 X(0)、X(1)、X(2)から転送完了報告を受けたMP240は、転送完了報告に基づいて最終PAD及び最終CRCを算出する最終CRC処理を行う(S220)。その後、MP240は、最終PAD及び最終CRCを中間バッファ530へ書き込み(S230)、応答データをホストコンピュータ400へ転送することを指示するデータ転送開始指示をホストチャネル制御LSI510へ送る(S240)。
 データ転送開始指示を受けたホストチャネル制御LSI510は、中間バッファ530からT(0)、T(1)、T(2)、最終PAD、最終CRCを読み出し、1バイト単位でアドレスオフセットを与えることにより、T(0)、T(1)、T(2)、最終PAD、最終CRCを連結し、応答データとして内部バッファ512へ格納する(S250)。その後、ホストチャネル制御LSI510は、応答データをホストコンピュータ400へ送信する(S260)。応答データの転送が完了すると、ホストチャネル制御LSI510は、マルチトラックリード要求に対するステータス応答をホストコンピュータ400へ送信する(S270)。
 以上がマルチトラックリード処理の一例である。この処理によれば、MP240が複数のDMAコントローラ521にリード対象の複数のトラックを夫々割り当てることにより、複数のDMAコントローラ521が並列に複数のDMA処理を行うことができる。また、MP240が、複数のDMAコントローラ521による処理結果に基づいて演算を行うことにより、複数のトラックを順に連結したデータのCRCを算出することができる。
 なお、中間バッファ530及び内部バッファ512の何れか一つが用いられても良い。例えば、DMAコントローラ521は、データキャッシュ230内のデータを内部バッファ512へ転送しても良い。また、通信制御部511は、中間バッファ530内のデータをホストコンピュータ400へ転送しても良い。
 以下、前述のS130~S210におけるDMA処理の詳細について説明する。
 図5は、DMA処理を示す。
 転送起動要求は、トラック長(転送長)と、データキャッシュ230内のトラックのアドレスである送信元アドレスと、中間バッファ530内の送信先のアドレスである送信先アドレスと、CRCの初期値とを含む。転送起動要求は、トラックのCRCの生成を行うか否かを示す情報を含んでも良い。
 MP240は、マルチトラックリード要求の先頭のトラックの転送起動要求におけるCRCの初期値として0xFFFFFFFFを指定し、先頭以外のトラックの転送起動要求におけるCRCの初期値として0x00000000を指定する。この例では、X(0)への転送起動要求におけるCRCの初期値は、0xFFFFFFFFであり、X(1)及びX(2)の夫々への転送起動要求におけるCRCの初期値は、0x00000000である。このように、各DMAコントローラ521への転送起動要求は、予め定められた値をCRCの初期値として指定するため、他のDMAコントローラ521によるCRC演算の結果を含む必要がない。
 DMAコントローラ521は、転送起動要求からトラック長を取得し、トラック長を4バイトで除した剰余を端数データ長として算出し、4バイトから端数データ長を減じた値をトラックPAD長として算出し、トラック長から端数データ長を減じた値を短縮データ長として算出し、トラック長にトラックPAD長を加えた値を延長データ長として算出する。DMAコントローラ521は、トラックのうち先頭から短縮データ長までのデータを短縮データとして抽出し、トラックのうち短縮データの後に続く端数データ長のデータを端数データとして抽出する。DMAコントローラ521は更に、トラックの後にトラックPAD長のALLゼロデータであるトラックPADを連結して延長データとする。言い換えれば、短縮データ長は、トラック長以下で最も大きい4バイトの倍数であり、延長データ長は、トラック長以上で最も小さい4バイトの倍数である。なお、トラック長が4の倍数である場合、端数データ長及びトラックPAD長は0になり、短縮データ長及び延長データ長はトラック長に等しくなる。
 DMAコントローラ521は、データキャッシュ230の送信元アドレスからトラックを読み出し、短縮データのCRCである短縮データCRCを算出し、延長データを中間バッファ530の送信先アドレスへ書き込む。
 DMAコントローラ521は、延長データの書き込みが完了すると、転送起動要求に対する転送完了報告をMP240へ送る。転送完了報告は、短縮データCRCと、端数データとを含む。
 前述のマルチトラックリード要求処理の例において、X(0)は、T(0)を、短縮データであるT(0)_tと、端数データであるT(0)_datとに分割し、0xFFFFFFFFを初期値とし入力T(0)_tを入力として短縮データCRCであるT(0)_crcを算出する。また、X(1)は、T(1)を、短縮データであるT(1)_tと、端数データであるT(1)_datとに分割し、0x00000000を初期値としT(1)_tを入力として短縮データCRCであるT(1)_crcを算出する。また、X(2)は、T(2)を、短縮データであるT(2)_tと、端数データであるT(2)_datとに分割し、0x00000000を初期値としT(2)_tを入力として短縮データCRCであるT(2)_crcを算出する。
 以上がDMA処理である。この処理によれば、各DMAコントローラ521は、MP240により指定される値をCRCの初期値として用いるため、別のDMAコントローラ521により算出されたCRCを引き継ぐ必要がない。これにより、複数のDMAコントローラ521は、並列にCRC演算を行うことができる。また、DMAコントローラ521は、4バイト未満の端数データをMP240へ送り、端数データのCRC演算を行わないことから、4バイト単位でCRC演算を行うDMA回路を用いることができる。これにより、DMAコントローラ521の回路規模の増大を防ぐことができる。
 以下、前述のS220における最終CRC処理の詳細について説明する。
 図6は、最終CRC処理を示す。ここで、トラックの番号をiとし、最終トラックの番号をnとし、T(i)の短縮データCRCをT(i)_crcとし、T(i)の端数データをT(i)_datとし、T(i)の長さ[バイト]をT(i)_lenとし、一時的なCRCをtemp_crcとし、一時的なデータ長をtemp_lenとし、最終PADの長さ[バイト]をpad_lenとする。MP240は、DMAコントローラ521からの転送完了報告から、T(i)_crc及びT(i)_datを取得する。
 まず、MP240は、変数を初期化する(S310)。ここでMP240は、iに0を代入し、temp_crcにT(0)_crcを代入する。
 その後、MP240は、temp_crcを初期値とし、T(i)_datを入力として、CRC演算を行うことにより、新たなtemp_crcを算出する(S320)。CRC演算の関数をFdとすると、この処理は次式で表される。
 temp_crc = Fd(temp_crc,T(i)_dat)
 これまでの処理により、temp_crcは、T(i)までのデータのCRCになる。
 その後、MP240は、最終トラックまでCRC演算を行ったか否かを判定する(S330)。即ち、MP240は、i=nであるか否かを判定する。
 S330においてi=nでない場合(S330:N)、MP240は、iに1を加算する(S340)。その後、MP240は、T(i)_lenを超えない4の倍数の最大値を、temp_lenに代入する(S350)。この処理は次式で表される。
 temp_len = T(i)_len & 0xFFFFFFFC
 その後、MP240は、temp_crcを初期値とし、temp_lenの長さのALLゼロデータを入力として、CRC演算を行うことにより、新たなtemp_crcを算出する(S360)。或る初期値と或る長さのALLゼロデータの入力とを用いてCRCを算出する関数をFzとすると、この処理は次式で表される。
 temp_crc = Fz(temp_crc,temp_len)
 その後、MP240は、ビット単位でtemp_crcとT(i)_crcのXOR(排他的論理和)演算を行うことにより、新たなtemp_crcを算出し(S370)、処理をS320へ移行させる。XOR演算子を「xor」とすると、この処理は次式で表される。
 temp_crc = temp_crc xor T(i)_crc
 これまでの処理により、temp_crcは、T(i)_tまでのデータのCRCになる。
 S330においてi=nである場合(S330:Y)、MP240は、初期値をtemp_crcとし、pad_lenの長さのALLゼロデータを入力として、CRC演算を行うことにより、新たなtemp_crcを算出する(S380)。前述のFzを用いると、この処理は次式で表される。
 temp_crc = Fz(temp_crc,pad_len)
 これまでの処理により、temp_crcは、整形データのCRCになる。
 その後、MP240は、FICON-HPFの仕様に従い、temp_crcのビット反転を行うことにより、最終CRCを算出し(S390)、このフローを終了する。前述のxorを用いると、この処理は次式で表される。
 temp_crc = temp_crc xor 0xFFFFFFFF
 以上がMP240によるCRC演算処理である。この処理によれば、MP240は、DMAコントローラ521により算出された各トラックの短縮データCRCに基づいて、整形データの最終CRCを算出することができる。また、MP240が端数データのCRCを算出することにより、トラック長を1バイト単位で指定することができると共に、DMAコントローラ521は4バイト単位でCRC演算を行うことができ、DMAコントローラ521の回路規模の増大を防ぐことができる。
 また、DMAコントローラ521が連結データ内の特定のデータから第1のCRCを算出した場合、MP240が連結データのうち特定のデータより前のデータのCRCを初期値とし、特定のデータの長さのALLゼロデータから第2のCRCを算出し、第1のCRCと第2のCRCのXOR演算を行うことにより、連結データのうち特定のデータまでのデータのCRCを算出することができる。これにより、複数のDMAコントローラ521による複数のデータのCRC演算結果を用いて、MP240が連結された複数のデータのCRCを算出することができる。従って、或るDMAコントローラ521によるCRC演算の結果を別のDMAコントローラ521が引き継ぐ必要がない。
 また、MP240が、DMAコントローラ521から端数データを取得し、端数データのCRC演算を行うことにより、DMAコントローラ521は、4バイト単位でCRC演算を行うことができる。
 なお、MP240は、全てのDMA処理におけるCRCの初期値を0x00000000と指定しても良いし、全てのDMA処理におけるCRCの初期値を0x00000000に固定しても良い。この場合、MP240が、最終CRC処理におけるCRCの初期値を0xFFFFFFFFとし、先頭のトラックの短縮データ長のALLゼロデータを入力として、CRCを算出し、そのCRCと短縮データCRCとのXOR演算を行うことにより、初期値を0xFFFFFFFFとして算出される短縮データCRCに等しい結果を得ることができる。
 以下、CRC最終処理の具体例について説明する。
 図3の応答データにおいて、T(0)のデータ長を67バイトとし、T(1)のデータ長を18バイトとし、T(2)のデータ長を33バイトとする。従って、連結データ長は、118バイトであり、最終PAD長は、2バイトであり、整形データ長は、4バイトの倍数である120バイトである。
 X(0)は、67バイトのT(0)を、4バイトの倍数である64バイトのT(0)_tと残りの3バイトのT(0)_datに分割する。その後、X(0)は、0xFFFFFFFFを初期値とし、T(0)_tを入力としてCRC演算を行うことにより、T(0)_crcを算出する。
 X(1)は、18バイトのT(1)を、4バイトの倍数である16バイトのT(1)_tと残りの2バイトのT(1)_datに分割する。その後、X(1)は、0x00000000を初期値とし、T(1)_tを入力としてCRC演算を行うことにより、T(1)_crcを算出する。
 X(2)は、33バイトのT(2)を、4バイトの倍数である32バイトのT(2)_tと残りの1バイトのT(2)_datに分割する。その後、X(2)は、0x00000000を初期値とし、T(2)_tを入力としてCRC演算を行うことにより、T(2)_crcを算出する。
 図7は、CRC最終処理の具体例を示す。MP240は、X(0)から得られたT(0)_crcを初期値とし、X(0)から得られたT(0)_datを入力としてCRC演算を行うことにより、新たなtemp_crcを算出する。このtemp_crcは、T(0)までのデータのCRCである。
 その後、MP240は、temp_crcを初期値とし、T(1)の短縮データの長さに等しい16バイトのALLゼロデータを入力としてCRC演算を行うことにより、新たなtemp_crcを算出する。その後、MP240は、temp_crcと、X(1)から得られたT(1)_crcとのXOR演算を行うことにより、新たなtemp_crcを算出する。その後、MP240は、temp_crcを初期値とし、X(1)から得られたT(1)_datを入力としてCRC演算を行うことにより、新たなtemp_crcを算出する。このtemp_crcは、T(1)までのデータのCRCである。
 その後、MP240は、temp_crcを初期値とし、T(2)の短縮データの長さに等しい32バイトのALLゼロデータを入力としてCRC演算を行うことにより、新たなtemp_crcを算出する。その後、MP240は、temp_crcと、X(2)から得られたT(2)_crcとのXOR演算を行うことにより、新たなtemp_crcを算出する。その後、MP240は、temp_crcを初期値とし、X(2)から得られたT(2)_datを入力としてCRC演算を行うことにより、新たなtemp_crcを算出する。このtemp_crcは、T(2)までのデータのCRCである。
 その後、MP240は、初期値をtemp_crcとし、最終PAD長である2バイトのALLゼロデータを入力として、CRC演算を行うことにより、新たなtemp_crcを算出する。このtemp_crcは、最終PADまでのデータのCRCである。
 その後、MP240は、temp_crcのビット反転を行うことにより、最終CRCを算出する。
 以上が、CRC最終処理の具体例である。
 以下、前述のS360及びS380におけるFzの演算方法の一例について説明する。
 ALLゼロデータのCRC演算を高速化するために、共用メモリは、複数のLUT(Lookup Table)を格納する。MP240は、CRCの初期値や入力のALLゼロデータ長に応じてLUTを参照することにより、Fzの演算を行う。演算方法やLUTのサイズ及び数は、ストレージ装置100に要求される性能、想定されるALLゼロデータ長、共用メモリのサイズ等により決定される。
 ここでは、初期値を1バイトとし、その値をBiで表す。複数のLUTの夫々は、全てのBiに対するCRCを格納する。また、用意するLUTのALLゼロデータ長を特定の長さに限定する。特定の長さをLtとすると、Ltは例えば、1、2、3、4、16、256、4096である。演算を高速化するために、更に多くの種類のLtを用意しても良い。
 Ltが4未満である場合、Lt毎のLUTが用意される。このLUTから得られるCRCを、LUT[Lt][Bi]で表す。
 Ltが4以上である場合、4バイトの初期値の中のBiのバイト位置をPbで表し、LtとPbの組み合わせ毎のLUTが用意される。このLUTから得られるCRCを、LUT[Lt][Pb][Bi]で表す。
 MP240は、ALLゼロデータ長をLtの組み合わせに分解し、分解された各Ltに対応するCRC演算を行うことにより、Fzの演算を行う。以下、Ltに応じたALLゼロデータのCRC演算であるLUT演算処理を示す。ここで、4バイトの初期値であるtemp_crcの各バイトをB0、B1、B2、B3で表し、左ビットシフトの演算子を「<<」で表す。
 Ltが1バイトである場合のLUT演算処理は次式で表される。
 temp_crc = 
 LUT[1][B0] XOR (B1<<8)
 XOR (B2<<16) XOR (B3<<24)
 Ltが2バイトである場合のLUT演算処理は次式で表される。
 temp_crc = 
 LUT[2][B0] XOR LUT[1][B1]
 XOR (B2<<16) XOR (B3<<24)
 Ltが3バイトである場合のLUT演算処理は次式で表される。
 temp_crc = 
 LUT[3][B0] XOR LUT[2][B1]
 XOR LUT[1][B2] XOR (B3<<24)
 Ltが4バイト以上である場合のLUT演算処理は次式で表される。
 temp_crc = 
 LUT[Lt][0][B0] XOR LUT[Lt][1][B1]
 XOR LUT[Lt][2][B2] XOR LUT[Lt][3][B3]
 例えば、ALLゼロデータ長が8458バイトである場合、MP240は、ALLゼロデータ長を4096+4096+256+4+4+2のLtに分解し、各Ltに対応するLUT演算処理を行う。
 このような演算方法によれば、MP240によるALLゼロデータのCRC演算を高速化することができる。また、ALLゼロデータ長を特定の長さの組み合わせに分解することにより、LUTの数を削減することができる。
 なお、MP240は、LUTを用いて端数データのCRCを算出しても良い。このLUTは例えば、初期値を0x00000000とし、1バイトの入力のデータ毎のCRC演算結果を格納する。この場合、MP240は、LUTから得られたCRCを、端数データの長さに応じてビットシフトし、それ以前のCRCとのXOR演算を行う。
 以下、DMAコントローラ521の並列動作について説明する。
 図8は、CRC演算に関するDMAコントローラ521とMP240の動作を示す。
 このシーケンス図は、MP240と、DMAコントローラ521であるX(0)、X(1)、X(2)との動作を示す。前述のS130、S140、S150において、MP240は、X(0)、X(1)、X(2)へ転送起動要求を夫々送る。転送起動要求を受けたX(0)、X(1)、X(2)は、DMA(0)、DMA(1)、DMA(2)を夫々起動する。これにより、X(0)、X(1)、X(2)は、並列にDMA処理を行う。その後、前述のS190、S200、S210において、データ転送を完了したX(0)、X(1)、X(2)は、CRC演算結果を含む転送完了報告をMP240へ送る。その後、前述のS220において、MP240は、X(0)、X(1)、X(2)からのCRC演算結果を順に用いて、最終CRC処理を行うことにより最終CRCを算出する。
 一方、本発明を適用しないストレージ装置において、或るDMAコントローラが他のDMAコントローラによるCRC演算の結果を引き継いてCRC演算を行う場合、それらのDMAコントローラは、並列にCRC演算を行うことができない。
 本実施例によれば、複数のDMAコントローラ521が並列に複数のトラックのCRC演算を行うことにより、並列に複数のトラックの転送を行うことができる。これにより、マルチトラックリード処理の性能を向上させることができる。
 なお、各トラックの長さが4バイトの倍数であっても良い。この場合、MP240及びDMAコントローラ521は、端数データ、トラックPAD、最終PAD等を用いない。
 以上の実施例で説明された技術は、次のように表現することができる。
(表現1)
 ホストコンピュータに接続されるチャネル制御部と、
 前記チャネル制御部に接続される記憶部と、
 前記チャネル制御部及び前記記憶部に接続されるプロセッサと、
を備え、
 前記チャネル制御部は、複数の演算部を有し、
 前記プロセッサは、複数の要素データを読み出す要求を前記ホストコンピュータから受信した場合、前記複数の演算部に対して前記複数の要素データを夫々指定し、
 前記複数の演算部は、前記記憶部から前記複数の要素データを夫々読み出し、前記複数の要素データに基づいて複数の保証コードである複数の部分コードを夫々算出し、前記プロセッサへ前記複数の部分コードを夫々送り、
 前記プロセッサは、前記複数の部分コードに基づいて、連結された前記複数の要素データを含む系列データの保証コードである系列コードを算出する、
ストレージ装置。
(表現2)
 前記複数の演算部は並列に、前記複数の部分コードを夫々算出する、
表現1に記載のストレージ装置。
(表現3)
 前記保証コードは、所定長を有するCRCである、
表現2に記載のストレージ装置。
(表現4)
 前記複数の演算部の夫々は、前記プロセッサにより指定された要素データから、前記所定長の倍数の長さを有するデータである部分データを抽出し、所定コードを部分コードの初期値として、前記部分データを入力として、保証コード演算を行うことにより前記部分コードを算出する、
表現3に記載のストレージ装置。
(表現5)
 前記プロセッサは、前記系列データの内の前記部分データより前のデータの保証コードを保証コードの初期値として、前記部分データに等しい長さのゼロを入力として、保証コード演算を行うことにより、一時的な保証コードを算出し、前記一時的な保証コードと前記部分コードのXOR演算により、前記系列データの内の前記部分データまでのデータの保証コードを算出する、
表現4に記載のストレージ装置。
(表現6)
 前記複数の演算部の夫々は、前記指定された要素データ内に前記部分データの残りのデータである端数データがある場合、前記端数データを前記プロセッサへ送る、
表現5に記載のストレージ装置。
(表現7)
 前記プロセッサは、前記系列データの内の前記端数データより前のデータの保証コードを保証コードの初期値として、前記端数データを入力として、保証コード演算を行うことにより、前記系列データの内の前記端数データまでのデータの保証コードを算出する、
表現6に記載のストレージ装置。
(表現8)
 前記プロセッサは、前記所定コードを前記複数の演算部の夫々へ送る、
表現7に記載のストレージ装置。
(表現9)
 前記複数の要素データの中の先頭以外の要素データが指定された演算部に対応する所定コードは、前記所定長のゼロである、
表現8に記載のストレージ装置。
(表現10)
 前記チャネル制御部は更に、前記複数の演算部に接続されたバッファと、前記バッファに接続された通信制御部とを有し、
 前記複数の演算部は、前記複数の要素データを前記バッファへ夫々書き込み、
 前記プロセッサは、前記系列コードを前記バッファへ書き込み、
 前記通信制御部は、前記バッファ内の前記系列データ及び前記系列コードを連結して前記ホストコンピュータへ送信する、
表現9に記載のストレージ装置。
(表現11)
 ホストコンピュータに接続されるチャネル制御部と、前記チャネル制御部に接続される記憶部と、前記チャネル制御部及び前記記憶部に接続されるプロセッサとを有し、前記チャネル制御部が、複数の演算部を有するストレージ装置を、制御するためのストレージ装置制御方法であって、
 前記プロセッサが、複数の要素データを読み出す要求を前記ホストコンピュータから受信した場合、前記複数の演算部に対して前記複数の要素データを夫々指定し、
 前記複数の演算部が、前記記憶部から前記複数の要素データを夫々読み出し、前記複数の要素データに基づいて複数の保証コードである複数の部分コードを夫々算出し、前記プロセッサへ前記複数の部分コードを夫々送り、
 前記プロセッサが、前記複数の部分コードに基づいて、連結された前記複数の要素データを含む系列データの保証コードである系列コードを算出する、
ことを備えるストレージ装置制御方法。
 以上の表現における用語について説明する。チャネル制御部は、チャネルアダプタ220等に対応する。記憶部は、データキャッシュ230やHDD300等に対応する。プロセッサは、MP240等に対応する。演算部は、DMAコントローラ521等に対応する。バッファは、中間バッファ530や内部バッファ512等に対応する。通信制御部は、通信制御部511等に対応する。要素データは、トラック等に対応する。部分データは、短縮データ等に対応する。部分コードは、短縮データCRC等に対応する。系列データは、整形データや連結データ等に対応する。系列コードは、最終CRC等に対応する。所定コードは、0xFFFFFFFFや0x00000000等に対応する。
 100:ストレージ装置、 200:ストレージコントローラ、 210:スイッチ、 220:チャネルアダプタ、 230:データキャッシュ、 250:ディスクアダプタ、 400:ホストコンピュータ、 510:ホストチャネル制御LSI、 511:通信制御部、 512:内部バッファ、 520:DMA用LSI、 521:DMAコントローラ、 530:中間バッファ
 

Claims (11)

  1.  ホストコンピュータに接続されるチャネル制御部と、
     前記チャネル制御部に接続される記憶部と、
     前記チャネル制御部及び前記記憶部に接続されるプロセッサと、
    を備え、
     前記チャネル制御部は、複数の演算部を有し、
     前記プロセッサは、複数の要素データを読み出す要求を前記ホストコンピュータから受信した場合、前記複数の演算部に対して前記複数の要素データを夫々指定し、
     前記複数の演算部は、前記記憶部から前記複数の要素データを夫々読み出し、前記複数の要素データに基づいて複数の保証コードである複数の部分コードを夫々算出し、前記プロセッサへ前記複数の部分コードを夫々送り、
     前記プロセッサは、前記複数の部分コードに基づいて、連結された前記複数の要素データを含む系列データの保証コードである系列コードを算出する、
    ストレージ装置。
  2.  前記複数の演算部は並列に、前記複数の部分コードを夫々算出する、
    請求項1に記載のストレージ装置。
  3.  前記保証コードは、所定長を有するCRCである、
    請求項2に記載のストレージ装置。
  4.  前記複数の演算部の夫々は、前記プロセッサにより指定された要素データから、前記所定長の倍数の長さを有するデータである部分データを抽出し、所定コードを部分コードの初期値として、前記部分データを入力として、保証コード演算を行うことにより前記部分コードを算出する、
    請求項3に記載のストレージ装置。
  5.  前記プロセッサは、前記系列データの内の前記部分データより前のデータの保証コードを保証コードの初期値として、前記部分データに等しい長さのゼロを入力として、保証コード演算を行うことにより、一時的な保証コードを算出し、前記一時的な保証コードと前記部分コードのXOR演算により、前記系列データの内の前記部分データまでのデータの保証コードを算出する、
    請求項4に記載のストレージ装置。
  6.  前記複数の演算部の夫々は、前記指定された要素データ内に前記部分データの残りのデータである端数データがある場合、前記端数データを前記プロセッサへ送る、
    請求項5に記載のストレージ装置。
  7.  前記プロセッサは、前記系列データの内の前記端数データより前のデータの保証コードを保証コードの初期値として、前記端数データを入力として、保証コード演算を行うことにより、前記系列データの内の前記端数データまでのデータの保証コードを算出する、
    請求項6に記載のストレージ装置。
  8.  前記プロセッサは、前記所定コードを前記複数の演算部の夫々へ送る、
    請求項7に記載のストレージ装置。
  9.  前記複数の要素データの中の先頭以外の要素データが指定された演算部に対応する所定コードは、前記所定長のゼロである、
    請求項8に記載のストレージ装置。
  10.  前記チャネル制御部は更に、前記複数の演算部に接続されたバッファと、前記バッファに接続された通信制御部とを有し、
     前記複数の演算部は、前記複数の要素データを前記バッファへ夫々書き込み、
     前記プロセッサは、前記系列コードを前記バッファへ書き込み、
     前記通信制御部は、前記バッファ内の前記系列データ及び前記系列コードを連結して前記ホストコンピュータへ送信する、
    請求項9に記載のストレージ装置。
  11.  ホストコンピュータに接続されるチャネル制御部と、前記チャネル制御部に接続される記憶部と、前記チャネル制御部及び前記記憶部に接続されるプロセッサとを有し、前記チャネル制御部が、複数の演算部を有するストレージ装置を、制御するためのストレージ装置制御方法であって、
     前記プロセッサが、複数の要素データを読み出す要求を前記ホストコンピュータから受信した場合、前記複数の演算部に対して前記複数の要素データを夫々指定し、
     前記複数の演算部が、前記記憶部から前記複数の要素データを夫々読み出し、前記複数の要素データに基づいて複数の保証コードである複数の部分コードを夫々算出し、前記プロセッサへ前記複数の部分コードを夫々送り、
     前記プロセッサが、前記複数の部分コードに基づいて、連結された前記複数の要素データを含む系列データの保証コードである系列コードを算出する、
    ことを備えるストレージ装置制御方法。
     
PCT/JP2013/051392 2013-01-24 2013-01-24 ストレージ装置およびストレージ装置制御方法 Ceased WO2014115277A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014558362A JP6046750B2 (ja) 2013-01-24 2013-01-24 ストレージ装置およびストレージ装置制御方法
PCT/JP2013/051392 WO2014115277A1 (ja) 2013-01-24 2013-01-24 ストレージ装置およびストレージ装置制御方法
US14/758,929 US9720767B2 (en) 2013-01-24 2013-01-24 Storage apparatus and storage apparatus control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/051392 WO2014115277A1 (ja) 2013-01-24 2013-01-24 ストレージ装置およびストレージ装置制御方法

Publications (1)

Publication Number Publication Date
WO2014115277A1 true WO2014115277A1 (ja) 2014-07-31

Family

ID=51227093

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/051392 Ceased WO2014115277A1 (ja) 2013-01-24 2013-01-24 ストレージ装置およびストレージ装置制御方法

Country Status (3)

Country Link
US (1) US9720767B2 (ja)
JP (1) JP6046750B2 (ja)
WO (1) WO2014115277A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474751B2 (en) 2021-02-25 2022-10-18 Hitachi, Ltd. Storage apparatus and data processing method therefor

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503582B2 (en) 2017-03-06 2019-12-10 Tttech Auto Ag Method and computer system for fault tolerant data integrity verification of safety-related data
US10901654B2 (en) * 2018-10-30 2021-01-26 International Business Machines Corporation Buffer credit management in a data storage system
US12088411B2 (en) * 2022-08-25 2024-09-10 Semiconductor Components Industries, Llc Cyclic redundancy check (CRC) generation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09116541A (ja) * 1995-10-16 1997-05-02 Toshiba Corp 通信制御装置
JP2002185438A (ja) * 2000-12-11 2002-06-28 Matsushita Electric Ind Co Ltd Crc演算装置
JP2004173178A (ja) * 2002-11-22 2004-06-17 Nec Corp 伝送システムおよび伝送装置
WO2010095173A1 (en) * 2009-02-19 2010-08-26 Hitachi, Ltd. Storage apparatus and data integrity assurance method
JP2011176597A (ja) * 2010-02-24 2011-09-08 Panasonic Corp 符号化装置及び符号化方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4260688B2 (ja) * 2004-06-09 2009-04-30 富士通株式会社 データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法
JP2008117253A (ja) 2006-11-07 2008-05-22 Hitachi Ltd 記憶装置システムと計算機システムおよびその処理方法
JP4747077B2 (ja) * 2006-11-16 2011-08-10 ルネサスエレクトロニクス株式会社 演算回路
JP4906562B2 (ja) 2007-04-02 2012-03-28 株式会社日立製作所 ストレージ装置及びボリューム復元方法
JP4831018B2 (ja) * 2007-08-28 2011-12-07 日本電気株式会社 並列巡回符号生成装置および並列巡回符号検査装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09116541A (ja) * 1995-10-16 1997-05-02 Toshiba Corp 通信制御装置
JP2002185438A (ja) * 2000-12-11 2002-06-28 Matsushita Electric Ind Co Ltd Crc演算装置
JP2004173178A (ja) * 2002-11-22 2004-06-17 Nec Corp 伝送システムおよび伝送装置
WO2010095173A1 (en) * 2009-02-19 2010-08-26 Hitachi, Ltd. Storage apparatus and data integrity assurance method
JP2011176597A (ja) * 2010-02-24 2011-09-08 Panasonic Corp 符号化装置及び符号化方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474751B2 (en) 2021-02-25 2022-10-18 Hitachi, Ltd. Storage apparatus and data processing method therefor

Also Published As

Publication number Publication date
JPWO2014115277A1 (ja) 2017-01-19
US20150339184A1 (en) 2015-11-26
US9720767B2 (en) 2017-08-01
JP6046750B2 (ja) 2016-12-21

Similar Documents

Publication Publication Date Title
CN111435292B (zh) 利用自适应写缓冲区释放的存储介质编程
JP5437922B2 (ja) 同時データ操作が可能なdmaエンジン
JP5159902B2 (ja) 入出力処理システム内のチャネル・サブシステムと通信するように構成された制御装置において可変長のデバイス・コマンド・ワード(dcw)を処理するための方法
US8762609B1 (en) System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
JP5107880B2 (ja) データ転送処理装置及び方法
TWI466126B (zh) 多通道儲存裝置及在其中儲存資料之方法
EP4264407B1 (en) Method and apparatus for controlling a computational storage processor
US8924606B2 (en) Storage system and data transfer control method
CN111625181B (zh) 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统
TW201901426A (zh) 非揮發性記憶體裝置及其讀取方法
CN114328316A (zh) Dma控制器、soc系统及基于dma控制器的数据搬运方法
JP2011512591A5 (ja)
CN101206612B (zh) 信息处理装置以及历史管理方法
JP6649989B2 (ja) ストレージシステム及びその制御方法
JP6046750B2 (ja) ストレージ装置およびストレージ装置制御方法
JP6426838B2 (ja) ストレージシステム、及び、記憶制御方法
US9213486B2 (en) Writing new data of a first block size to a second block size using a write-write mode
TWI865071B (zh) 用於使用卸載主機任務的非揮發性儲存裝置進行資料處理的方法、系統及非暫態性處理器可讀取媒體
JP4394533B2 (ja) ディスクアレイシステム
CN120523392A (zh) 用于管理读和写操作的数据完整性的系统和方法
CN101241478B (zh) 数据传送方法
CN109445686A (zh) 一种存储磁盘以及存取数据的方法
JP2019095844A (ja) データ転送装置およびデータ転送方法
US20250110819A1 (en) Memory Access Validation for Input/Output Operations Using an Interposer
JP2007079715A (ja) データ転送方法、プログラムおよび装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13872592

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014558362

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14758929

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13872592

Country of ref document: EP

Kind code of ref document: A1