WO2022123722A1 - 命令処理方法及び命令処理回路 - Google Patents

命令処理方法及び命令処理回路 Download PDF

Info

Publication number
WO2022123722A1
WO2022123722A1 PCT/JP2020/046028 JP2020046028W WO2022123722A1 WO 2022123722 A1 WO2022123722 A1 WO 2022123722A1 JP 2020046028 W JP2020046028 W JP 2020046028W WO 2022123722 A1 WO2022123722 A1 WO 2022123722A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
identifier
error
error detection
read
Prior art date
Application number
PCT/JP2020/046028
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 JP2022567968A priority Critical patent/JP7485086B2/ja
Priority to PCT/JP2020/046028 priority patent/WO2022123722A1/ja
Publication of WO2022123722A1 publication Critical patent/WO2022123722A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Definitions

  • the present invention relates to an instruction processing method and an instruction processing circuit for processing an instruction executed by a distributed computer or the like.
  • Non-Patent Document 1 discloses a TMR (Triple Modular Redundancy) method as a countermeasure against soft errors. This is a method of avoiding the influence of bit inversion due to a soft error by outputting the value determined by majority voting by making the circuit redundant in triple. Further, Patent Document 1 discloses a method of performing an error check and recovering an erroneous bit by assigning a redundant code to a cell exchanged between devices instead of such a redundant circuit. There is.
  • TMR Multiple Modular Redundancy
  • Non-Patent Document 1 and Patent Document 1 do not disclose that the object to be processed is an instruction, and it is easy to apply the techniques disclosed by Non-Patent Document 1 and Patent Document 1 to deal with soft errors of instructions. Or, although it is not self-evident, even if the technologies of Non-Patent Document 1 and Patent Document 1 are used to deal with the soft error of the instruction, the former TMR method requires three same circuits and the circuit scale becomes large. .. In the latter solution, the disposal rate can be reduced, but a processing circuit that corrects errors in all memories that require buffering and a memory dedicated to one cell header or information bit are required, and the circuit scale becomes large. It ends up.
  • An object of the present invention is to effectively suppress adverse effects due to soft errors on a small circuit scale.
  • the instruction processing method is an instruction processing method executed by an instruction processing circuit that reads an instruction stored in a memory from the memory based on a read instruction.
  • the step is to store the instruction and the identifier that identifies the instruction in the memory, and the identifier is stored in the area of the memory whose read order is earlier than that of the instruction.
  • the said which includes a step including an error detection and correction code for detecting and correcting an error of the identifier, and reading the identifier and a part of the instruction, or only the identifier, from the memory based on the read instruction.
  • the corrected identifier is output together with the command, and the above is described. It is provided with a step of discarding the command without outputting the command when there is an error that cannot be corrected as a result of error detection.
  • the instruction processing circuit is an instruction processing circuit that reads the instructions stored in the memory from the memory based on the read instruction, and is the instruction processing circuit.
  • the first circuit that stores the identifier that identifies the instruction in the memory, stores the identifier in the area of the memory whose read order is earlier than the instruction, and the identifier is an error of the identifier.
  • the identifier and a part of the instruction, or only the identifier, are read and read from the first circuit and the memory based on the read instruction, including an error detection and correction code for detecting and correcting the above.
  • a second circuit that detects an error in the identifier based on the included error detection and correction code, and if there is an error that can be corrected in the error detection result, the corrected identifier is output together with the instruction, and the above is described.
  • a third circuit is provided, which discards the command without outputting the command when there is an error that cannot be corrected as a result of error detection.
  • FIG. 1 is a block diagram of an instruction processing circuit according to the first embodiment of the present invention.
  • FIG. 2 is a flowchart of buffer memory processing executed by the instruction processing circuit of FIG.
  • FIG. 3 is a block diagram of an instruction processing circuit according to a second embodiment of the present invention.
  • FIG. 4 is a diagram showing a configuration example of an identifier generated by the instruction processing circuit of FIG.
  • FIG. 5 is a diagram showing a configuration example of a table to be referred to when acquiring destination information in the instruction processing circuit of FIG.
  • FIG. 6 is a diagram showing how instructions are sequentially stored in the buffer memory of FIG.
  • FIG. 7 is a diagram showing how an instruction is read from the buffer memory of FIG.
  • FIG. 8 is a diagram showing how an instruction is read from the instruction processing circuit according to the second embodiment of the present invention.
  • FIG. 9 is a configuration diagram showing a configuration according to a modified example of the present invention.
  • FIG. 1 shows the configuration of the instruction processing circuit 10 according to the first embodiment of the present invention.
  • the instruction processing circuit 10 is configured as, for example, a circuit that transfers instructions constituting software components that are distributed processed by a plurality of distributed computers.
  • the instruction processing circuit 10 is composed of an LSI such as FPGA. It is assumed that the instruction handled here is a RISC operation instruction.
  • the instruction processing circuit 10 includes a buffer memory 11, an input instruction processing unit 12, an identifier generation unit 13, a buffer memory control unit 14, and an error detection and correction unit 15.
  • the buffer memory 11 buffers the instructions input to the instruction processing circuit 10 until there is an output request for an instruction described later.
  • the buffer memory 11 is configured to be able to sequentially store a plurality of instructions in the order of reception.
  • Each of the above parts 12 to 15 is configured to execute the buffer memory processing shown in FIG. 2 in cooperation with each other.
  • the instruction input to the instruction processing circuit 10 may be one in which it is confirmed by error detection processing that there is no error in the previous stage of the instruction processing circuit 10.
  • Step S101 is an important step for surely associating the instruction with the attributes (length and destination) of the instruction in order to identify the instruction and perform the processing after step S101 without error.
  • the input instruction processing unit 12 acquires the length information of the instruction by, for example, counting the number of bits of the instruction.
  • the input command processing unit 12 may acquire the instruction length information by acquiring the length information stored in the instruction header.
  • the instruction destination information may be a number or the like that specifies the distributed computer (destination) to which the instruction is executed. It is assumed that the destination information is pre-allocated according to the type information such as the operation code indicating the type of the instruction embedded in the instruction.
  • the input command processing unit 12 acquires the destination information corresponding to the instruction type information by referring to a table or the like prepared in advance in the storage unit.
  • the destination information may be stored in the header of the instruction.
  • the input command processing unit 12 calculates an error detection code based on the entire instruction so that the error can be detected when the error is superimposed on the instruction in the subsequent step, and the calculated error detection code is the end of the instruction.
  • the error detection code method is, for example, CRC8 (Cyclic Redundancy Check 8).
  • the error detection code may be of another method. Further, the error detection code may be an error detection correction code.
  • the identifier generation unit 13 After that, the identifier generation unit 13 generates a fixed-length identifier including the instruction length information and the destination information in order to associate the instruction with the length and destination of the instruction (step S103).
  • the identifier generation unit 13 prepares a fixed-length identifier, and embeds the length information and the destination information in a predetermined area prepared in advance in the identifier. By this embedding, the instruction and the length information and the destination information of the instruction acquired in step S101 are associated with each other.
  • the identifier is given to the instruction by being placed before the instruction.
  • the identifier generation unit 13 determines the entire identifier or the length of the instruction embedded in the identifier so that error detection and correction can be performed for the length information and destination information of the instruction embedded in the identifier.
  • the error detection correction code is calculated based on the information and the destination information (step S104).
  • the error detection correction code for example, a SECDED (single error correction double error detection) code that performs single error correction and two error detection can be adopted. This makes it possible to cover the error patterns of soft errors that actually occur.
  • the identifier generation unit 13 embeds the calculated error detection and correction code in a specific area in the identifier (step S104).
  • step S105 the buffer memory control unit 14 starts buffering the instruction in the buffer memory 11 (step S105).
  • Instruction buffering may be initiated in parallel with steps S102 and S103.
  • the identifier is not buffered. Therefore, in the buffer memory 11, an area in which the data read order is earlier than the buffering area of the instruction is secured as a reserved area in which the identifier is buffered so that the identifier is arranged at the beginning of the instruction.
  • the buffer memory control unit 14 buffers the instruction while avoiding the reserved area for buffering the identifier.
  • the buffer memory control unit 14 starts buffering the identifier to the reserved area (step S106).
  • the buffer memory control unit 14 controls and monitors the buffering state of the instruction and the identifier (step S107).
  • the buffer memory control unit 14 monitors whether or not all the instructions are buffered, maintains the state if all the instructions are buffered, and until there is an instruction to read the instructions in the subsequent process. Control monitoring is performed such that the instruction is held in the buffer memory 11 together with the identifier.
  • the buffer memory control unit 14 reads at least an identifier from the buffer memory 11 (step S108).
  • the buffer memory 11 is of the FIFO (first in first out) method
  • the instruction first stored in the buffer memory 11 is first read by the buffer memory control unit 14 according to the read instruction. Since the identifier is stored in the area before the instruction, when the instruction is read, the identifier given to the instruction is also read. At this time, if the bit width of the buffer memory 11 is larger than the number of bits of the identifier and the identifier is stored from the beginning of the first layer of the buffer memory 11, at least by reading the information of the first layer of the buffer memory 11. , All identifiers are read. Since the identifier has a fixed length, only the identifier may be read out.
  • the error detection / correction unit 15 extracts the error detection / correction code (SECEDD code) embedded in the identifier from the identifier read by the buffer memory control unit 14, and uses the extracted error detection / correction code to identify the identifier. (More specifically, it is determined whether there is an error in the entire identifier or the length information and destination information of the instruction embedded in the identifier. The same applies hereinafter) (step S109). If there is no error (step S109; No), it is guaranteed that the identifier is correct information.
  • SECEDD code error detection / correction code
  • the buffer memory control unit 14 reads the rest of the instruction and the error detection code assigned to the end of the instruction from the buffer memory 11, and outputs the identifier S, the instruction, and the error detection code as a set (step S110). ).
  • the rest of the instruction is specified by the instruction length information contained in the identifier.
  • the error detection code may be preset as a fixed length.
  • the identifier generation unit 13 may correct the information on the length of the instruction to the information indicating the length including the error detection code.
  • the buffer memory control unit 14 can read the rest of the instruction and the error detection code assigned to the end of the instruction from the information of the instruction length. The instructions and the like output above are appropriately transferred to other distributed computers.
  • the error detection and correction unit 15 determines whether the detected error can be corrected (step S111).
  • the error detection and correction code is a SECDED code, error correction is possible if there is only one bit error in the identifier due to a soft error or the like. If there are two or more bit errors in the identifier, the error cannot be corrected.
  • the error detection and correction unit 15 corrects the identifier error (step S112).
  • This error correction ensures that the identifier is correct and error-free information.
  • the buffer memory control unit 14 reads the rest of the instruction and the error detection code assigned to the end of the instruction from the buffer memory 11, and outputs the corrected identifier S, the instruction, and the error detection code as a set. (Step S113).
  • the output instructions and the like are appropriately transferred to other distributed computers.
  • step S111 If the identifier error cannot be corrected (step S111; No), the instruction length information and destination information in the identifier S are unreliable. In particular, if the length information of the operation instruction is incorrect, when another operation instruction is stored in the buffer memory 11, the boundary between the end of the instruction or the end of the error detection code and the beginning of the identifier of the other instruction is It becomes unclear, and the rest of the instructions may not be read accurately from the buffer memory 11 and other instructions may be read. Therefore, when the error of the identifier cannot be corrected, the buffer memory control unit 14 clears the buffer memory 11 to detect all the information currently stored in the buffer memory 11, that is, all the identifiers and the error detection. Discard the code and identifier (step S114).
  • the buffer memory control unit 14 may clear (discard) the instruction being read from the buffer memory 11 and the instruction being stored in the buffer memory 11.
  • the length of the instruction may be fixed, and in this case, the buffer memory control unit 14 may discard only the instruction and the error detection code corresponding to the identifier that cannot be error-corrected. Further, in this case, the identifier does not have to include the length information.
  • the buffering area of the identifier is reserved, and the instruction is buffered avoiding the reserved area of the identifier. Therefore, the buffer for holding the instruction is not required until the buffering of the identifier is completed. ing. As a result, the circuit scale of the instruction processing circuit becomes smaller. Further, the simple process of correcting the instruction length and the destination information by error suppresses inconveniences such as the instruction reading being stopped or the instruction reading failing due to an error in the identifier. Further, even if an error that cannot be corrected by error correction occurs, the instruction stored in the buffer memory 11 is cleared, so that the adverse effect on other instructions is prevented at the expense of only the instruction stored in the buffer memory 11. To.
  • FIG. 3 shows the instruction processing circuit 20 according to the second embodiment of the present invention.
  • the instruction processing circuit 20 is configured as a circuit that performs quality of service (QoS).
  • the instruction processing circuit 20 includes a buffer memory 21, a PCS (Physical Coding Sublayer) / RS (Reconciliation Sublayer) 22, an OAC (Operation Access Control) 23, and a QOS (Quality of Service) 24.
  • the buffer memory 21 temporarily stores an instruction input to the instruction processing circuit 20.
  • a preamble is added to the beginning of the instruction input to the instruction processing circuit 20, and an OCS (Operation Check Sequence), which is a code for error detection, is added to the end.
  • OCS Operaation Check Sequence
  • the first to third instructions are continuously input to the PCS / RS22 with the minimum inter-instruction gap (IOG: InterOperationGap), and after that, a sufficient time is left.
  • the fourth instruction shall be input. Instructions are sequentially input to the instruction processing circuit 20.
  • the opcode and the operand in the instruction have a length according to the content of the instruction, the content of the data, and the like. Therefore, the instructions have different lengths depending on their contents (for example, RISC-V instruction lengths of 32 bits and 64 bits).
  • RISC-V instruction lengths 32 bits and 64 bits.
  • PCS / RS22 In PCS / RS22, first, the instruction is encoded by PCS.
  • the PCS / RS22 detects the SOD (Start Operation Delimiter) at the boundary between the preamble and the instruction by the RS of the next stage for the encoded instruction, and transfers only the instruction and the OCS to the OAC23 of the next stage.
  • SOD Start Operation Delimiter
  • the OAC23 specifies the length of the input instruction and detects an error in the instruction using OCS at the end of the instruction.
  • an identifier including the destination information that identifies the destination of the instruction at the beginning of the instruction.
  • the identifier should also include length information indicating the length of the instruction in order to specify the length of the instruction by the identifier as described later. To generate such an identifier, the length of the instruction must be measured, the destination of the instruction must be searched, and the result must be embedded in the identifier. Therefore, the OAC 23 measures the length of the input command after performing error detection by OCS and confirming that there is no error. When the OAC 23 outputs an instruction, OCS is added to the end of the instruction again.
  • the OAC 23 To generate an identifier, it is necessary to specify the length of the instruction.
  • the OAC 23 When the OAC 23 outputs an identifier and then outputs an instruction, the output of the instruction and the identifier will be waited until the generation of the identifier. In order to avoid this, the OAC 23 outputs an instruction with OCS to the buffer memory 21 without waiting for the generation of the identifier.
  • the length information is stored in the [55:48] area of the identifier.
  • the OAC 23 refers to a table in which the destination and the destination information consisting of the destination number specifying the destination are associated with each other, as shown in FIG. 5, for example.
  • the table is stored in a storage unit inside or outside the OAC23 and is referred to by the OAC23.
  • the OAC23 refers to the above table and acquires the destination information 12b'000000000000100 corresponding to the DA1. ..
  • the OAC 23 embeds the acquired destination information in the identifier.
  • the maximum type of instruction to be assigned to the opposite distributed computer node connected to the instruction processing circuit 20 is 4096, it is necessary to allocate a minimum of 12 bits in the identifier in order to include the destination information in the identifier.
  • the destination information of the instruction may be stored in the [43:32] area of the identifier.
  • the OAC 23 embeds the instruction length information and the destination information in the identifier as the attribute information of the instruction. Furthermore, in order to perform processing for each instruction without error, we focused on instruction length information and destination information among the information embedded in these identifiers. By surely protecting these, the boundaries of different instructions can be determined by the length information, and the instruction can be reliably transferred by instruction by instruction without error.
  • the destination information allows the instruction to be sent to the correct destination. For example, in the case of the above example, if the destination information of the identifier is mistaken for 12b'000000000101 instead of 12b'000000000000100 due to a soft error, it should be originally processed as an instruction of the destination information 12b'00000000100, but the destination information.
  • the identifier may have a fixed length. The reason is that if the length of the identifier is variable, it is necessary to judge how far the identifier is by command-by-instruction, and a judgment circuit is added for measuring the length of the identifier, and the circuit scale becomes large. This is because it ends up.
  • the identifier may have a variable length.
  • the OAC 23 embeds the SECDED code calculated based on the 8-byte identifier in a specific area of the identifier, for example, [23:16] of the identifier. As a result, if a soft error occurs for one bit in the identifier, error correction becomes possible. As a result, the length information and destination information of the instruction can be protected, and it is expected that the instruction will be executed without error in the subsequent stage. Details will be described later.
  • the identifier generated based on the instruction input to the OAC23 is output from the OAC23 later than the instruction, as shown in FIG. In FIG. 3, the identifier is output after the instruction is output, but if the output destination of the identifier is separately provided, the instruction output and the identifier can be output in parallel.
  • the OAC 23 generates an identifier including at least instruction length information and destination information, and calculates an error detection correction code that protects at least the bit string indicating the length information and destination information from bit errors due to soft errors. And embed it in the identifier.
  • the OAC 23 sequentially performs these processes from the first instruction to the fourth instruction each time an instruction is input.
  • the OCS which is an error detection code added to the instruction
  • the OAC 23 of the present embodiment reattaches the OCS to the end of the instruction. If the instruction is not rewritten in the process of processing the instruction by the OAC 23, the error detection code input to the OAC 23 is added again. When the instruction is rewritten, the OAC 23 calculates a new error detection code for the instruction and assigns it to the instruction. As a result, even if an instruction is rewritten to another instruction due to a soft error in the instruction processing in the subsequent stage, the influence on the instruction processing in the subsequent stage can be suppressed by processing such as discarding.
  • the OAC 23 stores the first to fourth instructions with OCS in the buffer memory 21 together with the identifiers of the respective instructions. Since the first instruction to the third instruction are originally the instructions input with the minimum IFG, they are continuously stored in the same buffer memory 21 (queue) without any time interval as shown in FIG. .. Storage of each instruction in the buffer memory 21 is started before the identifier, and each instruction is stored with a storage area for the identifier (see the dotted line area). In FIG. 6, the buffer memory 21 is full when the first to third instructions are buffered. In FIG. 6, the square outer frame indicates the buffer memory, and the horizontal bit width ⁇ the number of layers (5 layers in FIG. 6) represents the number of bits that can be stored in the buffer memory.
  • the priority control processing is performed by the QoS24.
  • the first to fourth instructions have the same priority.
  • the QoS24 is instructed to read the instruction when the first instruction to the third instruction are buffered.
  • the QoS24 reads the information of the first layer of the buffer memory 21. Only the information in the first layer is read out because the information has a sufficient amount of information to include at least all of the identifiers at the head of the instruction, and the information in the second and subsequent layers is not immediately fetched.
  • the QoS24 extracts only the identifier by extracting the information for 64 bits from the beginning of the read information, and performs error correction detection of the identifier from the SECDED code embedded in the identifier. QoS24 may read only the identifier.
  • the error can be corrected for the identifier.
  • QoS24 corrects the identifier by error, extracts the instruction length information from the corrected identifier, and based on this length information, at the rest of the first instruction and at the end of the first instruction.
  • the OCS has a fixed length, and the end of the OCS is specified based on the length information of the first instruction.
  • the rest of the first instruction and the OCS are read from the second layer of the buffer memory 21.
  • the QoS24 synthesizes a part of the first instruction already read from the first layer and the rest of the first instruction read from the second layer, and uses the synthesized first instruction as the first instruction after priority control. , The corrected identifier and the OCS read from the second layer are output together.
  • the identifier of the second instruction is read.
  • the identifier is stored from the middle of the second layer to the third layer.
  • the identifier of the second instruction is the two layers of the buffer memory 21. It is stored from the first layer to the third layer, and the first and last positions of the identifier can be known. In this way, when the length of the identifier is a fixed length, it is not necessary to measure the length of the identifier sequentially, so that the circuit scale can be minimized and the instruction processing time can be shortened. There is.
  • the QoS24 After reading the identifier of the second instruction, the QoS24 uses the SECDED code included in the identifier to detect an error in the identifier.
  • two errors that is, DEU (double error upset) have occurred in the identifier of the second instruction. Therefore, the SECDED code cannot be used for error correction.
  • the reading process of the second instruction is performed using the instruction length information of the identifier as it is, if there is an error in the length information of the identifier, the boundary between the second instruction and the third instruction is set. Cannot be calculated correctly. Therefore, the QoS 24 promptly discards all the instructions stored in the buffer memory 21. By this process, the third instruction remaining in the buffer is immediately discarded before the next fourth instruction to be buffered arrives.
  • the third instruction and the fourth instruction are not output from the QoS24.
  • the fourth instruction is buffered after the buffer memory 21 is cleared. Clearing the buffer memory 21 requires a small circuit scale and simple processing, so high-speed processing is possible, and even if the fourth instruction is input with the minimum IFG following the third instruction, the buffer memory 21 is cleared. It does not affect the clearing process of. That is, since the buffer memory 21 is quickly cleared before the timing when the fourth instruction is buffered, it is not necessary to have another buffer for waiting for buffering the fourth instruction at the time of clearing. Since the fourth instruction is stored in the buffer memory 21 after clearing, the identifier of the fourth instruction and the fourth instruction are buffered from the first layer of the buffer memory 21. If no soft error has occurred in the 4th instruction, the 4th instruction is output after error detection.
  • the instruction is appropriately processed according to the soft error occurrence pattern, so that the instruction processing after the soft error occurs does not stop and the erroneous transfer occurs. Possible instructions are not sent to the wrong distributed computer node.
  • the identifier includes the instruction length information and the instruction destination information, but may include the instruction type (addition, calculation, etc.). In this case, even if a soft error occurs in the instruction, the instruction can be restored from the contents of the identifier, and more reliable processing becomes possible.
  • error detection and correction includes only the case of error detection. That is, an error detection code may be used as the error detection correction code. Any code type for error detection and correction may be used. For error detection, a parity code or a cyclic redundancy check code such as CRC may be used. In the case of error detection correction, a Reed-Solomon code may be used in addition to SECDED that performs single error correction and two error detection.
  • the instruction may be a CPU architecture such as RISC-V, a function larger than RISC-V, for example, an instruction included in an HTTP request (POST).
  • the instruction is not limited to the HTTP request (protocol), and may be an instruction used in various protocols such as MQTT, CoAP, QUIC, WebSocket, NATS, Kafka, REST, and original protocol.
  • the instruction processing circuit 10 or 20 may be an LSI or the like including a CPU, a GPU, or the like.
  • the instruction processing circuit 10 or 20 may be provided in the distributed computer 100 that performs the distributed processing.
  • the instruction processing circuit 10 or 20 causes the computer 100 to execute the instruction ((1) in FIG. 9). )reference).
  • the instruction processing circuit 10 or 20 may transfer the instruction to another distributed computer (see (2) in FIG. 9). ..
  • the instruction processing circuit 10 or 20 communicates with a processor 100A such as a CPU of a computer 110 on which the instruction processing circuit 10 or 20 is mounted and determines that the input instruction can be executed by the processor 100A, the instruction is the instruction.
  • the instruction processing circuit 10 or 20 may transfer the instruction to another computer 110.
  • the processor or arithmetic unit 110A of the other computer 110 executes the transmitted instruction. By doing so, the instruction is efficiently transferred.
  • the destination information included in the identifier may be a memory address which is an address of various memories 110B such as a cache memory, an OnChip memory, or a DRAM memory accessed by the arithmetic unit 110A in the computer 110.
  • the arithmetic unit 110A is included in a processor such as a CPU of the computer 110.
  • the various memories may be provided inside or outside the processor. According to such a configuration, since the arithmetic instruction is once placed in the memory 110B, flexible and high-speed arithmetic processing becomes possible even when it is necessary to execute a large number of arithmetic instructions, for example.
  • the address of the shared memory 110B shared by the plurality of computers 110 can be specified as the memory address, and the operation instruction (including the data used for the operation) can be used once in the shared memory, many of them can be used.
  • Information processing that is, execution of arithmetic instructions can be performed accurately.
  • An instruction processing method in which an instruction processing circuit (for example, an instruction processing circuit 10 or 20) that reads an instruction stored in a memory (for example, a buffer memory 11 or 21) is read from the memory based on a read instruction is executed.
  • the identifier and the instruction from the memory based on the step (for example, the storage process of steps S105 and S106 of FIG. 2 or the storage process of FIG. 6) including the error detection and correction code for detecting and correcting the above.
  • a step (for example, steps S109 and S111 of FIG.
  • An instruction processing method comprising, for example, steps S112 to S114 of FIG. 2, the first instruction of FIG. 7, and the like, which discard the instruction without outputting the instruction.
  • An instruction processing circuit for example, instruction processing circuit 10 or 20 for reading an instruction stored in a memory (for example, a buffer memory 11 or 21) from the memory based on a read instruction, the instruction and the instruction. It is a first circuit which stores the identification identifier in the memory, stores the identifier in the area of the memory whose read order is earlier than the instruction, and the identifier detects and corrects an error of the identifier.
  • a second circuit for example, a buffer memory control unit 14 and an error detection / correction unit 15 or a QoS24
  • the corrected identifier is output together with the instruction, and when the error detection result has an uncorrectable error, the instruction is not output.
  • An instruction processing circuit including a third circuit to be discarded for example, a buffer memory control unit 14 and an error detection / correction unit 15 or a QoS24).
  • the identifier is corrected, the instruction is output, or the instruction is deleted from the memory according to the detection result of the error detection for the identifier. Therefore, the instruction can be correctly identified by the corrected identifier.
  • Deletion of instructions from memory prevents the output of instructions that are incorrectly identified by the wrong identifier (eg, instructions of the wrong length, instructions of the wrong destination), which is harmful due to soft errors. Is effectively suppressed.
  • since error detection and correction is performed without reading the entire instruction, it is not necessary to hold the entire instruction, and the circuit scale does not increase. From the above, according to the above configuration, it is possible to effectively suppress the adverse effect of soft error on a small circuit scale.
  • 10 instruction processing circuit, 11 ... buffer memory, 12 ... input command processing unit, 13 ... identifier generation unit, 14 ... buffer memory control unit, 15 ... error detection and correction unit, 20 ... instruction processing circuit, 21 ... buffer memory, 22 ... PCS / RS, input command processing unit, 13 ... identifier generation unit, 14 ... buffer memory control unit, 15 ... error detection and correction unit, 23 ... OCS, 24 ... QoS, 100 ... computer, 100A ... processor, 110 ... other Computer, 110A ... processor or arithmetic unit, 110B ... memory.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

命令処理方法は、バッファメモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路が実行する命令処理方法である。当該方法は、命令と、命令を識別する識別子とをバッファメモリに格納するステップであり、識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含むステップ(S105及びS106)と、読み出し指示に基づいてバッファメモリから、識別子及び命令の一部、又は、識別子のみを読み出し、読み出した識別子に含まれる誤り検出訂正符号に基づいて識別子の誤り検出を行うステップ(S109及びS111)と、誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の識別子を前記命令とともに出力し、誤り検出の結果が訂正不可能な誤り有りの場合に、命令を出力せずに廃棄するステップ(ステップS112~S114)と、を備える。これにより、小さい回路規模でソフトエラーによる悪影響を効果的に抑えることができる。

Description

命令処理方法及び命令処理回路
 本発明は、分散コンピュータ等で実行される命令を処理する、命令処理方法及び命令処理回路に関する。
 近年、インターネット上で仮想現実や人工知能を用いた高度なサービスが進展している。このような状況の中、高度なサービスに柔軟に対応するため、高性能なコンピュータリソースを用いてソフトウェア上で仮想的なコンピュータを構成するコンピュータの仮想化に向けた検討が進められている。このようなコンピュータの高性能化に伴い、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、及び、FPGA(Field Programmable Gate Array)といった大規模集積回路(LSI:Large Scale Integration)の微細化がますます進んでいる。このような微細化に伴い、特に、大規模集積回路上に搭載されるメモリについては、宇宙線によるソフトエラーと言われるビット反転によるビットエラーの発生が懸念されている。
 このビットエラーが、メモリにバッファリングされたコンピュータの命令に対して発生すると、メモリから命令を読み出した際に、命令の一部がビット反転した命令が読み出されてしまう。このような読み出された命令のビット誤りによって、演算障害や装置故障誤検知などが発生し、コンピューティングの停止など深刻な影響へと発展する可能性が高まる。
 他方、非特許文献1には、ソフトエラーに対する対処法として、TMR(Triple Modular Redundancy)法が開示されている。これは、回路を三重に冗長化することにより、多数決で決定した値を出力することにより、ソフトエラーによるビット反転による影響を回避する方法である。また、特許文献1には、このような冗長回路ではなく、装置間で相互にやり取りされるセルに冗長符号を付与することによって、誤りチェックを行い、誤ったビットを復元する方法が開示されている。
特開平9-51337号公報
ICHINOMIYA 他7名,「Fault-Injection Analysis to Estimate SEU Failure in Time by Using Frame-Based Partial Reconfiguration」, IEICE TRANS. FUNDAMENTALS, VOL.E95-A, NO.12 DECEMBER 2012,p.2347-2356
 ソフトエラーは、宇宙空間でLSIを使用しない限り、頻度高く起こることはない。このため、ソフトエラーへの対処方法は、回路に大きなインパクトを与えることなく効率的に実現することが望まれる。非特許文献1及び特許文献1は、処理対象を命令とする点を開示しておらず、命令のソフトエラーへの対処に非特許文献1及び特許文献1が開示する技術を適用することは容易ないし自明ではないが、仮に非特許文献1及び特許文献1の技術を命令のソフトエラーへの対処に用いたとしても、前者のTMR法では同じ回路が3つも必要となり回路規模が大きくなってしまう。また、後者の対処法では、廃棄率は低減できるが、バッファリングが必要な全てのメモリで誤り訂正を行う処理回路及び1つのセルヘッダ乃至情報ビット専用のメモリが必要となり、回路規模が大きくなってしまう。
 本発明は、小さい回路規模でソフトエラーによる悪影響を効果的に抑えることを課題とする。
 上述した課題を解決するために、本発明の第1の観点に係る命令処理方法は、メモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路が実行する命令処理方法であって、前記命令と、当該命令を識別する識別子とを前記メモリに格納するステップであり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、ステップと、前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行うステップと、前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄するステップと、を備える。
 上述した課題を解決するために、本発明の第2の観点に係る命令処理回路は、メモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路であって、前記命令と、当該命令を識別する識別子とを前記メモリに格納する第1回路であり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、第1回路と、前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行う第2回路と、前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄する第3回路と、を備える。
 本発明によれば、小さい回路規模でソフトエラーによる悪影響を効果的に抑えることができる。
図1は、本発明の第1実施形態に係る命令処理回路の構成図である。 図2は、図1の命令処理回路が実行するバッファメモリ処理のフローチャートである。 図3は、本発明の第2実施形態に係る命令処理回路の構成図である。 図4は、図3の命令処理回路で生成される識別子の構成例を示す図である。 図5は、図3の命令処理回路で宛先情報を取得するときに参照するテーブルの構成例を示す図である。 図6は、図3のバッファメモリに命令が順次格納される様子を示す図である。 図7は、図3のバッファメモリから命令が読み出される様子を示す図である。 図8は、本発明の第2実施形態に係る命令処理回路から命令が読み出される様子を示す図である。 図9は、本発明の変形例に係る構成を示す構成図である。
 以下、本発明の実施の形態に係る命令処理回路及び命令処理方法について、図面を参照して説明する。
<第1実施形態>
 図1に本発明の第1実施形態に係る命令処理回路10の構成を示す。命令処理回路10は、例えば、複数の分散コンピュータにより分散処理されるソフトウェアコンポーネントを構成する命令を転送する処理を行う回路として構成されている。命令処理回路10は、FPGA等のLSIにより構成されている。ここで取り扱われる命令は、RISC演算命令であるとする。
 命令処理回路10は、バッファメモリ11と、入力命令処理部12と、識別子生成部13と、バッファメモリ制御部14と、誤り検出訂正部15と、を備える。
 バッファメモリ11は、命令処理回路10に入力される命令を、後述の命令の出力要求があるまでバッファリングする。バッファメモリ11は、複数の命令を受信順に順次記憶可能に構成されている。
 上記各部12~15は、協働して、図2に示すバッファメモリ処理を実行するように構成されている。以下、各部12~15の構成を、バッファメモリ処理を説明しながら説明する。命令処理回路10に入力される命令は、命令処理回路10の前段において、誤り検出処理によって誤りの無いことが確認されたものであってもよい。
 バッファメモリ処理では、まず、入力命令処理部12が、命令の長さを示す長さ情報と、当該命令の宛先を示す宛先情報と、を取得する(ステップS101)。ステップS101は、命令を特定し、ステップS101の後の処理を誤りなく行うため、命令と当該命令の属性(長さ及び宛先)とを確実に関連付けるための重要なステップである。
 ステップS101において、入力命令処理部12は、例えば、命令のビット数をカウントすることで当該命令の長さ情報を取得する。入力命令処理部12は、命令のヘッダに格納された長さ情報を取得することで命令の長さ情報を取得してもよい。命令の宛先情報は、命令の実行先である分散コンピュータ(送信先)を特定する番号等であればよい。宛先情報は、例えば、命令に埋め込まれている当該命令の種別を示すオペコード等の種別情報に応じて予め割り当てられているものとする。入力命令処理部12は、予め記憶部に用意されたテーブル等を参照することで、命令の種別情報に対応する宛先情報を取得する。宛先情報は、命令のヘッダに格納されたものであってもよい。
 その後、入力命令処理部12は、後段のステップで命令に誤りが重畳した場合に当該誤りを検出できるように、命令全体に基づいて誤り検出符号を算出し、算出した誤り検出符号を命令の末尾に付与する(ステップS102)。誤り検出符号の方式は、例えば、CRC8(Cyclic Redundancy Check 8)とする。誤り検出符号は、その他の方式のものであってもよい。また、誤り検出符号は、誤り検出訂正符号であってもよい。
 その後、識別子生成部13が、命令と、当該命令の長さ及び宛先とを紐づけるため、命令の長さ情報及び宛先情報を含む固定長の識別子を生成する(ステップS103)。識別子生成部13は、固定長の識別子を用意し、当該識別子内の予め用意された所定領域に前記の長さ情報及び宛先情報を埋め込む。この埋め込みにより、命令と、ステップS101で取得された命令の長さ情報及び宛先情報と、が紐づけられる。識別子は、命令の前に配置されることで、当該命令に付与される。
 その後、識別子生成部13は、識別子全体、又は、識別子に埋め込まれた命令の長さ情報及び宛先情報に対し誤り検出訂正が可能となるよう、識別子全体、又は、識別子に埋め込まれた命令の長さ情報及び宛先情報に基づいて、誤り検出訂正符号を算出する(ステップS104)。誤り検出訂正符号としては、例えば、単一エラー訂正、2つエラー検知を行うSECDED(single error correction double error detection)符号を採用できる。これにより、実際に発生するソフトエラーの誤りパターンをカバーできる。識別子生成部13は、算出した誤り検出訂正符号を識別子内の特定領域に埋め込む(ステップS104)。
 ステップS105のあとは、バッファメモリ制御部14が、命令をバッファメモリ11にバッファリングすることを開始する(ステップS105)。命令のバッファリングは、ステップS102及びS103と並行して開始されてもよい。ステップS105の時点では、識別子がバッファリングされていない。このため、バッファメモリ11において、識別子が命令の先頭に配置されるよう、命令のバッファリング領域よりも、データの読み出し順序が前の領域が、識別子がバッファリングされる予約領域として確保される。バッファメモリ制御部14は、命令のバッファリングを、識別子のバッファリングの予約領域を避けて行う。
 その後、バッファメモリ制御部14は、識別子の上記予約領域へのバッファリングを開始する(ステップS106)。
 その後、バッファメモリ制御部14は、命令と識別子のバッファリング状態を制御監視する(ステップS107)。バッファメモリ制御部14は、ここでは、例えば命令が全てバッファリングされているか否かを監視し、全てバッファリングされていればその状態を維持し、後工程での命令の読み出し指示があるまで、命令を識別子とともにバッファメモリ11内に保持するといった制御監視を行う。
 ステップS107のあと適宜のタイミングで、命令の読み出し指示がバッファメモリ制御部14に供給されると、バッファメモリ制御部14は、バッファメモリ11から少なくとも識別子を読み出す(ステップS108)。バッファメモリ11がFIFO(first in first out)方式の場合、読み出し指示により、バッファメモリ11に最初に格納された命令が、バッファメモリ制御部14により最初に読み出される。命令の前領域には識別子が格納されているため、命令が読み出される際は、当該命令に付与された識別子も読み出されることになる。この際、バッファメモリ11のビット幅が識別子のビット数より大きく、尚且つ、バッファメモリ11の一層目先頭から識別子が格納されている場合は、少なくとも、バッファメモリ11の一層目の情報の読み出しにより、識別子が全て読み出される。なお、識別子は固定長なので、識別子のみが読み出されてもよい。
 その後、誤り検出訂正部15が、バッファメモリ制御部14により読み出された識別子から、当該識別子に埋め込まれている誤り検出訂正符号(SECDED符号)を取り出し、取り出した誤り検出訂正符号を用いて識別子(より詳細には識別子全体、又は、識別子に埋め込まれた命令の長さ情報及び宛先情報。以下同じ)に誤りがあるかを判別する(ステップS109)。誤りが無い場合(ステップS109;No)、識別子は正しい情報であることが担保される。この場合、バッファメモリ制御部14は、命令の残り及び当該命令の末尾に付与された誤り検出符号をバッファメモリ11から読み出し、識別子S、命令、及び、誤り検出符号をセットで出力する(ステップS110)。命令の残りは、識別子に含まれる命令の長さの情報により特定される。誤り検出符号は、固定長として予め設定されていればよい。なお、誤り検出符号の付与の際、識別子生成部13は、命令の長さの情報を、当該誤り検出符号を含めた長さを示す情報に補正してもよい。この場合、バッファメモリ制御部14は、命令の長さの情報により、命令の残り及び当該命令の末尾に付与された誤り検出符号を読み出すことができる。上記で出力された命令等は、適宜、他の分散コンピュータに転送される。
 誤り検出訂正部15は、識別子について誤りを検出した場合(ステップS110;Yes)、検出したその誤りが訂正可能であるか判別する(ステップS111)。ここでは、誤り検出訂正符号をSECDED符号としているので、ソフトエラー等による識別子内のビット誤りが1箇所であれば、誤り訂正可能である。識別子内のビット誤りが2箇所以上であれば、誤りが訂正できない。
 誤り検出訂正部15は、識別子の誤りが訂正可能である場合(ステップS111;Yes)、識別子の誤り訂正を行う(ステップS112)。この誤り訂正によって、識別子は、誤りのない正しい情報であることが担保される。この場合、バッファメモリ制御部14は、命令の残り及び当該命令の末尾に付与された誤り検出符号をバッファメモリ11から読み出し、訂正後の識別子S、命令、及び、誤り検出符号をセットで出力する(ステップS113)。出力された命令等は、適宜、他の分散コンピュータに転送される。
 識別子の誤りが訂正不可である場合(ステップS111;No)、識別子S内の命令の長さの情報及び宛先情報には信頼性がない。特に、演算命令の長さ情報が間違っていると、バッファメモリ11に他の演算命令が格納されている場合、命令の末尾乃至誤り検出符号の末尾と他の命令の識別子の先頭との境目が不明瞭になり、バッファメモリ11から命令の残りを正確に読み出せず、他の命令まで読み出してしまう可能性もある。このため、識別子の誤りが訂正不可である場合、バッファメモリ制御部14は、バッファメモリ11をクリアすることで、現在バッファメモリ11に格納されているすべての情報、つまり、すべての識別子、誤り検出符号、及び識別子を廃棄する(ステップS114)。このとき、バッファメモリ制御部14は、バッファメモリ11から読み出し途中の命令、バッファメモリ11に格納途中の命令をクリア(廃棄)するようにしてもよい。なお、命令の長さを固定長としてもよく、この場合、バッファメモリ制御部14は、誤り訂正不可の識別子に対応する命令、誤り検出符号のみを廃棄するようしてもよい。さらに、この場合、識別子には、長さ情報が含まれなくてもよい。
 本バッファメモリ処理では、バッファメモリ11が読み出される際、命令の末尾までが一度に読み出されず、バッファメモリの一層目のみが読み出され、これにより、誤り訂正符号を含む識別子が読み出される。これにより、簡易な処理及び小さい回路規模により、命令に対する誤りのない正しい情報(識別子)が得られる。
 また、バッファリングの際、識別子のバッファリング領域が予約され、命令が識別子の予約領域を避けてバッファリングされるので、識別子のバッファリングが終わるまで、命令を保持しておくバッファは不要となっている。これにより、命令処理回路の回路規模が小さくなる。さらに、命令の長さ及び宛先情報を誤り訂正する簡易な処理によって、識別子に生じた誤りにより、命令の読み出しが中止になる、又は、命令の読み出しが失敗するといった不都合が抑制される。また、誤り訂正で訂正できない誤りが生じても、バッファメモリ11に蓄積された命令がクリアされることで、バッファメモリ11に蓄積された命令のみの犠牲で、他の命令への悪影響が防止される。
<第2実施形態>
 図3に本発明の第2実施形態に係る命令処理回路20を示す。命令処理回路20は、優先度振り分け(QoS: Quality of Service)を行う回路として構成されている。命令処理回路20は、バッファメモリ21、PCS(Physical Coding Sublayer)/RS(Reconciliation Sublayer)22、OAC(Operation Access Control)23、及び、QOS(Quality of Service)24を備えている。バッファメモリ21は、命令処理回路20に入力される命令を一時記憶する。命令処理回路20に入力される命令には、先頭にプリアンブルが付加され、末尾に誤り検出用の符号であるOCS(Operation Check Sequence)が付加されている。バッファメモリ21にバッファリングされるときは、命令に、プリアンブルの代わりに識別子が付加される。
 以下の説明では、一例として、PCS/RS22に、第1命令から第3命令までが最小の命令間ギャップ(IOG:Inter Operation Gap)にて連続的に入力され、その後、十分に時間を空けて、第四命令が入力されるものとする。命令処理回路20には命令が逐次入力される。命令内のオペコード及びオペランドは、命令の内容、又は、データの内容などに応じた長さを有する。このため、命令は、その内容(例えばRISC-Vの命令長32ビット及び64ビット)に応じて異なる長さとなる。なお、ここでは、各命令内のタグは同じ優先度であるとする。
 PCS/RS22では、まず、PCSにより命令を符号化する。PCS/RS22は、符号化した命令について、次段のRSにより、プリアンブルと命令との境にあるSOD(Start Operation Delimiter)を検出し、命令及びOCSのみを次段のOAC23に転送する。
 OAC23は、入力された命令の長さの特定と、命令末尾にあるOCSを用いた命令の誤り検出を行う。命令の種類等に応じて、命令を実行するコンピュータを分けるため、命令の先頭に、当該命令の宛先を特定する宛先情報を含んだ識別子を付与したい。また、識別子には、後述のように当該識別子により命令の長さを特定するために、当該命令の長さを示す長さ情報も含ませたい。このような識別子を生成するには、命令の長さを測定し、尚且つ命令の宛先を検索して、結果を識別子に埋め込まなければならない。そこで、OAC23は、入力された命令に対して、OCSにより誤り検出を行って誤りがないことを確認してから、当該命令の長さを測定する。OAC23は、命令を出力するときには、再度OCSを命令の末尾に付与する。
 識別子を生成するには、命令の長さなどを特定する必要がある。OAC23が識別子を出力してから命令を出力する場合、識別子の生成まで命令及び識別子の出力が待機されることになってしまう。これを避けるため、OAC23は、識別子の生成を待たずに、OCS付きの命令をバッファメモリ21に出力する。
 ここで、識別子がどのように生成されるかの一例を詳細に述べる。OAC23は、命令の長さを測定する。この測定は、第1実施形態で述べたように、命令のビット数をカウントするか、命令のヘッダに含まれる命令の長さ情報による長さの特定により行われる。OAC23は、測定した命令の長さを元に、当該長さを示す長さ情報を識別子の特定領域に埋め込む処理を行う。具体的には、図4に示すように、例えば64ビット=8バイト[63:0]長の識別子が用意される。例えば、命令長さとして、命令の長さ最大256バイトまで対応するためには、バイト単位の数値として2進数で値を割り当てるためには最小8ビットを割り当てる必要がある。例えば、識別子の[55:48]領域に長さ情報が格納される。
 宛先情報については、OAC23は、例えば、図5に示すような、宛先と、宛先を特定する宛先番号からなる宛先情報と、が対応付けられたテーブルを参照する。当該テーブルは、当該OAC23内部又は外部の記憶部に記憶され、OAC23に参照される。OAC23は、入力された命令の実行先アドレス(例えば、ヘッダに埋め込まれているものとする)がDA1の場合、前記のテーブルを参照して、当該DA1に対応する宛先情報12b′000000000100を取得する。OAC23は、取得した当該宛先情報を識別子に埋め込む。命令処理回路20に接続される対向の分散コンピュータノードに割り振る命令の種類を最大4096とすると、識別子に宛先情報を含ませるには、識別子の中の最小12ビットの割り当てが必要である。この場合、例えば識別子の[43:32]領域に、命令の宛先情報が格納されればよい。
 以上のように、OAC23は、命令の長さ情報及び宛先情報を当該命令の属性情報として識別子に埋め込む。更に、命令別の処理を誤りなく行うため、これらの識別子に埋め込んだ情報の中で、命令の長さ情報及び宛先情報に着目した。これらを確実に保護することで、長さ情報により、異なる命令の境界を確定し、誤りなく、命令バイ命令で確実に命令転送することができる。また、宛先情報により、命令を正確な宛先に送信できる。例えば、上記例の場合に、ソフトエラーによって識別子の宛先情報が12b′000000000100ではなく、12b′000000000101に誤ってしまったとすると、本来、宛先情報12b′000000000100の命令として処理されるはずが、宛先情報12b′000000000101の命令として処理されてしまう可能性がある。即ち、宛先情報がソフトエラーにより情報が誤ってしまうと、別の命令を誤って誤転送してしまうということになってしまう。そこで、宛先情報を保護して命令の誤送信を防止する。
 命令の長さ情報又は宛先情報の誤りにより発生する誤命令処理又は誤送信を防止するためには、識別子に格納された前記の情報を保護することが必要となる。なお、特に限定するわけではないが、識別子は固定長とするとよい。理由は、識別子の長さが可変長であると、識別子が何処までなのか、命令バイ命令で判定しなければならず、識別子の長さ計測用に判定回路が追加され、回路規模が大きくなってしまうためである。識別子は、当然可変長であってもよい。
 識別子の長さ情報と宛先情報とを保護するためには、誤り検出技術の適応が重要になる。誤り検出符号はいくつかあるが、この実施の形態では、宇宙線によるビット反転という発生頻度が小さいエラーを対象とするため、単一エラー訂正、2つエラー検知を行うSECDEDを採用することが回路インパクトも大きくなく好ましい。OAC23は、8バイトの識別子に基づいて計算したSECDED符号を識別子の特定領域、例えば、識別子の[23:16]に埋め込む。これにより、識別子内にソフトエラーが1ビット分発生した場合は、誤り訂正が可能となる。これにより、命令の長さ情報及び宛先情報を保護でき、後段で誤りなく命令を実行することが期待される。詳細は後述する。
 上記のように、OAC23に入力された命令に基づいて生成された識別子は、図3に示すように、OAC23から、命令に遅れて出力される。なお、図3では、命令が出力された後、識別子が出力されているが、識別子の出力先を別途設けておけば、命令出力と識別子とが並行して出力されることも可能である。
 以上のように、OAC23は、少なくとも命令の長さ情報及び宛先情報を含む識別子を生成するとともに、少なくとも長さ情報及び宛先情報を示すビット列をソフトエラーによるビットエラーから保護する誤り検出訂正符号を計算して識別子に埋め込む。OAC23は、これらの処理を第1命令から第4命令まで、命令が入力されるごとに逐次的に行うことになる。
 ここで、OAC23による命令に対する処理について説明を付け加える。命令に付加されている誤り検出符号であるOCSは、OAC23での誤り検出のための処理に使用されたあと削除されることが多い。しかし、本実施形態のOAC23は、OCSを命令の末尾に再度付与する。OAC23が命令に対して適宜行う処理の工程で、命令の書換えが行われない場合は、OAC23に入力された誤り検出符号が再度付与される。命令の書換えが行われた場合は、OAC23は、命令に対して新た誤り検出符号を算出し、命令に付与する。このことによって、後段の命令処理において、ソフトエラーよって、例えば万が一命令が、別の命令に書き換わっていたとしても、廃棄などの処理により、後段の命令処理への影響を抑制することができる。
 OAC23は、OCSを付与した第1命令~第4命令を、命令それぞれの識別子とともにバッファメモリ21に格納する。第1命令から第3命令までは、元々、最小のIFGで入力された命令であるため、図6に示すように、同じバッファメモリ21(キュー)に時間間隔を置かず連続的に格納される。各命令のバッファメモリ21への格納は、識別子よりも先に開始され、各命令は、識別子の格納領域(点線の領域参照)を空けて格納される。図6では、第1命令から第3命令までがバッファリングされた時点で、バッファメモリ21が満タンなっている。図6では、四角い外枠がバッファメモリを示しており、横のビット幅×階層数(図6では5層)がバッファメモリに蓄積可能なビット数を表す。
 図3に戻り、上記説明したOAC23による処理が完了すると、QoS24により、優先制御処理が行われる。上述のように、第1命令から第4命令までは、同じ優先度の命令とする。また、第1命令から第3命令までがバッファリングされた時点で、QoS24に命令の読み出し指示がされたとする。この場合、QoS24は、バッファメモリ21の1層目の情報を読み出す。1層目の情報のみ読み出されたのは、当該情報が、命令先頭の識別子の全てを少なくとも含むのに十分な情報量を有するためであり、2層目以降は直ぐには取り出されない。これが実現できるのは、バッファメモリ21のどこから識別子を読み出しているのかという情報と、命令の先頭に付与されている識別子のビット長を予め、保持しているからである。バッファメモリの横幅を128ビット(16バイト)とし、識別子を64ビット(8バイト)とすると、1層目の読み出し位置が先頭であることから、1層目のみ読み出せば、識別子が全て読み出されることになる。QoS24は、読み出した情報の先頭から64ビット分の情報を抽出することで、識別子のみを抽出し、当該識別子に埋め込まれたSECDED符号から、識別子の誤り訂正検出を行う。QoS24は、識別子のみを読み出すようにしてもよい。
 図7の例において、第1命令に付与された識別子では誤りが1箇所のみ発生しているとすると、当該識別子については誤り訂正が可能である。この場合、QoS24は、識別子に対して誤り訂正を行い、訂正後の識別子から、命令の長さ情報を抽出し、この長さ情報を元に、第1命令の残り及び第1命令の末尾に付与されているOCSを読み出す。OCSは、固定長であり、OCSの末尾は、第1命令の長さ情報に基づいて特定される。図7の例では、第1命令の残り及びOCSがバッファメモリ21の2層目から読み出されている。QoS24は、1層目からすでに読み出している第1命令の一部と、2層目から読み出した第1命令の残りとを合成し、合成した第1命令を、優先制御後の第1命令として、訂正後の識別子及び2層目から読み出した前記OCSとともに出力する。
 第1命令の読み出し後は、第2命令の識別子が読み出される。図7では、2層目の途中から、3層目にかけて識別子が格納されている。ここで、バッファメモリ21における第1命令のOCSの位置は分かるので、第1命令と同様に識別子の長さが固定長8バイトであるとすると、第2命令の識別子がバッファメモリ21の2層目から3層目に渡って格納されており、当該識別子の最初と最後の位置とが分かる。このように、識別子の長さが固定長である場合、逐次的に識別子の長さを測定する必要がないため、回路規模を最小限にすることができると共に、命令処理時間を短くできるというメリットがある。
 QoS24は、第2命令の識別子を読み出したあと、当該識別子に含まれるSECDED符号を用いて、当該識別子の誤り検出を行う。ここでは、第2命令の識別子に2つの誤り、つまり、DEU(double error upset)が発生している。このため、SECDED符号では誤り訂正できない。このまま、識別子の持つ命令の長さ情報を用いて、第2命令の読み出し処理を行うと、識別子のうちの長さ情報に誤りがあった場合には、第2命令と第3命令の境目を正しく算出できない。このため、QoS24は、バッファメモリ21に蓄積されているすべての命令を速やかに廃棄する処理を行う。この処理により、次のバッファすべき第4命令が来る前に、バッファに残っている第3命令が即座に廃棄される。これにより、図8に点線で示すように、第3命令及び第4命令は、QoS24から出力されない。図3及び図7の例では、第4命令が第3命令の入力タイミングから十分時間をおいて入力されているため、バッファメモリ21がクリアされてから第4命令がバッファリングされる。バッファメモリ21のクリアは、必要な回路規模も小さく、処理も単純なため、高速な処理が可能となり、第4命令が第3命令に引き続いて最小のIFGで入力されていたとしても、バッファメモリのクリア工程に影響を与えることはない。すなわち、第4命令がバッファリングされるタイミングの前にバッファメモリ21が速やかにクリアされるため、クリア時に第4命令をバッファリングするための待機用にバッファをもう一つ持つ必要がない。第4命令は、クリア後のバッファメモリ21に格納されるため、バッファメモリ21の1層目から、第4命令の識別子及び第4命令がバッファリングされる。第4命令にソフトエラーが発生していない場合、第4命令は、誤り検出後に出力される。
 以上説明したように、第2実施形態によれば、ソフトエラーの発生パターンによって、命令が適切に処理されるので、ソフトエラーが発生した後の命令処理が停止することなく、また、誤転送の可能性のある命令が誤った分散コンピュータノードへ送信されることがない。
<変形例等>
 上記の実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。上記実施形態について種々の変更を施してもよい。以下、変形例を列挙するが、下記の変形例の少なくとも一部同士を矛盾しない範囲で組み合わせてもよい。
 上記実施の形態では、識別子は、命令の長さ情報と命令の宛先情報を含むが、命令の種類(加算、演算等)を含んでもよい。この場合、命令にソフトエラーが発生しても、識別子の内容から命令を復元することも可能で、より信頼性の高い処理が可能となる。
 上記誤り検出訂正は、誤り検出だけの場合を含む。つまり、上記誤り検出訂正符号として誤り検出符号が使用されてもよい。誤り検出訂正の符号種類としては、どのようなものでも良い。誤り検出であれば、パリティ符号、又は、CRC等の巡回冗長検査符号が用いられてもよい。誤り検出訂正であれば、単一エラー訂正、2つエラー検知を行うSECDEDの他、リードソロモン符号が用いられてもよい。
 命令は、RISC-VなどのCPUアーキテクチャ、RISC-Vよりも大きな機能、例えばHTTPリクエスト(POST)に含まれる命令であってもよい。命令は、HTTPリクエスト(プロトコル)に限らず、MQTT、CoAP、QUIC、WebSocket、NATS、Kafka、REST、独自プロトコルなど、様々なプロトコルで使用される命令であってもよい。
 命令処理回路10又は20は、CPU、GPU等を含むLSI等であってもよい。
 図9に示すように、命令処理回路10又は20は、分散処理を行う分散コンピュータ100が備えるものであってもよい。このコンピュータ100が、リソースに余剰があり、命令処理回路10又は20に入力される命令を実行できる場合、命令処理回路10又は20は、当該命令を当該コンピュータ100に実行させる(図9の(1)参照)。リソースに余剰がなく、当該コンピュータ100が当該命令を実行できない場合に、命令処理回路10又は20は、当該命令を他の分散コンピュータ(図9の(2)参照)に転送するようにしてもよい。例えば、命令処理回路10又は20は、命令処理回路10又は20が実装されたコンピュータ110のCPU等のプロセッサ100Aと通信し、入力された命令が前記プロセッサ100Aで実行可能と判別したときには、当該命令をプロセッサ100Aに送信して命令を実行させる。命令処理回路10又は20は、入力された命令が前記プロセッサ100Aで実行できない判別したときには、当該命令を他のコンピュータ110に転送してもよい。他のコンピュータ110のプロセッサ又は演算装置110Aは送信された命令を実行する。このようにすることで、命令が効率よく転送される。
 識別子に含まれる宛先情報つまり命令の送信先は、コンピュータ110内の演算装置110Aがアクセスするキャッシュメモリ、On Chipメモリ、又は、DRAMメモリ等の各種メモリ110Bのアドレスであるメモリアドレスとしてもよい。演算装置110Aは、コンピュータ110の例えばCPU等のプロセッサに含まれる。前記の各種メモリは、前記プロセッサの内部又は外部に設けられればよい。このような構成によれば、演算命令をメモリ110Bに一度置くので、例えば大量の演算命令の実行が必要な場合であっても柔軟で高速な演算処理が可能となる。さらに、複数のコンピュータ110が共有する共有メモリ110Bのアドレスを前記メモリアドレスとして指定することができ、共有メモリに演算命令(演算に使用されるデータも含む)を一度おいて使用できるので、多くの情報処理つまり演算命令の実行を的確に行うことができる。
<本明細書が開示する構成等>
 本明細書が開示する構成、特に、上記第1実施形態、第2実施形態、及び変形例を一例とする構成は、以下のようにも記載され得る。
 メモリ(例えば、バッファメモリ11又は21)に蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路(例えば、命令処理回路10又は20)が実行する命令処理方法であって、前記命令と、当該命令を識別する識別子とを前記メモリに格納するステップであり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、ステップ(例えば、図2のステップS105及びS106、又は、図6の格納処理)と、前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行うステップ(例えば、図2のステップS109及びS111、又は、図3のQoS24による誤り検出)と、前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄するステップ(例えば、図2のステップS112~S114、又は、図7の第1命令等)と、を備える命令処理方法。
 メモリ(例えば、バッファメモリ11又は21)に蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路(例えば、命令処理回路10又は20)であって、前記命令と、当該命令を識別する識別子とを前記メモリに格納する第1回路であり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、第1回路(例えば、バッファメモリ制御部14、又は、OAC23)と、前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行う第2回路(例えば、バッファメモリ制御部14及び誤り検出訂正部15、又は、QoS24)と、前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄する第3回路(例えば、バッファメモリ制御部14及び誤り検出訂正部15、又は、QoS24)と、を備える命令処理回路。
 上記各構成によれば、識別子に対する誤り検出の検出結果に応じて、識別子の訂正及び命令の出力、又は、命令のメモリからの削除を行うので、訂正後の識別子によれば命令を正しく識別でき、命令のメモリからの削除によれば誤った識別子により誤って識別された命令(例えば、誤った長さの命令、誤った宛先の命令)を出力することが防止されるので、ソフトエラーによる悪影響が効果的に抑えられる。そして、上記構成によれば、命令全体を読み出さずに誤り検出訂正を行うので、命令全体を保持する必要がなく、回路規模が大きくならない。以上から、上記構成によれば、小さい回路規模でソフトエラーによる悪影響を効果的に抑えることができるとの効果が得られる。
 10…命令処理回路、11…バッファメモリ、12…入力命令処理部、13…識別子生成部、14…バッファメモリ制御部、15…誤り検出訂正部、20…命令処理回路、21…バッファメモリ、22…PCS/RS、入力命令処理部、13…識別子生成部、14…バッファメモリ制御部、15…誤り検出訂正部、23…OCS、24…QoS、100…コンピュータ、100A…プロセッサ、110…他のコンピュータ、110A…プロセッサ又は演算装置、110B…メモリ。

Claims (7)

  1.  メモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路が実行する命令処理方法であって、
     前記命令と、当該命令を識別する識別子とを前記メモリに格納するステップであり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、ステップと、
     前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行うステップと、
     前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄するステップと、
     を備える命令処理方法。
  2.  前記識別子は、前記命令の長さ情報及び前記命令の宛先情報を含む、
     請求項1に記載の命令処理方法。
  3.  前記命令の末尾には、前記命令の誤りを検出するための誤り検出符号が付与される、
     請求項1又は2に記載の命令処理方法。
  4.  前記誤り検出訂正符号は、単一エラー訂正、2つエラー検知を行うSECDED(Single Error Correction Double Error Detection)符号である、
     請求項1から3のいずれか1項に記載の命令処理方法。
  5.  前記命令処理回路を備えるコンピュータが前記命令を実行できる場合には、当該命令を前記コンピュータに実行させるステップと、
     前記コンピュータが前記命令を実行できない場合には、当該命令を他のコンピュータに転送するステップと、をさらに備える、
     請求項1から4のいずれか1項に記載の命令処理方法。
  6.  前記識別子は、前記命令の宛先情報を含み、
     当該宛先情報は、前記命令処理回路が実行されたコンピュータとは異なる他のコンピュータの演算装置がアクセスするメモリのアドレスである、
     請求項1から5のいずれか1項に記載の命令処理方法。
  7.  メモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路であって、
     前記命令と、当該命令を識別する識別子とを前記メモリに格納する第1回路であり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、第1回路と、
     前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行う第2回路と、
     前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄する第3回路と、
     を備える命令処理回路。
PCT/JP2020/046028 2020-12-10 2020-12-10 命令処理方法及び命令処理回路 WO2022123722A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022567968A JP7485086B2 (ja) 2020-12-10 2020-12-10 命令処理方法及び命令処理回路
PCT/JP2020/046028 WO2022123722A1 (ja) 2020-12-10 2020-12-10 命令処理方法及び命令処理回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/046028 WO2022123722A1 (ja) 2020-12-10 2020-12-10 命令処理方法及び命令処理回路

Publications (1)

Publication Number Publication Date
WO2022123722A1 true WO2022123722A1 (ja) 2022-06-16

Family

ID=81973479

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/046028 WO2022123722A1 (ja) 2020-12-10 2020-12-10 命令処理方法及び命令処理回路

Country Status (2)

Country Link
JP (1) JP7485086B2 (ja)
WO (1) WO2022123722A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009301462A (ja) * 2008-06-17 2009-12-24 Fujitsu Ltd メモリプールへのデータ転送方法及び装置
JP2011209905A (ja) * 2010-03-29 2011-10-20 Sony Corp 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法
JP2020532780A (ja) * 2017-08-11 2020-11-12 グーグル エルエルシー チップ上に常駐するパラメータを用いたニューラルネットワークアクセラレータ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009301462A (ja) * 2008-06-17 2009-12-24 Fujitsu Ltd メモリプールへのデータ転送方法及び装置
JP2011209905A (ja) * 2010-03-29 2011-10-20 Sony Corp 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法
JP2020532780A (ja) * 2017-08-11 2020-11-12 グーグル エルエルシー チップ上に常駐するパラメータを用いたニューラルネットワークアクセラレータ

Also Published As

Publication number Publication date
JP7485086B2 (ja) 2024-05-16
JPWO2022123722A1 (ja) 2022-06-16

Similar Documents

Publication Publication Date Title
US8407478B2 (en) Control message signature for device control
JP5107880B2 (ja) データ転送処理装置及び方法
US10901838B2 (en) Predictive caching for check word snooping in high performance ficon
JP4726601B2 (ja) Pci−expressベースの入力/出力アダプタのためのエンドツーエンドのデータ完全性保護
US8627140B2 (en) Failure management method and computer
JP5010271B2 (ja) エラー訂正コード生成方法、およびメモリ制御装置
JP2007300619A (ja) 異なるデータ保護方法間で切換えにおいてデータの完全性を維持する方法、装置及びプログラム
US6823476B2 (en) Mechanism to improve fault isolation and diagnosis in computers
US8438452B2 (en) Poison bit error checking code scheme
JPS62251949A (ja) 記憶装置の誤り訂正方法
WO2022123722A1 (ja) 命令処理方法及び命令処理回路
JP4723265B2 (ja) エラー検出訂正装置の制御方法、エラー検出訂正装置、情報処理システム、エラー検出訂正装置の制御プログラム、データ処理装置
JP2006254429A (ja) 伝送データの無欠性検査方法及び手段
US20180060273A1 (en) Disk access operation recovery techniques
US8364854B2 (en) Fibre channel input/output data routing system and method
US20120210188A1 (en) Handling corrupted background data in an out of order execution environment
US9720764B2 (en) Uncorrectable memory errors in pipelined CPUs
US11467760B1 (en) Selective erasure decoding for memory devices
US20240045674A1 (en) Transfer Processing Device
TWI789453B (zh) 記憶體和操作該記憶體的方法
US9176806B2 (en) Computer and memory inspection method
US8589735B2 (en) Creating randomly ordered fields while maintaining the temporal ordering based on the value of the fields
US11809272B2 (en) Error correction code offload for a serially-attached memory device
US8533565B2 (en) Cache controller and cache controlling method
JP2019050536A (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: 20965104

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022567968

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20965104

Country of ref document: EP

Kind code of ref document: A1