WO2015177917A1 - 演算回路、符号化回路及び復号回路 - Google Patents

演算回路、符号化回路及び復号回路 Download PDF

Info

Publication number
WO2015177917A1
WO2015177917A1 PCT/JP2014/063659 JP2014063659W WO2015177917A1 WO 2015177917 A1 WO2015177917 A1 WO 2015177917A1 JP 2014063659 W JP2014063659 W JP 2014063659W WO 2015177917 A1 WO2015177917 A1 WO 2015177917A1
Authority
WO
WIPO (PCT)
Prior art keywords
circuit
circuits
xor
data blocks
encoding
Prior art date
Application number
PCT/JP2014/063659
Other languages
English (en)
French (fr)
Inventor
富田 憲範
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2016520885A priority Critical patent/JPWO2015177917A1/ja
Priority to PCT/JP2014/063659 priority patent/WO2015177917A1/ja
Priority to CN201480079084.0A priority patent/CN106416085A/zh
Priority to EP14892478.0A priority patent/EP3148092A4/en
Publication of WO2015177917A1 publication Critical patent/WO2015177917A1/ja
Priority to US15/341,249 priority patent/US20170077951A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/07Arithmetic codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6563Implementations using multi-port memories
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6572Implementations using a tree structure, e.g. implementations in which the complexity is reduced by a tree structure from O(n) to O (log(n))
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes

Definitions

  • the present invention relates to an arithmetic circuit, an encoding circuit, and a decoding circuit.
  • XOR (exclusive OR) operation is performed, for example, when generating a parity bit to be added to transmission data.
  • RPS Random Packet Stream
  • TCP Transmission Control Protocol
  • IP Internet Protocol
  • the RPS technique is a technique for automatically generating lost packets during data transfer.
  • an XOR operation between data blocks having a certain amount of data is performed many times in a transmission apparatus.
  • the process of repeating the XOR operation many times with a combination of a plurality of data blocks takes a long time if it is performed by software, and cannot cope with the situation where the communication speed increases. Can be considered.
  • a plurality of memories that hold data blocks that are units for performing an exclusive OR operation, and a plurality of the data blocks that receive a selection signal and are read from the plurality of memories are exclusive.
  • a plurality of selection circuits that select two or more data blocks to be used for the logical sum operation based on the selection signal, and an exclusive OR operation based on the two or more data blocks selected by the plurality of selection circuits 1
  • an arithmetic circuit having a plurality of exclusive OR arithmetic circuits is provided.
  • a plurality of selection circuits for selecting two or more data blocks used for exclusive OR operation based on the selection signal, and an exclusive OR operation based on the two or more data blocks selected by the plurality of selection circuits are provided.
  • an encoding circuit having one or more exclusive OR operation circuits that perform and generate encoded data.
  • a plurality of memories that hold data blocks that are encoded data that is a unit for performing an exclusive OR operation, and a plurality of the plurality of the memories that receive a selection signal and are read from the plurality of memories Among the data blocks, a plurality of selection circuits that select two or more data blocks used for exclusive OR operation based on the selection signal, and an exclusion based on the two or more data blocks selected by the plurality of selection circuits
  • a decoding circuit having one or a plurality of exclusive OR circuits for performing a logical OR operation and generating decoded data.
  • FIG. 1 is a diagram illustrating an example of an arithmetic circuit according to the first embodiment.
  • the arithmetic circuit 1 is, for example, an encoding circuit that performs an encoding process or a decoding circuit that performs a decoding process.
  • the arithmetic circuit 1 has memories M0 to M15, selection circuits 2a to 2p, XOR circuits 3a to 3o, an input terminal P1 to which a selection signal is input, and an output terminal P2 to which an XOR operation result is output.
  • the signal lines connecting the circuit elements may be bundled with a plurality of bits such as a 64-bit width, for example.
  • the memories M0 to M15 are, for example, RAM (Random Access Memory), and hold a plurality of data blocks that are units for performing an XOR operation.
  • the data block is, for example, data obtained by dividing the data to be encoded with a constant data size.
  • each of the 16 data blocks is held in any of the memories M01 to M15.
  • the memories M0 to M15 output the held data blocks to the selection circuits 2a to 2p, respectively.
  • the selection circuits 2a to 2p receive the selection signal input from the input terminal P1, and based on the selection signal, select whether or not to use the data blocks held in the memories M0 to M15 for the XOR operation.
  • AND circuits logical product operation circuits
  • the selection circuits 2a to 2p are not limited to AND circuits, but can be simplified by using AND circuits.
  • the selection circuits 2a to 2p are AND circuits.
  • the selection circuits 2a to 2p perform an AND operation on the data blocks output from the memories M0 to M15 and a 16-bit selection signal, and output the calculation results to the XOR circuits 3a to 3h.
  • one or more of the plurality of data blocks held in the memories M0 to M15 are selected by the selection circuits 2a to 2 in accordance with the bit that is “1” of the 16-bit selection signal input from the input terminal P1. 2p is output.
  • the RPS encoding matrix is stored in a storage unit (not shown), and a 16-bit column vector is sequentially input to the input terminal P1 as a selection signal.
  • the RPS encoding matrix in FIG. 1 is a 16 ⁇ 30 matrix.
  • the rows in the column vector correspond to the memories M0 to M15. That is, when the value of a certain row in the column vector is “1”, the data block held in the memory corresponding to that row is used for the XOR operation.
  • the XOR circuits 3a to 3o perform an XOR operation based on the data block selected by the selection circuits 2a to 2p.
  • the result of the XOR operation is output from the output terminal P2.
  • the two input terminals of the XOR circuit 3a are connected to the output terminals of the selection circuits 2a and 2b, and the two input terminals of the XOR circuit 3b are connected to the output terminals of the selection circuits 2c and 2d.
  • the two input terminals of the XOR circuit 3c are connected to the output terminals of the selection circuits 2e and 2f, and the two input terminals of the XOR circuit 3d are connected to the output terminals of the selection circuits 2g and 2h.
  • the two input terminals of the XOR circuit 3e are connected to the output terminals of the selection circuits 2i and 2j, and the two input terminals of the XOR circuit 3f are connected to the output terminals of the selection circuits 2k and 2l.
  • the two input terminals of the XOR circuit 3g are connected to the output terminals of the selection circuits 2m and 2n, and the two input terminals of the XOR circuit 3h are connected to the output terminals of the selection circuits 2o and 2p.
  • the two input terminals of the XOR circuit 3i are connected to the output terminals of the XOR circuits 3a and 3b, and the two input terminals of the XOR circuit 3j are connected to the output terminals of the XOR circuits 3c and 3d.
  • the two input terminals of the XOR circuit 3k are connected to the output terminals of the XOR circuits 3e and 3f, and the two input terminals of the XOR circuit 3l are connected to the output terminals of the XOR circuits 3g and 3h.
  • Two input terminals of the XOR circuit 3m are connected to output terminals of the XOR circuits 3i and 3j, and two input terminals of the XOR circuit 3n are connected to output terminals of the XOR circuits 3k and 3l.
  • the two input terminals of the XOR circuit 3o are connected to the output terminals of the XOR circuits 3m and 3n, and the output terminal of the XOR circuit 3o is connected to the output terminal P2.
  • the XOR circuits 3a to 3o are connected in a tree shape (tournament shape) as described above.
  • the XOR circuit is not limited to two inputs and may have three or more inputs.
  • one XOR circuit may perform an XOR operation on data blocks output from the selection circuits 2a to 2p.
  • Column vectors having column numbers 0 to 29 are sequentially input to the input terminal P1 as selection signals.
  • the value of one row is 1, and the values of the other rows are 0.
  • a data block held in a memory corresponding to a row having a value of 1 is output from any of the selection circuits 2a to 2p.
  • Other selection circuits output 0.
  • the data block itself held in any of the memories M0 to M15 is output from the XOR circuit 3o at the last stage of the XOR circuits 3a to 3o having the connection relation as described above.
  • each column vector with column numbers 16 to 29 the value of multiple rows is 1.
  • a column vector is input to the input terminal P1 as a selection signal, a plurality of data blocks held in the memory corresponding to the row whose value is 1 are output from any two or more of the selection circuits 2a to 2p. Is done. Other selection circuits output 0.
  • the XOR circuit 3o at the last stage of the XOR circuits 3a to 3o having the above connection relationship outputs the XOR operation results of a plurality of data blocks output from any two or more of the selection circuits 2a to 2p. Is done.
  • the arithmetic circuit 1 temporarily holds each data block in the plurality of memories M0 to M15, and selects the selection circuits 2a to 2p from the plurality of data blocks read from the memories M0 to M15. Then, the one used for the calculation is selected and passed to the XOR circuits 3a to 3o.
  • FIG. 2 is a diagram for explaining an example of the RPS encoding process.
  • data is divided into data blocks of a certain size.
  • 16 KB data is divided into 16 data blocks for each 1 KB, and the divided terminal blocks are referred to as blocks b0 to b15.
  • the encoding circuit selects one or a plurality of blocks b0 to b15 obtained by dividing the data, and performs XOR operation on the selected blocks, thereby performing the encoding data d0 to d15 and the redundant data. Encoded data e0 to e13 are generated.
  • combination information (a column vector of the RPS encoding matrix in FIG. 7 in the example described later) is added to the packet header of the encoded data or the like as a packet, and after a communication packet header is added, UDP ( (User Datagram Protocol) communication.
  • UDP User Datagram Protocol
  • FIG. 3 is a diagram illustrating an example of an information processing apparatus.
  • the information processing apparatus 4 includes a computer 5 and a function expansion board 6 attached to the computer 5.
  • the computer 5 includes a CPU (Central Processing Unit) 5A, a main storage unit 5B, and a PCIe (PCI express) bus 5C.
  • the function expansion board 6 includes a memory chip 6A, an FPGA (Field-Programmable Gate Array) 6B, and a LAN (Local Area Network) connector 6C. Further, the CPU 5A and the FPGA 6B are connected via the PCIe bus 5C.
  • the CPU 5A reads the transmission data from an HDD (Hard Disk Drive) or the like (not shown) and stores it in the main storage unit 5B. Also, the FPGA 6B is instructed to execute the RPS encoding process.
  • HDD Hard Disk Drive
  • the FPGA 6B is instructed to execute the RPS encoding process.
  • the main storage unit 5B stores transmission data and various data necessary for processing by the CPU 5A.
  • a RAM is used as the main storage unit 5B.
  • the memory chip 6A stores data transferred from the main storage unit 5B by a DMA (Direct Memory Access) controller of the FPGA 6B.
  • a RAM is used as the memory chip 6A.
  • the FPGA 6B performs RPS encoding processing of data and the like, generates a communication packet, and outputs it to the LAN connector 6C.
  • the LAN connector 6C transfers the packet output from the FPGA 6B to a receiving device (not shown) via the network.
  • FIG. 4 is a diagram illustrating an example of an FPGA that performs RPS encoding processing. Note that in FIG. 4, illustrations of portions that execute control and functions other than RPS encoding processing of transmission data are omitted.
  • the FPGA 6B includes a PCIe interface 6B1, a memory controller 6B2, a communication processing circuit 6B3, a control circuit 7, and an encoding circuit 8.
  • the PCIe interface 6B1 is a PCIe endpoint by an I / O device or the like, and performs processing in the physical layer and the data link layer for data transferred via the PCIe bus 5C.
  • the memory controller 6B2 is a memory interface that divides the data stored in the memory chip 6A into data blocks of a certain size and transfers them to BRAM (Block RAM) m0 to m15. For example, as shown in FIG. 2, the memory controller 6B2 divides 16 KB data into 16 blocks b0 to b15 having a fixed size of 1 KB and transfers them to BRAMs m0 to m15.
  • BRAM Block RAM
  • the communication processing circuit 6B3 performs processing in the network layer, the data link layer, and the physical layer on the encoded data output from the encoding circuit 8, generates a communication packet, and outputs it to the LAN connector 6C. .
  • the control circuit 7 is a circuit that performs control and the like when the encoding circuit 8 generates encoded data.
  • the circuit configuration of the control circuit 7 will be described later.
  • the encoding circuit 8 is a circuit that generates encoded data by performing an XOR operation between a plurality of data blocks. In the example of FIG. 2, the encoding circuit 8 performs an XOR operation between the blocks b0 to b15, and generates encoded data d0 to d15 and redundant encoded data e0 to e13.
  • FIG. 5 is a diagram illustrating an example of an encoding circuit according to the second embodiment.
  • the encoding circuit 8 includes BRAMs m0 to m15, registers 9a to 9p, AND circuits 10a to 10p, XOR circuits 11a to 11o, registers 12a to 12o, input terminals P3, P4, P5, and an output terminal P6.
  • a WE (Write Enable) signal that enables writing of data blocks to the BRAMs m0 to m15 is input from the control circuit 7 to the input terminal P3.
  • a write address signal when the BRAMs m0 to m15 write data blocks and a read address signal when the BRAMs m0 to m15 read the data blocks and output them to the AND circuits 10a to 10p are input from the control circuit 7 to the input terminal P4. Is done.
  • Each element of a column vector of an RPS encoding matrix to be described later is input from the control circuit 7 to the input terminal P5, to the AND circuits 10a to 10p.
  • the encoding circuit 8 is supplied with 16 data blocks divided into a predetermined size from the memory chip 6A via the memory controller 6B2.
  • the BRAMs m0 to m15 respectively supply the supplied 16 data blocks, for example, the blocks b0 to b15 in FIG. One block is written and stored. Further, when a read address signal is input from the control circuit 7 via the input terminal P3, the BRAMs m0 to m15 respectively read the stored data blocks and output, for example, 64 bits at a time to the registers 9a to 9p.
  • the registers 9a to 9p are connected between each of the BRAMs m0 to m15 and each of the AND circuits 10a to 10b.
  • the registers 9a to 9p hold the data blocks output from the BRAMs m0 to m15, and adjust the AND circuit output timing of the held data blocks.
  • the registers 9a to 9b hold and output the data blocks supplied from the BRAMs m0 to m15 at a timing synchronized with a clock signal (not shown).
  • the input timing to the AND circuits 10a to 10p can be set. Can be aligned.
  • AND circuits 10a to 10p function as selection circuits. Each of the AND circuits 10a to 10p performs an AND operation on the data block output from the BRAMs m0 to m15 and each value (corresponding to the selection signal) of the RPS encoding matrix input from the input terminal P5, and the operation result Are output to the XOR circuits 11a to 11h. At this time, the AND circuits 10a to 10p select and output the data blocks held in the BRAMs m0 to m15 corresponding to the row in which the value of the column vector input via the input terminal P5 is “1”, respectively. .
  • the column vector of the RPS coding matrix will be described later.
  • the XOR circuits 11a to 11o perform an XOR operation between the data blocks selected and output by the AND circuits 10a to 10p, and output the operation result to the output terminal P6.
  • the two input terminals of the XOR circuit 11a are connected to the output terminals of the AND circuits 10a and 10b, and the two input terminals of the XOR circuit 11b are connected to the output terminals of the AND circuits 10c and 10d.
  • the two input terminals of the XOR circuit 11c are connected to the output terminals of the AND circuits 10e and 10f, and the two input terminals of the XOR circuit 11d are connected to the output terminals of the AND circuits 10g and 10h.
  • the two input terminals of the XOR circuit 11e are connected to the output terminals of the AND circuits 10i and 10j, and the two input terminals of the XOR circuit 11f are connected to the output terminals of the AND circuits 10k and 10l.
  • the two input terminals of the XOR circuit 11g are connected to the output terminals of the AND circuits 10m and 10n, and the two input terminals of the XOR circuit 11h are connected to the output terminals of the AND circuits 10o and 10p.
  • the two input terminals of the XOR circuit 11i are connected to the output terminals of the XOR circuits 11a and 11b via the registers 12a and 12b.
  • the two input terminals of the XOR circuit 11j are connected to the output terminals of the XOR circuits 11c and 11d via the registers 12c and 12d.
  • the two input terminals of the XOR circuit 11k are connected to the output terminals of the XOR circuits 11e and 11f via the registers 12e and 12f.
  • the two input terminals of the XOR circuit 11l are connected to the output terminals of the XOR circuits 11g and 11h via the registers 12g and 12h.
  • the two input terminals of the XOR circuit 11m are connected to the output terminals of the XOR circuits 11i and 11j via the registers 12i and 12j.
  • the two input terminals of the XOR circuit 11n are connected to the output terminals of the XOR circuits 11k and 11l via the registers 12k and 12l.
  • the two input terminals of the XOR circuit 11o are connected to the output terminals of the XOR circuits 11m and 11n via the registers 12m and 12n, and the output terminal of the XOR circuit 11o is connected to the output terminal P6 via the register 12o. ing.
  • the output terminal P6 outputs the result of the XOR operation between the data blocks performed by the XOR circuits 11a to 11o to the communication processing circuit 6B3 (FIG. 4) as encoded data (including the above-described encoded data and redundant encoded data). To do.
  • the registers 12a to 12p have the same function as the registers 9a to 9p, and adjust timing of data input / output between the XOR circuits 11a to 11o.
  • the XOR circuits 11a to 11o are connected in a tree shape (tournament shape) over a plurality of stages.
  • the XOR circuit is not limited to two inputs, and may have three or more inputs.
  • one XOR circuit may perform an XOR operation on data blocks output from the AND circuits 10a to 10p.
  • FIG. 6 is a diagram illustrating an example of the control circuit. In order to explain the connection between the control circuit 7 and the encoding circuit 8 described above, a part of the encoding circuit 8 is also illustrated.
  • the control circuit 7 has a main control circuit 13.
  • the main control circuit 13 includes an adder 14, a register 15, an encoding matrix holding unit 16, a comparison circuit 17, a register 18, and an adder 19. Further, the control circuit 7 has registers 20 and 21.
  • the adder 14 includes a flip-flop that holds 1, for example, and increments (+1) the address held in the register 15.
  • the register 15 holds the write address and read address of the BRAMs m0 to m15, and outputs the held write address and read address to the BRAMs m0 to m15 via the input terminal P3.
  • the register 15 holds the address obtained by adding +1 to the held address in synchronization with a clock signal (not shown).
  • the encoding matrix holding unit 16 has, for example, a plurality of registers and stores the RPS encoding matrix.
  • FIG. 7 is a diagram illustrating an example of the RPS encoding matrix.
  • the RPS encoding matrix shown in FIG. 7 is a 16 ⁇ 30 matrix. Encoded data by the RPS encoding process is generated for each column vector of the RPS encoding matrix.
  • the column vectors with the column numbers 0 to 15 of the RPS encoding matrix are column vectors used when generating the encoded data d0 to d15.
  • the column vectors having the column numbers 16 to 29 of the RPS encoding matrix are column vectors used in generating the redundant encoded data e16 to e29 in the example of FIG.
  • the rows in the column vector correspond to BRAMs m0 to m15. That is, when the value of a certain row in the column vector is “1”, the data block held in the BRAM corresponding to that row is used for the XOR operation.
  • the comparison circuit 17 determines whether writing of one data block (for example, 1 KB) in the BRAMs m0 to m15 is completed based on the increment number in the adder 14, and when writing of one data block is completed, A set signal is output.
  • one data block for example, 1 KB
  • the register 18 holds the column number of the RPS encoding matrix.
  • the register 18 receives the set signal output from the comparison circuit 17, the register 18 holds the column number value obtained by adding +1 to the held column number by the adder 19 in synchronization with a clock signal (not shown). .
  • the adder 19 has a flip-flop that holds 1, for example, and increments the column number held in the register 18.
  • the register 20 holds a WE signal generated by a WE signal generation unit (not shown) in the main control circuit 13.
  • the register 20 outputs the held WE signal to the BRAMs m0 to 15 through the input terminal P4.
  • the register 21 outputs each value of the column vector of the held RPS encoding matrix to the AND circuits 10a to 10p via the input terminal P5. For example, the value in the first row of the column vector is sequentially input to the AND circuit 10a, and the value in the second row is sequentially input to the AND circuit 10b.
  • the encoding circuit 8 is included in the FPGA 6B, but may be realized by an ASIC (Application Specific Integrated Circuit) or the like.
  • FIG. 8 is a flowchart showing an exemplary flow of the RPS encoding process.
  • step S1 the data block is written into the BRAMs m0 to m15 (step S1).
  • the control circuit 7 asserts the WE signal and supplies a write address to the BRAMs m0-15.
  • the BRAMs m0 to m15 write 16 data blocks divided into a certain size from the memory chip 6A via the memory controller 6B2.
  • the main control circuit 13 sets the column number j to 0 (step S2).
  • the initial value of the register 18 of the main control circuit 13 is set to zero.
  • the control circuit 7 inputs each value of the column vector of the column number j of the RPS encoding matrix to the AND circuits 10a to 10p (step S3).
  • the register 21 as shown in FIG. 6 inputs the values of the column vector of the RPS encoded column number j held in the AND circuits 10a to 10p via the input terminal P5. To do.
  • the value in the first row of the column vector with column number j is sequentially input to the AND circuit 10a and the value in the second row is input to the AND circuit 10b.
  • the AND circuits 10a to 10p perform an AND operation on each value of the column vector of the column number j and the data blocks of the BRAMs m0 to 15, and output the calculation results to the XOR circuits 11a to 11h.
  • the AND circuits 10a to 10p select the data blocks held in the BRAMs m0 to 15 according to the value of the row that is “1” of the column vector, and output them to the XOR circuits 11a to 11h.
  • step S4 the encoding circuit 8 performs an XOR operation.
  • the XOR circuits 11a to 11h perform an XOR operation using the data blocks held in the BRAMs m0 to m15.
  • Each column vector with column number j from 0 to 15 has a value of 1 in one row and 0 in the other rows.
  • the XOR circuit 11o at the last stage of the XOR circuits 11a to 11o having the connection relationship as described above is held in the BRAM corresponding to the row whose value is 1.
  • the data block itself is output.
  • Each column vector with column numbers 16 to 29 has a value of 1 for multiple rows.
  • a column vector is input to the input terminal P5, it is output from any two or more of the AND circuits 10a to 10p from the XOR circuit 11o at the last stage of the XOR circuits 11a to 11o having the above connection relationship.
  • the XOR operation results of the plurality of data blocks to be output are output.
  • step S5 determines whether or not the column number j has reached the maximum value 29 (step S5), and while the column number j is smaller than 29, the adder 19 sets the column number j to the column number j. +1 is added (step S6). After step S6, the processing from step S3 is repeated.
  • step S1 the processes from step S1 are repeated.
  • the encoded data and the redundant encoded data output from the encoding circuit 8 are transferred as packets through the processing of the communication processing circuit 6B3.
  • the column vector used for encoding is added to the packet header and transferred together with the encoded data and the redundant encoded data.
  • the encoding circuit 8 once holds each data block by the plurality of BRAMs m0 to m15, selects the data block to be used for the calculation by the AND circuits 10a to 10p based on the column vector values, and performs XOR An XOR operation is performed in the circuits 11a to 11o.
  • the arithmetic processing becomes efficient in RPS encoding processing that performs many XOR operations, and high-speed arithmetic (encoding processing) becomes possible.
  • the BRAMs m0 to m15 are used in 64 bits ⁇ 512 words, if the BRAMs m0 to m15 are 1 KB data blocks, it is possible to hold four data blocks, respectively. Become. As a result, the BRAMs m0 to m15 can continuously input four data blocks to the registers 9a to 9p, so that the throughput of the encoding process is further improved. Furthermore, by making the BRAMs m0 to m15 dual-port memories that can execute writing and reading simultaneously, it is possible to conceal the time for writing a new data block to the BRAM, thereby further improving the throughput.
  • FIG. 9 is a diagram illustrating an example of a decoding process for encoded data obtained by the RPS encoding process.
  • the header of the received packet is referred to, and data block combination information (column vector of the RPS coding matrix) used for encoding is extracted from the header.
  • the encoded data d0, d1, d3 to d15 correspond to the data blocks b0, b1, b3 to b15 and are output as they are.
  • FIG. 9 an example in which a packet including the encoded data d2 is lost is shown.
  • the decoding circuit generates (decodes) a lost packet block b2 from the received encoded data and redundant encoded data and the extracted combination information.
  • the block b2 is generated by the XOR operation of the encoded data d0, d1, d3,..., D15 and the redundant encoded data e0.
  • the XOR operation is also performed in the decoding circuit, and the circuit configuration is the same as that of the encoding circuit 8.
  • a decoding circuit used when performing the decoding process will be described with reference to FIG. Note that the decoding circuit may be included in the FPGA 6B shown in FIG. 3 together with the encoding circuit 8, for example.
  • the control circuit for controlling the decoding circuit can be realized by a circuit similar to the control circuit 7 as shown in FIG.
  • FIG. 10 is a diagram illustrating an example of a decoding circuit according to the second embodiment.
  • the decoding circuit 8a includes BRAMs n0, n1, n2, n3,..., N26, n27, n28, n29, and registers ra0, ra1, ra2, ra3,. Further, the decoding circuit 8a includes AND circuits a0, a1, a2, a3,..., A26, a27, a28, a29, an XOR circuit unit 22, input terminals P13 to P15, and an output terminal P16.
  • the input terminal P13 receives a WE signal that enables writing of encoded data of the BRAMs n0 to n29.
  • the input terminal P14 receives a write address when the BRAMs n0 to n29 write encoded data and the like, and a read address when the BRAMs n0 to n29 read the encoded data and output them to the AND circuits a0 to a29.
  • Each value of a decoding vector, which will be described later, supplied to the AND circuits a0 to a29 is input to the input terminal P15.
  • the BRAMs n0 to n29 write and hold the received encoded data one block at a time. Further, when a read address is input via the input terminal P13, the BRAMs n0 to n29 output the encoded data and the like held therein, for example, 64 bits at a time to the registers ra0 to ra29.
  • BRAMs n0 to n29 corresponding to 30 data blocks (encoded data) output from the encoding circuit 8, that is, encoded data d0 to d15 and redundant encoded data e0 to e13.
  • encoded data d0 to d15 encoded data d0 to d15
  • redundant encoded data e0 to e13 redundant encoded data
  • the registers ra0 to ra29 have the same functions as the registers 9a to 9p shown in FIG.
  • the AND circuits a0 to a29 function as selection circuits similarly to the AND circuits 10a to 10p shown in FIG.
  • the AND circuits a0 to a29 perform AND operations on the encoded data or redundant encoded data output from the BRAMs n0 to n29 and the respective values of the decoded vector (functioning as a selection signal) input from the input terminal P5. . Then, the AND circuits a0 to a29 output the calculation result to the XOR circuit unit 22.
  • the AND circuits a0 to a29 respectively encode the encoded data or redundantly encoded data of the BRAMs n0 to n29 according to the row where the decoded vector (column vector) input through the input terminal P15 is “1”. Select and output.
  • the XOR circuit unit 22 is a circuit in which, for example, a plurality of XOR circuits and registers are connected in a tree shape, similarly to the encoding circuit 8 shown in FIG.
  • the XOR circuit unit 22 performs an XOR operation on the encoded data or redundant encoded data selected and input by the AND circuits a0 to a29, and decodes the original data block.
  • the output terminal P16 outputs the decoded original data block.
  • a decoding vector generation process used for the decoding process will be described.
  • the decoded vector is generated, for example, by a control circuit (not shown) that controls the decoding circuit 8a.
  • FIG. 11 is a diagram for explaining an example of generating a reception coding matrix.
  • FIG. 12 is a diagram illustrating an example of the generated reception encoding matrix.
  • the reception encoding matrix (16 rows and 16 columns) shown in FIG. 12 is generated when 16 packets are received.
  • the column vector of the reception encoding matrix is represented as, for example, the column vector D (c) using the column number c, and the value of the u-th row of the column vector D (c) is expressed as an element [u]. It shall represent.
  • a decoding vector is generated from the reception coding matrix as described above.
  • the decoding process is similar to, for example, Gaussian elimination, which is known as a method for solving linear simultaneous equations.
  • Gaussian elimination is known as a method for solving linear simultaneous equations.
  • the received coding matrix is represented by a matrix A
  • the original data block is represented by a column vector X
  • the coded data or redundant coded data is represented by a column vector C.
  • the decoding vector functioning as a selection signal input to the AND circuits a0 to a29 of the decoding circuit 8a is based on the received encoding matrix, for example, in a control circuit (not shown) that controls the decoding circuit 8a, for example, Is generated as follows.
  • FIG. 13 is a flowchart illustrating an exemplary flow of a decoding vector generation process.
  • a matrix ops into which values of a plurality of decoding vectors are substituted is initialized (step S10).
  • the initialization of the matrix ops is performed by calculating a unit matrix in which the diagonal elements of the matrix ops are 1 and the other elements are 0.
  • the matrix ops has the same number of rows and columns as the number of columns of the reception encoding matrix.
  • the column number c of the reception encoding matrix is set to 0 (step S11).
  • the column number c is a variable to which the column number of the basis vector or the basis vector candidate is substituted in the process of step S13 described later.
  • a base vector and a base vector candidate are determined for the column vector included in the reception encoding matrix (step S12).
  • the basis vector is a vector that has only one element to be 1 and is orthogonal to each other.
  • a base vector in which element [u] (value of row number u) is 1 is referred to as a base vector of element [u].
  • the column vector of the column number c is D [c]
  • the column vectors D (0) to D (12) of the column number c of 0 to 12 respectively.
  • the basis vectors of the elements [3] to [12] are determined.
  • the basis vector candidate is a column vector in which the element [u] is 1 when the base vector of the element [u] does not exist in the received encoding matrix.
  • a column vector D (13) in which element [0] is 1 is a base vector candidate for element [0]
  • a column vector D (14) in which element [2] is 1 is a base vector candidate for element [2]. It is determined. Further, the column vector D (15) in which the element [1] is 1 is determined as the basis vector candidate of the element [1].
  • step S13 a process of converting the column vector of the reception encoding matrix into a base vector is performed (step S13).
  • step S13 first, a column vector whose element is 1 with the same row number as the element that is 1 of the basis vector (or the basis vector candidate) is detected in the reception encoding matrix. Then, the element of the detected column vector is updated with the XOR operation result of the element and the element of the base vector. Since the XOR operation result of 1 and 1 is 0, the corresponding element of the detected column vector is 0.
  • Such processing is repeated for each basis vector (or basis vector candidate) of the reception encoding matrix, whereby the basis vector candidate of the reception encoding matrix is converted to a basis vector.
  • FIG. 14 is a diagram illustrating an example of the updated reception encoding matrix.
  • the column vectors D (13) to (15) which are the basis vector candidates shown in FIG. 12, are converted into the basis vectors of the elements [0] to [1] as shown in FIG. It has become.
  • step S13 the XOR operation processing result when converting the basis vector candidate of the reception encoding matrix into the basis vector is substituted into each element of the matrix ops.
  • a matrix ops is generated.
  • FIG. 15 is a diagram illustrating an example of the matrix ops.
  • an XOR operation result when the basis vector candidate of the reception encoding matrix is converted into a basis vector is substituted.
  • the column vector of the column number i of the matrix ops is referred to as a column vector op (i).
  • the update process by the XOR operation as described above is performed in order to convert the column vectors D (13) to D (15) into base vectors.
  • the column vectors op (13) to (15) of the matrix ops have elements that are 1 except for the diagonal elements of the matrix.
  • FIG. 16 is a diagram illustrating an example of a relationship between a column vector (decoded vector) of the matrix ops and a data block decoded by the column vector.
  • each of the column vectors op (0) to op (15) of the matrix ops shown in FIG. 15 is represented by a 32-bit binary number for convenience.
  • the rightmost element of the column vectors op (0) to op (15) is bit 0, and corresponds to the element in the first row of the column vectors op (0) to op (15).
  • the values of the column vectors op (0) to op (15) of the matrix ops are the values of the XOR operation results when the column vector of the reception encoding matrix having the corresponding column number is changed to the base vector. It is a value.
  • the decoding circuit 8a can perform an XOR operation when converting a reception encoding matrix into a base vector between encoded data or redundant encoded data. Similar processing is performed.
  • a data block that can be decoded by the column vectors op (0) to op (15) of the matrix ops is 1 of the base vector of the received encoding matrix after updating the same column number as the column vectors op (0) to op (15). Corresponds to the line number of the element.
  • each element in the 1st to 16th rows of the reception encoding matrix is similar to the encoding matrix: This corresponds to BRAMs m0 to m15 in which data blocks are stored. That is, the data block decoded by the column vector of the matrix ops is held in the BRAM corresponding to the row number of the element which is the same column number as that column vector and becomes 1 of the base vector of the received encoding matrix after update. Data block.
  • the column vector having the same column number as the column vector op (2) of the matrix ops in the updated reception encoding matrix is Column vector D (2).
  • the column vector D (2) is a base vector whose element [5] is 1, the block b5 stored in the BRAM m5 corresponding to the row number 5 of the reception encoding matrix is decoded.
  • the column vector having the same column number as the column vector op (15) of the matrix ops in the updated reception encoding matrix is the column vector.
  • D (15) is a base vector whose element [2] is 1, the block b2 stored in the BRAM m2 corresponding to the row number 2 of the reception encoding matrix is decoded.
  • a decoding vector is calculated in advance and stored in a storage unit in a control circuit (not shown) that controls the decoding circuit 8a. You can also.
  • a decoding circuit 8a as shown in FIG. 10 holds each data block (encoded data (including redundantly encoded data)) by a plurality of BRAMs n0 to n29, and performs an AND circuit based on the value of the decoding vector as described above.
  • a data block to be used for calculation is selected in a0 to a29. Then, the XOR operation between the selected data blocks is performed by the XOR circuit unit 22.
  • the receiving side device including the decoding circuit 8a may send a decoding completion signal to the transmitting side device. For example, when there is no packet loss, when reception of a plurality of packets including the encoded data d0 to d15 is completed, the receiving device sends a decoding completion signal to the transmitting device. At the time of receiving the decoding completion signal, the transmission side apparatus stops the encoding process in the encoding circuit 8 as shown in FIG. Thereby, it is not necessary to perform the XOR operation for all the column vectors of the RPS encoding matrix as shown in FIG.
  • Modification 17 and 18 are diagrams showing a modification of the encoding circuit according to the second embodiment. 17 and 18 correspond to a part of the encoding circuit 8 shown in FIG. The same elements as those of the encoding circuit 8 are denoted by the same reference numerals as those in FIG.
  • the BRAM 30 is connected to the output side of the XOR circuit 11a.
  • a selector 31 is connected to the output side of the register 12 a and the BRAM 30.
  • the BRAM 30 holds the XOR operation result of the XOR circuit 11a, that is, the XOR operation result between the data blocks of the BRAMs m0 to m1.
  • the selector 31 selects and outputs either the register 12a or the BRAM 30 based on the input selection signal.
  • the selection signal is supplied from, for example, the control circuit 7 shown in FIG.
  • a BRAM 32 is connected to the output side of the XOR circuit 11i.
  • a selector 33 is connected to the output side of the register 12 i and the BRAM 32.
  • the BRAM 32 holds the XOR operation result of the XOR circuit 11i, that is, the XOR operation result between the data blocks of the BRAMs m0 to m3.
  • the selector 33 selects and outputs either the register 12i or the BRAM 32 based on the input selection signal.
  • the selection signal is supplied from, for example, the control circuit 7 shown in FIG.
  • FIG. 19 is a diagram showing a modification of the encoding circuit according to the second embodiment.
  • the encoding circuit 8b shown in FIG. 19 is obtained by providing a BRAM and a selector in part of the encoding circuit 8 shown in FIG.
  • the same elements as those of the encoding circuit 8 are denoted by the same reference numerals as those shown in FIG. 5 and the description thereof is omitted.
  • a BRAM 30 is connected to the output side of the XOR circuit 11a of the encoding circuit 8b in FIG.
  • a selector 31 is connected to the output side of the register 12 a and the BRAM 30.
  • the BRAM 30 holds the XOR operation result of the XOR circuit 11a, and the selector 31 selects and outputs either the register 12a or the BRAM 30 based on the input signal. Thereby, since the XOR operation result between the data blocks held in BRAMm0 and BRAMm1 is held in BRAM 30, the XOR operation result can be used again.
  • FIG. 20 is a diagram for explaining an exemplary flow of the encoding process.
  • a column vector having a column number of 0 is input to the encoding circuit 8b via the input terminal P5
  • the XOR operation result between the data blocks held in BRAMm0 and BRAMm1 is held in the BRAM 30.
  • the same operation as the XOR operation between the data blocks held in BRAMm0 and BRAMm1 by the column vector having the column number 0 is performed also for the column vector having the column number 28.
  • the XOR operation result held in the BRAM 30 in the column vector with the column number 0 can be used also when generating encoded data with the column vector with the column number 28.
  • the next data block can be written to the BRAMs m0 to m2 after the column vector of the column number 27. Thereby, the throughput of the encoding process can be improved.
  • the above modification can be similarly applied to the decoding circuit 8a shown in FIG.
  • the encoding circuit and the decoding circuit have been described as examples of the arithmetic circuit that performs the XOR operation, the present invention is not limited to these.
  • the present invention can also be applied to a device that performs a plurality of XOR operations (for calculating parity data) such as RAID (Redundant Arrays of Inexpensive Disks) 6.

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

 演算処理を高速化する。 メモリ(M0~M15)は、排他的論理和演算を行う単位となるデータブロックを保持し、選択回路(2a~2p)は、選択信号を受け、メモリ(M0~M15)から読み出される複数のデータブロックのうち、排他的論理和演算に使用する2以上のデータブロックを選択信号に基づき選択し、XOR回路(3a~3o)(排他的論理和演算回路)は、選択回路(2a~2p)で選択された2以上のデータブロックに基づく排他的論理和演算を行う。

Description

演算回路、符号化回路及び復号回路
 本発明は、演算回路、符号化回路及び復号回路に関する。
 XOR(排他的論理和)演算は、例えば、送信データに付加するパリティビットを生成する際等に行われる。
 近年、TCP(Transmission Control Protocol)/IP(Internet Protocol)を用いた通信時に発生するパケット欠落による通信速度の低下を回避するため、RPS(Random Packet Stream)技術が提案された。RPS技術は、データ転送時に消失したパケットを自動生成する技術である。RPS技術では、パケット復元に用いる符号化データ(冗長データ)を生成するため、送信装置にて、一定のデータ量のデータブロック間のXOR演算が多数回行われる。
特開平11-237997号公報 特開2001-147827号公報 特開平11-102301号公報
 ところで、RPS技術による符号化処理のように、複数のデータブロックの組み合わせでXOR演算を多数回繰り返す処理は、ソフトウェアで行うと処理時間がかかり、通信速度の高速化が進む状況に対応できなくなることが考えられる。
 そこで、XOR演算をハードウェアで行うことが考えられる。しかし、単にソフトウェアをハードウェア化するだけでは、演算の高速化にはつながらない可能性がある。例えば、あるデータブロック間のXOR演算結果を一旦メモリに格納し、その結果と別のデータブロック間でXOR演算する、といった処理を繰り返すと、メモリのデータ転送速度が遅い場合、処理時間が長くなってしまう。
 発明の一観点によれば、排他的論理和演算を行う単位となるデータブロックを保持する複数のメモリと、選択信号を受け、前記複数のメモリから読み出される複数の前記データブロックのうち、排他的論理和演算に使用する2以上のデータブロックを前記選択信号に基づき選択する複数の選択回路と、前記複数の選択回路で選択された前記2以上のデータブロックに基づく排他的論理和演算を行う1または複数の排他的論理和演算回路と、を有する演算回路が提供される。
 また、発明の一観点によれば、排他的論理和演算を行う単位となるデータブロックを保持する複数のメモリと、選択信号を受け、前記複数のメモリから読み出される複数の前記データブロックのうち、排他的論理和演算に使用する2以上のデータブロックを前記選択信号に基づき選択する複数の選択回路と、前記複数の選択回路で選択された前記2以上のデータブロックに基づく排他的論理和演算を行い、符号化データを生成する1または複数の排他的論理和演算回路と、を有する符号化回路が提供される。
 また、発明の一観点によれば、排他的論理和演算を行う単位となる符号化データであるデータブロックを保持する複数のメモリと、選択信号を受け、前記複数のメモリから読み出される複数の前記データブロックのうち、排他的論理和演算に使用する2以上のデータブロックを前記選択信号に基づき選択する複数の選択回路と、前記複数の選択回路で選択された前記2以上のデータブロックに基づく排他的論理和演算を行い、復号データを生成する1または複数の排他的論理和演算回路と、を有する復号回路が提供される。
 開示の演算回路、符号化回路及び復号回路によれば、演算処理を高速化できる。
 本発明の上記及び他の目的、特徴及び利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態による演算回路の一例を示す図である。 RPS符号化処理の一例を説明する図である。 情報処理装置の一例を示す図である。 RPS符号化処理を行うFPGAの一例について説明する図である。 第2の実施の形態による符号化回路の一例を示す図である。 制御回路の一例を示す図である。 RPS符号化行列の一例を示す図である。 RPS符号化処理の一例の流れを示すフローチャートである。 RPS符号化処理で得られた符号化データに対する復号処理の一例を説明する図である。 第2の実施の形態による復号回路の一例を示す図である。 受信符号化行列の生成例を説明する図である。 生成された受信符号化行列の一例を示す図である。 復号ベクトルの生成処理の一例の流れを示すフローチャートである。 更新された受信符号化行列の一例を示す図である。 行列opsの一例を示す図である。 行列opsの列ベクトル(復号ベクトル)と、その列ベクトルにより復号されるデータブロックとの関係の一例を示す図である。 第2の実施の形態による符号化回路の変形例を示す図である(その1)。 第2の実施の形態による符号化回路の変形例を示す図である(その2)。 第2の実施の形態による符号化回路の変形例を示す図である(その3)。 符号化処理の一例の流れを説明する図である。
 以下、発明を実施するための形態を、図面を参照しつつ説明する。
 (第1の実施の形態)
 図1は、第1の実施の形態による演算回路の一例を示す図である。
 演算回路1は、例えば、符号化処理を行う符号化回路、または復号処理を行う復号回路等である。
 演算回路1は、メモリM0~M15、選択回路2a~2p、XOR回路3a~3o、選択信号が入力される入力端子P1、XOR演算結果が出力される出力端子P2を有する。なお、回路素子間を接続する信号線は、例えば、64ビット幅等の複数ビットを束ねていてもよい。
 メモリM0~M15は、例えば、RAM(Random Access Memory)であり、XOR演算を行う単位となる複数のデータブロックを保持する。データブロックは、例えば、符号化対象データが一定のデータサイズで分割されたものである。図1の例では、16個のデータブロックのそれぞれが、メモリM01~M15の何れかに保持される。また、メモリM0~M15は、それぞれ、保持したデータブロックを、選択回路2a~2pに出力する。
 選択回路2a~2pは、入力端子P1から入力される選択信号を受け、その選択信号に基づき、メモリM0~M15に保持されたデータブロックをXOR演算に使用するか否かを選択する。選択回路2a~2pとしては、AND回路(論理積演算回路)を用いることができる。選択回路2a~2pは、AND回路に限定されないが、AND回路を用いることで、簡単な回路にすることができる。
 以下では、選択回路2a~2pはAND回路であるものとして説明する。
 選択回路2a~2pは、メモリM0~M15が出力したデータブロックと、16ビットの選択信号とのAND演算を行い、その演算結果をXOR回路3a~3hに出力する。このとき、入力端子P1から入力される16ビットの選択信号の“1”となるビットに応じて、メモリM0~M15に保持されている複数のデータブロックの1つまたは複数が、選択回路2a~2pから出力される。
 図1の上側には、演算回路1がRPS技術による符号化処理(以下RPS符号化処理と呼ぶ)を行う場合を想定して、RPS符号化行列の一例が示されている。RPS符号化行列は、図示しない記憶部に記憶されており、選択信号として、16ビットの列ベクトルが入力端子P1に順番に入力される。図1のRPS符号化行列は、16行30列の行列である。列ベクトルにおける行は、メモリM0~M15に対応している。つまり、列ベクトルにおけるある行の値が“1”のときには、その行に対応するメモリに保持されているデータブロックがXOR演算に用いられる。
 例えば、列番号が17の列ベクトルが入力端子P1から入力された場合、1,3,5~13,15行目に対応した、メモリM0,M2,M4,…,M12,M14に保持されているデータブロックが、選択回路2a,2c,2e,…,2m,2oから出力される。
 また、列番号が25の列ベクトルが入力端子P1から入力された場合、2,4,…,12,14,16行目に対応した、メモリM1,M3,…,M11,M13,M15に保持されているデータブロックが、選択回路2b,2d,…,2l,2n,2pから出力される。
 XOR回路3a~3oは、選択回路2a~2pで選択されたデータブロックに基づくXOR演算を行う。XOR演算結果は、出力端子P2から出力される。
 XOR回路3aの2つの入力端子は、選択回路2a,2bの出力端子に接続されており、XOR回路3bの2つの入力端子は、選択回路2c,2dの出力端子に接続されている。また、XOR回路3cの2つの入力端子は、選択回路2e,2fの出力端子に接続されており、XOR回路3dの2つの入力端子は、選択回路2g,2hの出力端子に接続されている。また、XOR回路3eの2つの入力端子は、選択回路2i,2jの出力端子に接続されており、XOR回路3fの2つの入力端子は、選択回路2k,2lの出力端子に接続されている。また、XOR回路3gの2つの入力端子は、選択回路2m,2nの出力端子に接続されており、XOR回路3hの2つの入力端子は、選択回路2o,2pの出力端子に接続されている。
 XOR回路3iの2つの入力端子は、XOR回路3a,3bの出力端子に接続されており、XOR回路3jの2つの入力端子は、XOR回路3c,3dの出力端子に接続されている。また、XOR回路3kの2つの入力端子は、XOR回路3e,3fの出力端子に接続されており、XOR回路3lの2つの入力端子は、XOR回路3g,3hの出力端子に接続されている。XOR回路3mの2つの入力端子は、XOR回路3i,3jの出力端子に接続されており、XOR回路3nの2つの入力端子は、XOR回路3k,3lの出力端子に接続されている。XOR回路3oの2つの入力端子は、XOR回路3m,3nの出力端子に接続されており、XOR回路3oの出力端子は、出力端子P2に接続されている。
 図1の例では、上記のようにXOR回路3a~3oは、ツリー状(トーナメント状)に接続されている。なお、XOR回路は2入力に限定されず、3入力以上としてもよく、例えば、1つのXOR回路で選択回路2a~2pから出力されるデータブロックのXOR演算を行ってもよい。
 (演算回路1の動作例)
 以下、演算回路1の動作の一例を説明する。なお、以下では図1に示されているようなRPS符号化行列の列ベクトルが、選択回路2a~2pに入力される選択信号であるものとして説明する。
 入力端子P1には、列番号が0から29までの列ベクトルが選択信号として順に入力される。
 列番号が0~15までの各列ベクトルでは、ある行の値が1であり、他の行の値は0である。選択信号としてこのような列ベクトルが入力端子P1に入力されたときには、値が1の行に対応するメモリに保持されているデータブロックが、選択回路2a~2pの何れかから出力される。その他の選択回路からは、0が出力される。
 これにより、上記のような接続関係をもつXOR回路3a~3oの最後段のXOR回路3oからは、メモリM0~M15の何れかに保持されたデータブロックそのものが出力される。
 列番号が16~29までの各列ベクトルでは、複数の行の値が1である。選択信号としてこのような列ベクトルが入力端子P1に入力されたときには、値が1の行に対応するメモリに保持されている複数のデータブロックが、選択回路2a~2pの何れか2以上から出力される。その他の選択回路からは、0が出力される。
 これにより、上記のような接続関係をもつXOR回路3a~3oの最後段のXOR回路3oからは、選択回路2a~2pの何れか2以上から出力される複数のデータブロックのXOR演算結果が出力される。
 以上のように、本実施の形態による演算回路1は、一旦複数のメモリM0~M15で各データブロックを保持し、メモリM0~M15から読み出された複数のデータブロックから、選択回路2a~2pで演算に用いるものを選びXOR回路3a~3oに渡す。このような並列化処理により、RPS符号化処理のように複数のデータブロック間の組み合わせで多くのXOR演算を行う際、演算処理が効率化され、高速な演算が可能になる。
 (第2の実施の形態)
 以下、XOR演算を行う演算回路の例として、送信回路に含まれ、RPS符号化処理を行う符号化回路、また受信回路に含まれ、RPS符号化処理で符号化された符号化データを復号する復号回路を説明する。
 まず、RPS符号化処理の一例を説明する。
 図2は、RPS符号化処理の一例を説明する図である。
 まず、RPS符号化による処理では、データが、一定サイズのデータブロックに分割される。ここでは、説明のため、16KBのデータが、1KBごとの16個のデータブロックに分割されるとし、分割された端子ブロックをブロックb0~b15とする。
 次に、符号化回路は、データの分割により得られたブロックb0~b15から1つまたは複数個を選択して、選択されたブロックでXOR演算を行うことで、符号化データd0~d15及び冗長符号化データe0~e13を生成する。
 その後、符号化データ等に、パケットとして、そのパケットヘッダに組み合わせ情報(後述の例では、図7のRPS符号化行列の列ベクトル)が追加され、さらに通信パケットヘッダが付与された後、UDP(User Datagram Protocol)通信により送信される。このとき、伝送経路でパケットの消失や入れ換えが生じても、受信側は、受信した符号化データ等と、受信した組み合わせ情報(後述の例では、図12の受信符号化行列)にガウスの消去法等を適用することで、元の送信データを復号することができる。
 次に、データ通信に用いる情報処理装置の一例を説明する。
 図3は、情報処理装置の一例を示す図である。
 情報処理装置4は、コンピュータ5と、コンピュータ5に装着された機能拡張ボード6を有する。コンピュータ5は、CPU(Central Processing Unit)5A、主記憶部5B、PCIe(PCI express)バス5Cを有している。機能拡張ボード6には、メモリチップ6A、FPGA(Field-Programmable Gate Array)6B、LAN(Local Area Network)コネクタ6Cが搭載されている。また、CPU5AとFPGA6Bは、PCIeバス5Cを介して接続されている。
 CPU5Aは、送信データを図示しないHDD(Hard Disk Drive)等から読み出し、主記憶部5Bに格納させる。また、FPGA6Bに、RPS符号化処理の実行等を指示する。
 主記憶部5Bは、送信データや、CPU5Aによる処理に必要な各種データを格納している。主記憶部5Bには、例えば、RAMが用いられる。
 メモリチップ6Aは、FPGA6Bの有するDMA(Direct Memory Access)コントローラにより、主記憶部5Bから転送されてきたデータを格納する。メモリチップ6Aには、例えば、RAMが用いられる。
 FPGA6Bは、データのRPS符号化処理等を行い、通信用のパケットを生成し、LANコネクタ6Cに出力する。
 LANコネクタ6Cは、FPGA6Bが出力したパケットを、ネットワークを介して、図示しない受信装置等に転送する。
 (FPGA6Bの一例)
 図4は、RPS符号化処理を行うFPGAの一例について説明する図である。
 なお、図4では、送信データのRPS符号化処理以外の制御及び機能を実行する部分については図示が省略されている。
 FPGA6Bは、PCIeインターフェース6B1、メモリコントローラ6B2、通信処理回路6B3、制御回路7、符号化回路8を有する。
 PCIeインターフェース6B1は、I/Oデバイス等によるPCIeエンドポイントであり、PCIeバス5Cを介して転送されてきたデータ等に対して、物理層、データリンク層における処理等を行う。
 メモリコントローラ6B2は、メモリチップ6Aに格納されたデータを、一定サイズのデータブロックに分割し、BRAM(Block RAM)m0~m15に転送するメモリインターフェースである。メモリコントローラ6B2は、例えば、図2に示したように、16KBのデータを、一定サイズ1KBの16個のブロックb0~b15に分割し、BRAMm0~m15に転送する。
 通信処理回路6B3は、符号化回路8が出力した符号化データ等に対して、ネットワーク層、データリンク層、物理層における処理等を行い、通信用のパケットを生成してLANコネクタ6Cに出力する。
 制御回路7は、符号化回路8が符号化データを生成する際の制御等を行う回路である。制御回路7の回路構成については、後述する。
 符号化回路8は、複数のデータブロック間のXOR演算を行うことで、符号化データを生成する回路である。図2の例では、符号化回路8は、ブロックb0~b15間のXOR演算を行い、符号化データd0~d15及び冗長符号化データe0~e13を生成する。
 (符号化回路8の一例)
 図5は、第2の実施の形態による符号化回路の一例を示す図である。
 符号化回路8は、BRAMm0~m15、レジスタ9a~9p、AND回路10a~10p、XOR回路11a~11o、レジスタ12a~12o、入力端子P3,P4,P5、出力端子P6を有する。
 入力端子P3には、BRAMm0~m15へのデータブロックの書き込みを可能にするWE(Write Enable)信号が、制御回路7から入力される。
 入力端子P4には、BRAMm0~m15がデータブロックを書き込む際の書き込みアドレス信号や、BRAMm0~m15がデータブロックを読み出してAND回路10a~10pに出力する際の読み出しアドレス信号が、制御回路7から入力される。
 入力端子P5には、AND回路10a~10pに、後述するRPS符号化行列の列ベクトルの各要素が、制御回路7から入力される。
 符号化回路8には、メモリチップ6Aからメモリコントローラ6B2を介して、一定サイズに分割された16個のデータブロックが供給される。
 BRAMm0~m15は、入力端子P3,P4を介して制御回路7から書き込みアドレス信号及びWE信号が入力されると、供給された16個のデータブロック、例えば、図2のブロックb0~b15を、それぞれ1ブロックずつ書き込み格納する。また、BRAMm0~m15は、入力端子P3を介して制御回路7から読み出しアドレス信号が入力されると、それぞれ、格納したデータブロックを読み出し、例えば、64ビットずつ、レジスタ9a~9pに出力する。
 レジスタ9a~9pは、BRAMm0~m15のそれぞれと、AND回路10a~10bのそれぞれとの間に接続されている。レジスタ9a~9pは、BRAMm0~m15が出力したデータブロックを保持し、保持したデータブロックのAND回路出力タイミングを調整する。例えば、レジスタ9a~9bは、図示しないクロック信号に同期したタイミングで、BRAMm0~m15から供給されたデータブロックを保持し、出力する。BRAMm0~m15から、AND回路10a~10pまでの距離にばらつきがある場合、AND回路10a~10pの入力側にこのようなレジスタ9a~9pを設けることで、AND回路10a~10pへの入力タイミングをそろえることができる。
 AND回路10a~10pは、選択回路として機能する。AND回路10a~10pは、それぞれ、BRAMm0~m15が出力したデータブロックと、入力端子P5から入力されたRPS符号化行列の各値(選択信号に相当する)とのAND演算を行い、その演算結果をXOR回路11a~11hに出力する。このとき、AND回路10a~10pは、それぞれ、入力端子P5を介して入力された列ベクトルの値が“1”となる行に対応したBRAMm0~m15に保持されているデータブロックを選択し出力する。RPS符号化行列の列ベクトルについては後述する。
 XOR回路11a~11oは、AND回路10a~10pが選択し出力したデータブロック間のXOR演算を行い、その演算結果を出力端子P6に出力する。
 XOR回路11aの2つの入力端子は、AND回路10a,10bの出力端子に接続されており、XOR回路11bの2つの入力端子は、AND回路10c,10dの出力端子に接続されている。また、XOR回路11cの2つの入力端子は、AND回路10e,10fの出力端子に接続されており、XOR回路11dの2つの入力端子は、AND回路10g,10hの出力端子に接続されている。また、XOR回路11eの2つの入力端子は、AND回路10i,10jの出力端子に接続されており、XOR回路11fの2つの入力端子は、AND回路10k,10lの出力端子に接続されている。また、XOR回路11gの2つの入力端子は、AND回路10m,10nの出力端子に接続されており、XOR回路11hの2つの入力端子は、AND回路10o,10pの出力端子に接続されている。
 XOR回路11iの2つの入力端子は、レジスタ12a,12bを介してXOR回路11a,11bの出力端子に接続されている。XOR回路11jの2つの入力端子は、レジスタ12c,12dを介してXOR回路11c,11dの出力端子に接続されている。また、XOR回路11kの2つの入力端子は、レジスタ12e,12fを介してXOR回路11e,11fの出力端子に接続されている。また、XOR回路11lの2つの入力端子は、レジスタ12g,12hを介してXOR回路11g,11hの出力端子に接続されている。XOR回路11mの2つの入力端子は、レジスタ12i,12jを介してXOR回路11i,11jの出力端子に接続されている。XOR回路11nの2つの入力端子は、レジスタ12k,12lを介してXOR回路11k,11lの出力端子に接続されている。XOR回路11oの2つの入力端子は、レジスタ12m,12nを介してXOR回路11m,11nの出力端子に接続されており、XOR回路11oの出力端子は、レジスタ12oを介して出力端子P6に接続されている。出力端子P6は、XOR回路11a~11oが行ったデータブロック間のXOR演算結果を、符号化データ(前述の符号化データと冗長符号化データを含む)として通信処理回路6B3(図4)に出力する。
 レジスタ12a~12pは、レジスタ9a~9pと同様の機能をもち、XOR回路11a~11o間のデータ入出力のタイミング調整を行う。
 図5の例では、上記のようにXOR回路11a~11oは、複数段に渡ってツリー状(トーナメント状)に接続されている。なお、XOR回路は2入力に限定されず、3入力以上としてもよく、例えば、1つのXOR回路でAND回路10a~10pから出力されるデータブロックのXOR演算を行ってもよい。
 (制御回路7の一例)
 図6は、制御回路の一例を示す図である。
 制御回路7と前述した符号化回路8との接続を説明するために、符号化回路8の一部についても図示されている。
 なお、図6では、符号化処理の制御を行う部分以外については、図示が省略されている。
 制御回路7は、メイン制御回路13を有している。メイン制御回路13は、加算器14、レジスタ15、符号化行列保持部16、比較回路17、レジスタ18、加算器19を有している。さらに、制御回路7は、レジスタ20,21を有する。
 加算器14は、例えば、1を保持するフリップフロップを有し、レジスタ15に保持されているアドレスをインクリメント(+1)する。
 レジスタ15は、BRAMm0~m15の書き込みアドレスや読み出しアドレスを保持し、また、保持した書き込みアドレスや読み出しアドレスを、入力端子P3を介して、BRAMm0~m15に出力する。レジスタ15は、図示しないクロック信号に同期して、保持しているアドレスに、加算器14により+1加算されたアドレスを保持する。
 符号化行列保持部16は、例えば、複数のレジスタを有し、RPS符号化行列を格納する。
 図7は、RPS符号化行列の一例を示す図である。
 図7に示すRPS符号化行列は、16行30列の行列である。
 RPS符号化処理による符号化データは、RPS符号化行列の列ベクトルごとに生成される。RPS符号化行列の列番が0~15の列ベクトルは、図2の例では、符号化データd0~d15を生成する際に用いられる列ベクトルである。また、RPS符号化行列の列番が16~29の列ベクトルは、図2の例では、冗長符号化データe16~e29を生成する際に用いられる列ベクトルである。
 列ベクトルにおける行は、BRAMm0~m15に対応している。つまり、列ベクトルにおけるある行の値が“1”のときには、その行に対応するBRAMに保持されているデータブロックがXOR演算に用いられる。
 図6の符号化行列保持部16は、RPS符号化行列の列ベクトルを、レジスタ18から出力される列番号に応じて、レジスタ21に出力する。初期状態の場合、レジスタ18に保持された値は0であるので、符号化行列保持部16は、列番号が0(j=0)の列ベクトルを、レジスタ21に出力する。
 比較回路17は、加算器14でのインクリメント回数に基づき、BRAMm0~m15に1データブロック分(例えば、1KB)の書き込みが終わったかを判定し、1データブロック分の書き込みが終わると、レジスタ18にセット信号を出力する。
 レジスタ18は、RPS符号化行列の列番号を保持する。また、レジスタ18は、比較回路17が出力するセット信号を受けると、図示しないクロック信号に同期して、保持している列番号に、加算器19により+1加算された列番号の値を保持する。
 加算器19は、例えば、1を保持するフリップフロップを有し、レジスタ18に保持されている列番号をインクリメントする。
 レジスタ20は、BRAMm0~m15への書き込みが可能になると、メイン制御回路13内の、図示しないWE信号生成部で生成されるWE信号を保持する。また、レジスタ20は、保持しているWE信号を、入力端子P4を介して、BRAMm0~15に出力する。
 レジスタ21は、保持しているRPS符号化行列の列ベクトルの各値を、入力端子P5を介して、AND回路10a~10pに出力する。例えば、列ベクトルの1行目の値はAND回路10aへ、2行目の値はAND回路10bへと、順次、入力される。
 なお、本実施の形態による符号化回路8は、FPGA6B内に含まれるものとしたが、ASIC(Application Specific Integrated Circuit)等で実現するようにしてもよい。
 (RPS符号化処理の一例)
 以下、符号化回路8によるRPS符号化処理の一例を説明する。
 図8は、RPS符号化処理の一例の流れを示すフローチャートである。
 まず、BRAMm0~m15への、データブロックの書き込みが行われる(ステップS1)。ステップS1の処理では、制御回路7がWE信号をアサートし、BRAMm0~15に書き込みアドレスを供給する。そして、BRAMm0~m15は、メモリチップ6Aからメモリコントローラ6B2を介して一定サイズに分割された16個のデータブロックを書き込む。
 また、メイン制御回路13は、列番号jを0に設定する(ステップS2)。ステップS2の処理では、メイン制御回路13のレジスタ18の初期値が0に設定される。
 次に、制御回路7は、RPS符号化行列の列番号jの列ベクトルの各値をAND回路10a~10pに入力する(ステップS3)。ステップS3の処理では、図6に示したようなレジスタ21が、入力端子P5を介して、保持しているRPS符号化の列番号jの列ベクトルの各値を、AND回路10a~10pに入力する。
 例えば、列番号jの列ベクトルの1行目の値はAND回路10aへ、2行目の値はAND回路10bへと、順次、入力される。このとき、AND回路10a~10pは、列番号jの列ベクトルの各値と、BRAMm0~15のデータブロックとのAND演算を行い、その演算結果をXOR回路11a~11hに出力する。これにより、AND回路10a~10pは、列ベクトルの“1”となる行の値に応じて、BRAMm0~15に保持されているデータブロックを選択しXOR回路11a~11hに出力する。例えば、図7に示すRPS符号化行列の列番号が0の列ベクトル(j=0)がAND回路10a~10pに入力された場合、1行目の値のみが“1”であるため、1行目の値が入力されるAND回路10aは、BRAMm0のデータブロックを選択し出力する。
 その後、符号化回路8は、XOR演算を行う(ステップS4)。ステップS4の処理では、XOR回路11a~11hにより、BRAMm0~m15に保持されているデータブロックを用いたXOR演算が行われる。
 列番号jが0~15までの各列ベクトルは、ある行の値が1であり、他の行の値は0である。このような列ベクトルが入力端子P5に入力されたときには、上記のような接続関係をもつXOR回路11a~11oの最後段のXOR回路11oからは、値が1の行に対応するBRAMに保持されているデータブロックそのものが出力される。
 列番号が16~29までの各列ベクトルは、複数の行の値が1である。このような列ベクトルが入力端子P5に入力されたとき、上記のような接続関係をもつXOR回路11a~11oの最後段のXOR回路11oからは、AND回路10a~10pの何れか2以上から出力される複数のデータブロックのXOR演算結果が出力される。
 次に、メイン制御回路13は、列番号jが最大値である29に達したか否かを判定し(ステップS5)、列番号jが29より小さい間は、加算器19により列番号jに+1を加算させる(ステップS6)。ステップS6の後は、ステップS3からの処理が繰り返される。
 また、列番号jが29に達した場合、1データブロックに関するRPS符号化処理は完了する。符号化回路8が、次のデータブロックに関するRPS符号化処理を行う際には、ステップS1からの処理が繰り返される。
 その後、符号化回路8から出力される符号化データ及び冗長符号化データは、通信処理回路6B3の処理等を経て、パケットとして転送される。また、このとき、符号化に用いられた列ベクトルは、そのパケットヘッダに追加され、符号化データ及び冗長符号化データと共に転送される。
 以上のように、本実施の形態による符号化回路8は、一旦複数のBRAMm0~m15で各データブロックを保持し、列ベクトルの値に基づきAND回路10a~10pで演算に用いるデータブロックを選びXOR回路11a~11oでXOR演算する。このような並列化処理により、多くのXOR演算を行うRPS符号化処理等において、演算処理が効率化され、高速な演算(符号化処理)が可能になる。
 なお、符号化回路8において、BRAMm0~m15を64ビット×512ワードで使用する場合、BRAMm0~m15は、1KBのデータブロックであれば、それぞれ、4個分のデータブロックを保持することが可能となる。これにより、BRAMm0~m15は、4個分のデータブロックを連続してレジスタ9a~9pへ入力することができるので、符号化処理のスループットがより向上する。さらには、BRAMm0~m15を、書き込みと読み出しが同時実行可能なデュアルポートメモリにすることで、BRAMへ新たなデータブロックを書き込む時間を隠ぺいすることが可能になるため、よりスループットを向上できる。
 次に、復号処理の一例を説明する。
 (復号処理の一例)
 図9は、RPS符号化処理で得られた符号化データに対する復号処理の一例を説明する図である。
 図9では、前述した符号化回路8から、ネットワークを介して、復号回路(図10参照)に送られてくるパケットに含まれる符号化データd0~d15及び冗長符号化データe0~e13を復号する様子が示されている。
 復号回路(図10参照)では、受信したパケットのヘッダが参照され、ヘッダから符号化に用いたデータブロックの組み合わせ情報(RPS符号化行列の列ベクトル)が抽出される。
 符号化データd0,d1,d3~d15は、データブロックであるブロックb0,b1,b3~b15に相当するので、そのまま出力される。
 図9の例では、符号化データd2を含むパケットが消失している例が示されている。復号回路は、受信できた符号化データ及び冗長符号化データと、抽出した組み合わせ情報から、消失したパケットのブロックb2を生成(復号)する。例えば、ブロックb2は、図9に示すように、符号化データd0,d1,d3,…,d15、冗長符号化データe0のXOR演算により生成される。
 このように、復号回路でも、XOR演算が行われ、回路構成は符号化回路8と同様なものとなる。
 次に、復号処理を行う際に用いる復号回路について、図10を用いて説明する。なお、復号回路は、例えば、図3に示したFPGA6B内に符号化回路8と共に含まれていてもよい。復号回路を制御する制御回路については、図6に示したような制御回路7と同様の回路で実現できる。
 (復号回路の一例)
 図10は、第2の実施の形態による復号回路の一例を示す図である。
 復号回路8aは、BRAMn0,n1,n2,n3,…,n26,n27,n28,n29、レジスタra0,ra1,ra2,ra3,…,ra26,ra27,ra28,ra29を有している。さらに復号回路8aは、AND回路a0,a1,a2,a3,…,a26,a27,a28,a29とXOR回路部22、入力端子P13~P15、出力端子P16を有する。
 入力端子P13には、BRAMn0~n29の符号化データ等の書き込みを可能にするWE信号が入力される。
 入力端子P14には、BRAMn0~n29が符号化データ等を書き込む際の書き込みアドレスや、BRAMn0~n29が符号化データ等を読み出してAND回路a0~a29に出力する際の読み出しアドレスが入力される。
 入力端子P15には、AND回路a0~a29に供給される、後述する復号ベクトルの各値が入力される。
 BRAMn0~n29は、入力端子P13,P14を介して、書き込みアドレス、WE信号が入力されると、受信された符号化データ等を、それぞれ、1ブロックずつ書き込み保持する。また、BRAMn0~n29は、入力端子P13を介して読み出しアドレスが入力されると、それぞれ、保持している符号化データ等を、例えば、64ビットずつ、レジスタra0~ra29に出力する。
 BRAMn0~n29は、符号化回路8が出力する30個のデータブロック(符号化データ)、すなわち符号化データd0~d15と冗長符号化データe0~e13に対応して、30個ある。レジスタra0~ra29、AND回路a0~a29も同様である。
 レジスタra0~ra29は、図5に示したレジスタ9a~9pと同様の機能を有する。
 AND回路a0~a29は、図5に示したAND回路10a~10pと同様に選択回路として機能する。AND回路a0~a29は、それぞれ、BRAMn0~n29が出力した符号化データまたは冗長符号化データと、入力端子P5から入力された復号ベクトル(選択信号として機能する)の各値とのAND演算を行う。そして、AND回路a0~a29は、その演算結果をXOR回路部22に出力する。このとき、AND回路a0~a29は、それぞれ、入力端子P15を介して入力された復号ベクトル(列ベクトル)が“1”となる行に応じて、BRAMn0~n29の符号化データまたは冗長符号化データを選択し出力する。
 XOR回路部22は、図示を省略しているが、例えば、図5に示した符号化回路8と同様に、複数のXOR回路とレジスタがツリー状に接続されている回路となっている。
 XOR回路部22は、AND回路a0~a29により選択され入力された符号化データまたは冗長符号化データのXOR演算を行い、元のデータブロックを復号する。
 出力端子P16は、復号された元のデータブロックを出力する。
 以下、復号回路8aの動作を説明する前に、復号処理に用いる復号ベクトルの生成処理を説明する。
 (復号ベクトルの生成処理例)
 復号ベクトルは、例えば、復号回路8aを制御する図示しない制御回路にて生成される。
 復号ベクトルの生成にあたって、まず、以下のような受信符号化行列が生成される。
 図11は、受信符号化行列の生成例を説明する図である。
 また、図12は、生成された受信符号化行列の一例を示す図である。
 RPS符号化処理で符号化されたデータ(符号化データまたは冗長符号化データ)を含むパケットのヘッダには、RPS符号化行列の列ベクトルが含まれている。
 例えば、受信側の制御回路は、上記のようなパケットを受信するたびに、ヘッダから上記列ベクトルを抽出し、列番号=0から受信順に並べていくことで、図12に示すような受信符号化行列を生成する。
 図12に示す受信符号化行列(16行16列)は、16個のパケットを受信した時点で生成されたものである。以下では、受信符号化行列の列ベクトルを、例えば、列番号cを用いて列ベクトルD(c)と表すものとし、列ベクトルD(c)のu行目の値を、要素[u]と表すものとする。
 なお、図12に示されている「基底ベクトル」と、「基底ベクトル候補」については後述する。
 上記のような受信符号化行列から、復号ベクトルが生成される。
 復号処理は、例えば、1次の連立方程式の解法として知られているガウスの消去法に似ている。例えば、1次の連立方程式における、解の係数である行列がA、解である列ベクトルがX、定数である列ベクトルがCであるとしたとき、1次の連立方程式は、AX=Cと表せる。そして、AX=Cに対し、行列Aが単位行列Eとなるように、ガウスの消去法が適用され、EX=C1、すなわち、X=C1が求められる。
 本実施の形態による復号処理では、受信符号化行列は行列A、元のデータブロックは列ベクトルX、符号化データまたは冗長符号化データは列ベクトルCで表される。
 ここで、復号回路8aのAND回路a0~a29に入力される選択信号として機能する復号ベクトルは、受信符号化行列に基づき、例えば、復号回路8aを制御する図示しない制御回路において、例えば、以下のように生成される。
 図13は、復号ベクトルの生成処理の一例の流れを示すフローチャートである。
 まず、複数の復号ベクトルの値が代入される行列opsの初期化が行われる(ステップS10)。
 行列opsの初期化は、行列opsの対角要素が1、その他の要素が0となる単位行列を算出することにより行われる。また、行列opsは、受信符号化行列の列数と、同数の行数及び列数をもつ。
 次に、受信符号化行列の列番号cが0に設定される(ステップS11)。列番号cは、後述のステップS13の処理で、基底ベクトルまたは基底ベクトル候補の列番号が代入される変数である。
 その後、受信符号化行列に含まれる列ベクトルについて、基底ベクトル、基底ベクトル候補の決定が行われる(ステップS12)。
 基底ベクトルは、1となる要素を1つだけ有し、また、互いに直交するベクトルである。また、以下において、要素[u](行番号がuの値)が1となる基底ベクトルを、要素[u]の基底ベクトルという。図12に示した受信符号化行列の例において、列番号cの列ベクトルをD[c]とすると、列番号cが0~12の列ベクトルD(0)~D(12)が、それぞれ、要素[3]~[12]の基底ベクトルと決定される。
 基底ベクトル候補は、受信符号化行列に要素[u]の基底ベクトルが存在しない場合、要素[u]が1となる列ベクトルのことである。例えば、図12に示した受信符号化行列では、要素[0]~[2]の基底ベクトルが存在しない。そのため、要素[0]が1となる列ベクトルD(13)が要素[0]の基底ベクトル候補、要素[2]が1となる列ベクトルD(14)が要素[2]の基底ベクトル候補と決定される。また、要素[1]が1となる列ベクトルD(15)が要素[1]の基底ベクトル候補と決定される。
 次に、受信符号化行列の列ベクトルを、基底ベクトルへと変換していく処理が行われる(ステップS13)。
 ステップS13の処理では、まず、受信符号化行列において、基底ベクトル(または基底ベクトル候補)の1となる要素と同じ行番号で要素が1となる列ベクトルが検出される。そして、検出された列ベクトルの当該要素を、当該要素と基底ベクトルの当該要素とのXOR演算結果で更新する。1と1のXOR演算結果は0であるため、検出された列ベクトルの当該要素は0となる。このような処理が受信符号化行列の各基底ベクトル(または基底ベクトル候補)で繰り返されることにより、受信符号化行列の基底ベクトル候補が、基底ベクトルに変換される。
 図14は、更新された受信符号化行列の一例を示す図である。
 ステップS13の処理によって、図12に示した基底ベクトル候補であった列ベクトルD(13)~(15)が、図14に示されているように要素[0]~[1]の基底ベクトルとなっている。
 また、上記のステップS13の処理では、受信符号化行列の基底ベクトル候補を基底ベクトルに変換させていく際のXOR演算処理結果が、行列opsの各要素に代入されていき、例えば、以下のような行列opsが生成される。
 図15は、行列opsの一例を示す図である。
 行列opsの各要素には、受信符号化行列の基底ベクトル候補を基底ベクトルへと変換していく際の、XOR演算結果が代入されている。以下、行列opsの列番号iの列ベクトルを列ベクトルop(i)と表記する。
 図12に示した受信符号化行列では、列ベクトルD(13)~D(15)を基底ベクトルに変換するために、上記のようなXOR演算による更新処理が行われる。そのXOR演算結果により、行列opsの列ベクトルop(13)~(15)は、行列の対角要素以外で、1となる要素を有している。
 この行列opsの列ベクトルが復号ベクトルとして用いられる。
 図16は、行列opsの列ベクトル(復号ベクトル)と、その列ベクトルにより復号されるデータブロックとの関係の一例を示す図である。
 なお、図16では、図15に示した行列opsの列ベクトルop(0)~op(15)のそれぞれが、便宜的に、32ビットの2進数で表現されている。
 列ベクトルop(0)~op(15)の右端の要素が、ビット0であり、列ベクトルop(0)~op(15)の1行目の要素に対応している。
 上記のように、行列opsの列ベクトルop(0)~op(15)の値は、対応する列番号の受信符号化行列の列ベクトルを基底ベクトルへと変更していく際のXOR演算結果の値となっている。
 このような行列opsの列ベクトルを復号ベクトルとして用いることにより、復号回路8aでは、符号化データまたは冗長符号化データ間で、受信符号化行列を基底ベクトルへと変換していく際のXOR演算と同様の処理が行われる。
 行列opsの列ベクトルop(0)~op(15)により復号できるデータブロックは、その列ベクトルop(0)~op(15)と同じ列番号の更新後の受信符号化行列の基底ベクトルの1となる要素の行番号に対応する。
 また、ここで、受信符号化行列は、符号化行列(図7)の列ベクトルから生成されているので、受信符号化行列の1~16行目の各要素は、符号化行列と同様に、データブロックが格納されたBRAMm0~m15に対応する。すなわち、行列opsの列ベクトルにより復号されるデータブロックは、その列ベクトルと同じ列番号の、更新後の受信符号化行列の基底ベクトルの1となる要素の行番号に対応したBRAMに保持していたデータブロックとなる。
 例えば、列ベクトルop(2)を用いてデータブロックを復号する場合、更新後の受信符号化行列(図14)において、行列opsの列ベクトルop(2)と同じ列番号となる列ベクトルは、列ベクトルD(2)である。また、列ベクトルD(2)は、要素[5]が1の基底ベクトルであるため、受信符号化行列の行番号5に対応したBRAMm5に格納されたブロックb5が復号される。
 列ベクトルop(15)を用いてデータブロックを復号する場合、更新後の受信符号化行列(図14)において、行列opsの列ベクトルop(15)と同じ列番号となる列ベクトルは、列ベクトルD(15)である。また、列ベクトルD(15)は、要素[2]が1の基底ベクトルであるため、受信符号化行列の行番号2に対応したBRAMm2に格納されたブロックb2が復号される。
 なお、パケット通信において、伝送経路で、消失した符号化データが少ない場合には、予め、復号ベクトルを計算しておき、復号回路8aを制御する図示しない制御回路内の記憶部に格納しておくこともできる。
 (復号回路8aの動作)
 図10に示したような復号回路8aは、複数のBRAMn0~n29で各データブロック(符号化データ(冗長符号化データも含む))を保持し、上記のような復号ベクトルの値に基づきAND回路a0~a29で演算に用いるデータブロックを選ぶ。そして、選ばれたデータブロック間でのXOR演算が、XOR回路部22で行われる。このような並列化処理により、多くのXOR演算を行う復号処理において、演算処理が効率化され、高速な演算が可能になる。
 なお、復号回路8aにより、元のデータブロックがすべて再現(復号)された場合、復号回路8aを含む受信側の装置は、送信側の装置に対して復号完了信号を送るようにしてもよい。例えば、パケットの欠落がない場合には、符号化データd0~d15を含む複数のパケットの受信が完了すると、受信側の装置は、復号完了信号を送信側の装置に送る。送信側の装置では、復号完了信号を受信した時点で、図8に示したような符号化回路8での符号化処理を停止させる。これにより、図7に示したようなRPS符号化行列のすべての列ベクトルに関して、XOR演算を行わなくてもよくなる。
 (変形例)
 図17,18は、第2の実施の形態による符号化回路の変形例を示す図である。なお、図17,18は、図5に示した符号化回路8の一部に対応している。符号化回路8と同様の要素については、図5と同一の符号を付し、その説明を省略する。
 図17において、XOR回路11aの出力側に、BRAM30が接続されている。また、レジスタ12aとBRAM30の出力側に、セレクタ31が接続されている。
 BRAM30は、XOR回路11aのXOR演算結果、すなわち、BRAMm0~m1のデータブロック間のXOR演算結果を保持する。また、セレクタ31は、入力される選択信号に基づき、レジスタ12aと、BRAM30の何れかを選択し出力する。選択信号は、例えば、図4に示した制御回路7から供給される。
 図18において、XOR回路11iの出力側に、BRAM32が接続されている。また、レジスタ12iとBRAM32の出力側に、セレクタ33が接続されている。
 BRAM32は、XOR回路11iのXOR演算結果、すなわち、BRAMm0~m3のデータブロック間のXOR演算結果を保持する。また、セレクタ33は、入力される選択信号に基づき、レジスタ12iと、BRAM32の何れかを選択し出力する。選択信号は、例えば、図4に示した制御回路7から供給される。
 図17,18では、XOR回路11a,11iの出力側にBRAM30,32やセレクタ31,33を設ける例について説明したが、同様にして、他のXOR回路11b~11h,11j~nの出力側に設けることもできる。
 図19は、第2の実施の形態による符号化回路の変形例を示す図である。なお、図19に示す符号化回路8bは、図5に示した符号化回路8の一部にBRAM及びセレクタを設けたものである。また、符号化回路8と同様の要素については、図5に示した要素と同一の符号を付し、その説明を省略する。
 図19の符号化回路8bのXOR回路11aの出力側には、BRAM30が接続されている。また、レジスタ12aとBRAM30の出力側に、セレクタ31が接続されている。
 BRAM30は、XOR回路11aのXOR演算結果を保持し、また、セレクタ31は、入力される信号に基づき、レジスタ12aと、BRAM30の何れかを選択し出力する。これにより、BRAMm0とBRAMm1に保持されているデータブロック間のXOR演算結果が、BRAM30に保持されるため、再度、そのXOR演算結果を利用することができる。
 図19に示す符号化回路8bを用いた符号化処理の流れを以下に説明する。
 図20は、符号化処理の一例の流れを説明する図である。
 例えば、列番号が0の列ベクトルが入力端子P5を介して符号化回路8bに入力されたとき、BRAMm0とBRAMm1に保持されているデータブロック間のXOR演算結果がBRAM30に保持される。図20に示すRPS符号化行列において、列番号が0の列ベクトルによるBRAMm0とBRAMm1に保持されているデータブロック間のXOR演算と同様の演算が、列番号が28の列ベクトルにおいても行われる。
 そのため、列番号が0の列ベクトルにおいてBRAM30に保持されたXOR演算結果を、列番号が28の列ベクトルによる符号化データ生成の際にも利用することができる。このとき、列番号が27の列ベクトル以降において、BRAMm0~m2のデータを用いることがないので、列番号が27の列ベクトル以降において、BRAMm0~m2に、次のデータブロックを書き込むことができる。これにより、符号化処理のスループットを向上させることができる。
 なお、上記のような変形は、図10に示した復号回路8aにも同様に適用できる。
 以上、XOR演算を行う演算回路の例として、符号化回路、復号回路を説明してきたが、これらに限定されるものではない。例えば、RAID(Redundant Arrays of Inexpensive Disks)6等のように、複数回のXOR演算を行う(パリティデータの算出のため)ものにも適用可能である。
 上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成及び応用例に限定されるものではなく、対応するすべての変形例及び均等物は、添付の請求項及びその均等物による本発明の範囲とみなされる。
 1 演算回路
 2a~2p 選択回路
 3a~3o XOR回路
 M0~M15 メモリ
 P1 入力端子
 P2 出力端子

Claims (6)

  1.  排他的論理和演算を行う単位となるデータブロックを保持する複数のメモリと、
     選択信号を受け、前記複数のメモリから読み出される複数の前記データブロックのうち、排他的論理和演算に使用する2以上のデータブロックを前記選択信号に基づき選択する複数の選択回路と、
     前記複数の選択回路で選択された前記2以上のデータブロックに基づく排他的論理和演算を行う1または複数の排他的論理和演算回路と、
     を有することを特徴とする演算回路。
  2. 前記複数の選択回路のそれぞれは論理積演算回路であり、前記論理積演算回路の、第1の入力端子には、前記複数のメモリに保持されている複数の前記データブロックの何れかが入力され、第2の入力端子には、前記選択信号が入力され、前記論理積演算回路は、前記選択信号の値に基づいて、前記第1の入力端子に入力されるデータブロックを出力するか否かを選択する、ことを特徴とする請求項1に記載の演算回路。
  3.  前記複数のメモリのそれぞれと、前記複数の選択回路のそれぞれとの間には、前記データブロックを保持し、保持した前記データブロックの出力タイミングを調整するレジスタが接続されていることを特徴とする請求項1または2に記載の演算回路。
  4.  前記複数の排他的論理和演算回路は、複数段に渡って接続されており、前記複数の排他的論理和演算回路の一部の出力端子には、排他論理和演算の結果を格納するメモリが接続されていること、を特徴とする請求項1乃至3の何れか一項に記載の演算回路。
  5.  排他的論理和演算を行う単位となるデータブロックを保持する複数のメモリと、
     選択信号を受け、前記複数のメモリから読み出される複数の前記データブロックのうち、排他的論理和演算に使用する2以上のデータブロックを前記選択信号に基づき選択する複数の選択回路と、
     前記複数の選択回路で選択された前記2以上のデータブロックに基づく排他的論理和演算を行い、符号化データを生成する1または複数の排他的論理和演算回路と、
     を有することを特徴とする符号化回路。
  6.  排他的論理和演算を行う単位となる符号化データであるデータブロックを保持する複数のメモリと、
     選択信号を受け、前記複数のメモリから読み出される複数の前記データブロックのうち、排他的論理和演算に使用する2以上のデータブロックを前記選択信号に基づき選択する複数の選択回路と、
     前記複数の選択回路で選択された前記2以上のデータブロックに基づく排他的論理和演算を行い、復号データを生成する1または複数の排他的論理和演算回路と、
     を有することを特徴とする復号回路。
PCT/JP2014/063659 2014-05-23 2014-05-23 演算回路、符号化回路及び復号回路 WO2015177917A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2016520885A JPWO2015177917A1 (ja) 2014-05-23 2014-05-23 演算回路、符号化回路及び復号回路
PCT/JP2014/063659 WO2015177917A1 (ja) 2014-05-23 2014-05-23 演算回路、符号化回路及び復号回路
CN201480079084.0A CN106416085A (zh) 2014-05-23 2014-05-23 运算电路、编码电路以及解码电路
EP14892478.0A EP3148092A4 (en) 2014-05-23 2014-05-23 Computation circuit, encoding circuit, and decoding circuit
US15/341,249 US20170077951A1 (en) 2014-05-23 2016-11-02 Computation circuit, encoding circuit, and decoding circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/063659 WO2015177917A1 (ja) 2014-05-23 2014-05-23 演算回路、符号化回路及び復号回路

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/341,249 Continuation US20170077951A1 (en) 2014-05-23 2016-11-02 Computation circuit, encoding circuit, and decoding circuit

Publications (1)

Publication Number Publication Date
WO2015177917A1 true WO2015177917A1 (ja) 2015-11-26

Family

ID=54553610

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/063659 WO2015177917A1 (ja) 2014-05-23 2014-05-23 演算回路、符号化回路及び復号回路

Country Status (5)

Country Link
US (1) US20170077951A1 (ja)
EP (1) EP3148092A4 (ja)
JP (1) JPWO2015177917A1 (ja)
CN (1) CN106416085A (ja)
WO (1) WO2015177917A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108964670B (zh) * 2018-07-25 2020-07-24 北京翼鸥教育科技有限公司 一种基本编解码单元以及编解码器
CN109086537B (zh) * 2018-08-13 2023-05-05 吉林大学 基于fpga的粒子群算法加速方法
EP4173143A1 (en) 2020-06-30 2023-05-03 Ciena Corporation Forward error correction coding using a tree structure

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001274691A (ja) * 2000-03-28 2001-10-05 Matsushita Electric Ind Co Ltd 排他的論理和演算装置
JP3225060B2 (ja) * 1991-07-19 2001-11-05 アンリツ株式会社 符号誤り検出装置
JP4324195B2 (ja) * 2004-04-07 2009-09-02 パナソニック株式会社 パスメモリ回路

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2458179A1 (fr) * 1979-05-31 1980-12-26 Thomson Csf Dispositif de decodage binaire et systemes de transmission comportant un tel dispositif
US5237615A (en) * 1982-05-20 1993-08-17 The United States Of America As Represented By The National Security Agency Multiple independent binary bit stream generator
JPH08202505A (ja) * 1995-01-30 1996-08-09 Fuji Xerox Co Ltd アレイ型記憶装置
US5878061A (en) * 1996-03-14 1999-03-02 Intel Corporation Providing serial data clock signal transitions with parity bits
US5825808A (en) * 1996-04-04 1998-10-20 General Electric Company Random parity coding system
JPH10215187A (ja) * 1997-01-29 1998-08-11 Nec Corp 誤り検出符号化復号装置および方法
US7058876B1 (en) * 2002-02-21 2006-06-06 Ciena Corporation Method and apparatus for use in a decoder of a forward error correction (FEC) system for locating bit errors in a error locator polynomial
US20060195774A1 (en) * 2005-02-17 2006-08-31 Stephen Bowyer Error correction circuit and method
US7373583B2 (en) * 2005-05-19 2008-05-13 Infineon Technologies North America Corp. ECC flag for testing on-chip error correction circuit
US7596743B2 (en) * 2005-09-28 2009-09-29 Ati Technologies Inc. Method and apparatus for error management
US8271850B2 (en) * 2005-12-29 2012-09-18 Intel Corporation Fast low-density parity-check code encoder
JP4696008B2 (ja) * 2006-03-20 2011-06-08 富士通株式会社 Ip送信装置およびip送信方法
US8347169B1 (en) * 2010-03-01 2013-01-01 Applied Micro Circuits Corporation System and method for encoding using common partial parity products
US9270299B2 (en) * 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
CN106063134A (zh) * 2014-03-11 2016-10-26 富士通株式会社 设计辅助方法、设计辅助程序、设计辅助装置、以及记录介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3225060B2 (ja) * 1991-07-19 2001-11-05 アンリツ株式会社 符号誤り検出装置
JP2001274691A (ja) * 2000-03-28 2001-10-05 Matsushita Electric Ind Co Ltd 排他的論理和演算装置
JP4324195B2 (ja) * 2004-04-07 2009-09-02 パナソニック株式会社 パスメモリ回路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3148092A4 *

Also Published As

Publication number Publication date
EP3148092A4 (en) 2017-05-31
CN106416085A (zh) 2017-02-15
US20170077951A1 (en) 2017-03-16
EP3148092A1 (en) 2017-03-29
JPWO2015177917A1 (ja) 2017-04-20

Similar Documents

Publication Publication Date Title
CN109379086B (zh) 低复杂度的码率兼容的5g ldpc编码方法和编码器
CN102096609B (zh) 可编程循环冗余校验(crc)计算的指令集架构
US20110099411A1 (en) USB Device and Correction Method Thereof
JP2009528559A (ja) Sms4暗号アルゴリズムを実現する暗号化および復号化処理方法とそのシステム
WO2015177917A1 (ja) 演算回路、符号化回路及び復号回路
CN115664640A (zh) Sha-3算法的硬件实现方法、系统、存储介质及设备
US20080301537A1 (en) Packet transmission device and packet transmission method
US8683291B2 (en) High throughput frame check sequence module architecture
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
CN111008407A (zh) 用于执行虚拟加密操作的加密电路
CN110708160B (zh) 基于sm2算法标量乘法编码的抗侧信道攻击方法及系统
JP4574994B2 (ja) メモリ外付けマイコン
CN105187162B (zh) 一种多粒度并行解速率匹配方法和装置
JP2005086683A (ja) 誤り復号回路、データバス制御方法、及びデータバスシステム
CN114003525B (zh) 数据传输的方法、模块、装置、设备及存储介质
CN111130562A (zh) Crc并行计算方法及系统
CN113204372B (zh) 存储受限型哈希算法的加速装置及方法
US20160371414A1 (en) Circuit design support method, circuit design support apparatus, and recording medium
TWI804439B (zh) 資料加密的錯誤偵測裝置及方法
US20220103345A1 (en) Methods and apparatus to hash data
CN101093627B (zh) 密码编译码装置
KR101516573B1 (ko) 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법
CN117762609A (zh) 基于Blake2b算法的数据处理方法、处理器、装置、设备及介质
KR101775597B1 (ko) 고속 모듈로 연산 장치
JP6351530B2 (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: 14892478

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016520885

Country of ref document: JP

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2014892478

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014892478

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE