KR20240034615A - Processor and soft error detection method thereof - Google Patents

Processor and soft error detection method thereof Download PDF

Info

Publication number
KR20240034615A
KR20240034615A KR1020220169753A KR20220169753A KR20240034615A KR 20240034615 A KR20240034615 A KR 20240034615A KR 1020220169753 A KR1020220169753 A KR 1020220169753A KR 20220169753 A KR20220169753 A KR 20220169753A KR 20240034615 A KR20240034615 A KR 20240034615A
Authority
KR
South Korea
Prior art keywords
branch instruction
instruction
value
signature value
branch
Prior art date
Application number
KR1020220169753A
Other languages
Korean (ko)
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 EP23193935.6A priority Critical patent/EP4339782A1/en
Priority to US18/461,120 priority patent/US20240080044A1/en
Priority to CN202311147060.1A priority patent/CN117667508A/en
Publication of KR20240034615A publication Critical patent/KR20240034615A/en

Links

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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)

Abstract

소프트 에러 검출 장치 및 방법이 개시된다. 본 발명의 실시예에 따른 소프트 에러 검출 장치는, 원본 분기 명령어를 복제 분기 명령어로 복제하는 단계; 상기 복제 분기 명령어를 포함하는 제1 명령어 셋을 실행하는 단계; 상기 원본 분기 명령어를 포함하는 제2 명령어 셋을 실행하는 단계; 및 상기 제1 명령어 셋 및 제2 명령어 셋의 실행 결과에 근거하여, 상기 원본 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계;를 포함한다. A soft error detection apparatus and method are disclosed. A soft error detection apparatus according to an embodiment of the present invention includes the steps of duplicating an original branch instruction into a duplicate branch instruction; executing a first set of instructions including the replication branch instruction; executing a second instruction set including the original branch instruction; and determining whether an error exists in execution of the original branch instruction based on execution results of the first instruction set and the second instruction set.

Description

프로세서 및 이의 소프트 에러 검출 방법 {PROCESSOR AND SOFT ERROR DETECTION METHOD THEREOF} Processor and its soft error detection method {PROCESSOR AND SOFT ERROR DETECTION METHOD THEREOF}

본 발명은 에러 검출 방법에 관한 것으로, 프로세서 및 이의 소프트 에러 검출 방법에 관한 것이다. The present invention relates to an error detection method, and to a processor and its soft error detection method.

소프트 에러, 혹은 순간 결함(transient fault)은 중성자 혹은 알파 입자의 충돌 등 하드웨어의 영구적인 결함과 관계없이 외부 요인으로 인해 트랜지스터 등 반도체 소자에 저장되는 비트 값이 "0"에서 "1", 혹은 그 반대로 뒤집히는 오류를 뜻한다. 소프트 에러로 인한 비트 값의 손상은 프로세서의 운영에 있어 치명적인 오작동을 일으킬 수 있다. A soft error, or transient fault, is when the bit value stored in a semiconductor device such as a transistor changes from “0” to “1” or vice versa due to external factors, regardless of a permanent defect in the hardware, such as the collision of neutrons or alpha particles. On the contrary, it means an error that is overturned. Damage to bit values due to soft errors can cause fatal malfunctions in processor operation.

이에, 소프트 에러가 장치 또는 시스템의 운용에 있어 치명적인 오작동으로 이어지기 전에 이를 정확하게 검출하는 것이 요구된다. Accordingly, it is required to accurately detect soft errors before they lead to fatal malfunctions in the operation of the device or system.

본 발명은 상술한 과제를 해결하기 위한 것으로서, 정확하게 소프트 에러를 검출하여 소프트 에러로 인한 오동작을 방지할 수 있는 프로세서 및 이의 소프트 에러 검출 방법을 제공하고자 한다.The present invention is intended to solve the above-mentioned problems, and seeks to provide a processor and a soft error detection method thereof that can accurately detect soft errors and prevent malfunctions due to soft errors.

상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 소프트 에러 검출 장치는, 원본 분기 명령어를 복제 분기 명령어로 복제하는 단계; 상기 복제 분기 명령어를 포함하는 제1 명령어 셋을 실행하는 단계; 상기 원본 분기 명령어를 포함하는 제2 명령어 셋을 실행하는 단계; 및 상기 제1 명령어 셋 및 제2 명령어 셋의 실행 결과에 근거하여, 상기 원본 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계;를 포함한다. A soft error detection device according to an embodiment of the present invention for solving the above technical problem includes: replicating an original branch instruction into a duplicate branch instruction; executing a first set of instructions including the replication branch instruction; executing a second instruction set including the original branch instruction; and determining whether an error exists in execution of the original branch instruction based on execution results of the first instruction set and the second instruction set.

상기 제1 명령어 셋을 실행하는 전후로, 상기 제1 명령어 셋이 실행되는 현재 명령어 블록에 대한 글로벌 시그니처 값을 이용하여 상기 복제 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계;가 더 포함될 수 있다. Before and after executing the first instruction set, determining whether an error exists in execution of the replication branch instruction using a global signature value for the current instruction block in which the first instruction set is executed may be further included.

상기 복제 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계는, 상기 글로벌 시그니처 값을 손상시키는 단계; 및 손상된 상기 글로벌 시그니처 값을 복원시키는 단계;를 포함할 수 있다. Determining whether an error exists in execution of the replication branch instruction may include corrupting the global signature value; and restoring the damaged global signature value.

상기 글로벌 시그니처 값을 손상시키는 단계는, 상기 글로벌 시그니처 값에서 손상 값을 빼는 단계;를 포함하고, 손상된 상기 글로벌 시그니처 값을 복원시키는 단계는, 손상된 상기 글로벌 시그니처 값에서 복원 값을 더하는 단계;를 포함할 수 있다. The step of corrupting the global signature value includes subtracting a damaged value from the global signature value, and the step of restoring the damaged global signature value includes adding a restored value to the damaged global signature value. can do.

상기 손상 값 및 상기 복원 값은, 서로 동일하고, 각각 고유한 값으로 설정될 수 있다. The damage value and the restoration value are the same and may each be set to unique values.

상기 복제 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계는, 손상시키기 전의 상기 글로벌 시그니처 값과 복원된 후의 상기 글로벌 시그니처 값을 비교하는 단계;를 더 포함할 수 있다. The step of determining whether an error exists in execution of the replication branch instruction may further include comparing the global signature value before damage and the global signature value after restoration.

동작 모드에 근거하여, 상기 복제 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계가 선택적으로 수행될 수 있다. Based on the operation mode, the step of determining whether an error exists in execution of the replication branch instruction may be optionally performed.

상기 제1 명령어 셋을 실행하는 단계는, 상기 원본 분기 명령어의 실행에 의해 분기되는 분기 명령어 블록에 대응되는 런타임 시그니처 값을 제1 값으로 설정하는 단계; 상기 복제 분기 명령어를 실행하는 단계; 상기 복제 분기 명령어의 분기 조건을 만족하면 상기 런타임 시그니처 값을 상기 제1 값으로 유지하는 단계; 및 상기 복제 분기 명령어의 분기 조건을 만족하지 아니하면 상기 런타임 시그니처 값을 상기 제1 값에서 상기 제2 값으로 변경하는 단계;를 포함할 수 있다. Executing the first instruction set includes setting a runtime signature value corresponding to a branch instruction block branched by execution of the original branch instruction to a first value; executing the replication branch instruction; maintaining the runtime signature value as the first value when the branch condition of the replication branch instruction is satisfied; and changing the runtime signature value from the first value to the second value if the branch condition of the replication branch instruction is not satisfied.

상기 제1 값은, 상기 복제 분기 명령어가 실행되는 현재 명령어 블록에 대한 고유 시그니처 값과 상기 제2 명령어 셋의 실행 결과 분기되는 분기 명령어 블록 중 하나의 고유 시그니처 값을 배타적 논리합한 값이고, 상기 제2 값은, 상기 현재 명령어 블록에 대한 고유 시그니처 값과 상기 분기 명령어 블록 중 다른 하나의 고유 시그니처 값을 배타적 논리합한 값일 수 있다. The first value is an exclusive OR value of a unique signature value for the current instruction block in which the replication branch instruction is executed and a unique signature value of one of the branch instruction blocks branched as a result of execution of the second instruction set, and the first The value 2 may be an exclusive OR value of the unique signature value for the current instruction block and the unique signature value of another one of the branch instruction blocks.

상기 제1 명령어 셋을 실행하는 단계는, 상기 복제 분기 명령어의 분기 조건을 만족하면 상기 복제 분기 명령어가 실행되는 현재 명령어 블록의 프로그램 카운터를, 상기 현재 명령어 블록의 상기 제1 명령어 셋 및 상기 제2 명령어 셋 사이에 위치하는 영역으로 이동시키는 단계;를 더 포함할 수 있다.Executing the first instruction set includes, when the branch condition of the replication branch instruction is satisfied, the program counter of the current instruction block in which the replication branch instruction is executed, the first instruction set of the current instruction block, and the second instruction set. It may further include moving to an area located between instruction sets.

상기 런타임 시그니처 값은, 상기 현재 명령어 블록과 상기 분기 명령어 블록의 고유 시그니처 값의 차이를 나타낼 수 있다.The runtime signature value may indicate the difference between the unique signature value of the current instruction block and the branch instruction block.

상기 제2 명령어 셋을 실행하는 단계는, 상기 원본 분기 명령어의 분기 조건을 만족하면 분기 명령어 블록 중 제1 분기 명령어 블록으로 이동하는 단계; 및 상기 원본 분기 명령어의 분기 조건을 만족하지 아니하면 상기 분기 명령어 블록 중 제2 분기 명령어 블록으로 이동하는 단계;를 포함할 수 있다. Executing the second instruction set includes moving to a first branch instruction block among branch instruction blocks when the branch condition of the original branch instruction is satisfied; and if the branch condition of the original branch instruction is not satisfied, moving to a second branch instruction block among the branch instruction blocks.

상기 원본 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계는, 상기 현재 명령어 블록에 대한 글로벌 시그니처 값과, 상기 제1 분기 명령어 블록 또는 상기 제2 분기 명령어 블록에 대응되는 런타임 시그니처 값을 배타적 논리합하는 단계; 상기 배타적 논리합한 값과, 상기 제1 분기 명령어 블록 또는 상기 제2 분기 명령어 블록의 고유 시그니처 값을 비교하는 단계; 및 상기 비교 결과에 근거하여 상기 원본 분기 명령어의 실행에 대한 에러 검출 결과를 생성하는 단계;를 포함할 수 있다. The step of determining whether an error exists in the execution of the original branch instruction includes exclusive-ORing a global signature value for the current instruction block and a runtime signature value corresponding to the first branch instruction block or the second branch instruction block. step; Comparing the exclusive OR value with a unique signature value of the first branch instruction block or the second branch instruction block; and generating an error detection result for execution of the original branch instruction based on the comparison result.

상기 제1 명령어 셋의 실행 및 상기 제2 명령어 셋의 실행은 서로 독립적으로 수행될 수 있다. Execution of the first instruction set and execution of the second instruction set may be performed independently of each other.

상기 소프트 에러 검출 방법은, 소프트웨어 기반 명령어 중복기법 중 CHITIN(CompreHensive In-Thread InstructioN replication technique against transient faults) 또는 SWIFT (Software Implemented Fault Tolerance)에 적용될 수 있다. The soft error detection method can be applied to CHITIN (Comprehensive In-Thread Instruction replication technique against transient faults) or SWIFT (Software Implemented Fault Tolerance) among software-based instruction duplication techniques.

상기 소프트 에러 검출 방법은, 조건부로 레지스터 값을 업데이트하는 명령어를 지원하지 아니하는 명령어 집합 구조(Istruction Set Architecture)로 동작하는 프로세서에서 수행될 수 있다.The soft error detection method can be performed on a processor operating with an instruction set architecture that does not support instructions for conditionally updating register values.

상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 프로세서는, 상기 소프트 에러 검출 방법으로 동작하여, 상기 원본 분기 명령어의 실행에 에러가 존재하는 경우 에러 검출 신호를 출력한다.The processor according to an embodiment of the present invention to solve the above technical problem operates using the soft error detection method and outputs an error detection signal when an error exists in execution of the original branch instruction.

상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 소프트 에러 검출 방법은, 현재 명령어 블록의 글로벌 시그니처 값을 손상시키는 단계; 원본 분기 명령어에 대응되는 복제 분기 명령어를 실행하는 단계; 손상된 상기 글로벌 시그니처 값을 복원시키는 단계; 상기 글로벌 시그니처 값의 손상 전의 값과 복원 후의 값을 비교하는 단계; 및 상기 비교 결과에 근거하여 상기 복제 분기 명령어의 실행에 에러가 존재하는지를 검출하는 단계;를 포함한다.A soft error detection method according to an embodiment of the present invention to solve the above technical problem includes the steps of damaging the global signature value of the current instruction block; executing a replication branch instruction corresponding to the original branch instruction; restoring the damaged global signature value; Comparing a value before damage and a value after restoration of the global signature value; and detecting whether an error exists in execution of the replication branch instruction based on the comparison result.

상기 복제 분기 명령어는 상기 원본 분기 명령어와 분기 조건이 동일하고, 상기 복제 분기 명령어를 실행하기에 앞서, 상기 복제 분기 명령어가 실행되는 현재 명령어 블록과 상기 원본 분기 명령어에 의해 분기되는 분기 명령어 블록의 고유 시그니처 값을 차이를 나타내는 런타임 시그니처 값을, 제1 값으로 설정하는 단계; 상기 복제 분기 명령어의 실행 결과, 상기 복제 분기 명령어의 분기 조건이 만족되는 경우 상기 런타임 시그니처 값을 상기 제1 값으로 유지하고, 상기 복제 분기 명령어의 분기 조건이 만족되지 아니하는 경우 상기 런타임 시그니처 값을 상기 제1 값과 상이한 제2 값으로 변경하는 단계; 및 상기 복제 분기 명령어의 실행 결과에 따른 상기 런타임 시그니처 값에 근거하여 상기 원본 분기 명령어의 실행에 에러가 존재하는지를 검출하는 단계;가 더 포함될 수 있다. The replication branch instruction has the same branch condition as the original branch instruction, and before executing the replication branch instruction, the current instruction block in which the replication branch instruction is executed and the branch instruction block branched by the original branch instruction are unique. Setting a runtime signature value indicating a difference between the signature values as a first value; As a result of executing the replication branch instruction, if the branch condition of the replication branch instruction is satisfied, the runtime signature value is maintained as the first value, and if the branch condition of the replication branch instruction is not satisfied, the runtime signature value is maintained. changing a second value different from the first value; and detecting whether an error exists in execution of the original branch instruction based on the runtime signature value according to an execution result of the duplicate branch instruction.

상기 복제 분기 명령어는 상기 원본 분기 명령어와 분기 조건이 상이하고, 상기 복제 분기 명령어의 분기 조건이 만족되지 아니하는 경우, 상기 복제 분기 명령어가 실행되는 현재 명령어 블록과 상기 원본 분기 명령어에 의해 분기되는 분기 명령어 블록의 고유 시그니처 값을 차이를 나타내는 런타임 시그니처 값을, 제1 값으로 설정하는 단계; 상기 원본 분기 명령어의 실행 결과, 상기 원본 분기 명령어의 분기 조건이 만족되지 아니하는 경우, 상기 런타임 시그니처 값을 상기 제1 값과 상이한 제2 값으로 변경하는 단계; 및 상기 분기 분기 명령어 및 상기 원본 분기 명령어의 실행 결과에 따른 상기 런타임 시그니처 값에 근거하여 상기 원본 분기 명령어의 실행에 에러가 존재하는지를 검출하는 단계;가 더 포함될 수 있다. The replication branch instruction has a different branch condition from the original branch instruction, and if the branch condition of the replication branch instruction is not satisfied, the current instruction block in which the replication branch instruction is executed and the branch branched by the original branch instruction Setting a runtime signature value indicating the difference between the unique signature value of the instruction block as a first value; As a result of executing the original branch instruction, if the branch condition of the original branch instruction is not satisfied, changing the runtime signature value to a second value different from the first value; and detecting whether an error exists in execution of the original branch instruction based on the runtime signature value according to the execution result of the branch instruction and the original branch instruction.

본 발명의 실시예에 따른 프로세서 및 이의 소프트 에러 검출 방법에 의하면, 조건부 계산 연산을 사용하지 아니하고도 소프트 에러를 정확하게 검출할 수 있어, 소프트 에러로 인한 오동작이 방지되고 동작 신뢰성이 향상될 수 있다. According to the processor and its soft error detection method according to an embodiment of the present invention, soft errors can be accurately detected without using conditional calculation operations, thereby preventing malfunctions due to soft errors and improving operational reliability.

도 1은 본 발명의 실시예에 따른 소프트 에러 검출 방법을 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 소프트 에러 검출 방법으로 소프트 에러를 검출하는 프로세서를 나타내는 도면이다.
도 3은 본 발명의 실시예에 따른 명령어 블록을 나타내는 도면이다.
도 4A 및 도 4B는 각각 소프트 에러의 예를 나타내는 도면이다.
도 5는 소프트 에러 검출부가 컴파일러와 일체로 구비되는 본 발명의 실시예에 따른 프로세서를 나타내는 도면이다.
도 6은 본 발명의 실시예에 따른 소프트 에러 검출 방법을 나타내는 도면이다.
도 7은 본 발명의 실시예에 따른 현재 명령어 블록 및 분기 명령어 블록을 나타내는 도면이다.
도 8은 본 발명의 실시예에 따른 제1 명령어 셋을 실행하는 단계를 나타내는 도면이다.
도 9A 내지 도 9C는 각각 본 발명의 실시예에 따른 복제 분기 명령어에 에러가 발생한 경우의 프로그램 카운터의 이동 위치를 나타내는 도면이다.
도 10은 본 발명의 실시예에 따른 원본 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계를 나타내는 도면이다.
도 11은 본 발명의 실시예에 따른 소프트 에러 검출 방법을 나타내는 도면이다.
도 12는 도 11의 소프트 에러 검출 방법으로 동작하는 현재 명령어 블록 및 분기 명령어 블록을 나타내는 도면이다.
도 13은 본 발명의 실시예에 따른 소프트 에러 검출 방법을 나타내는 도면이다.
도 14는 도 13의 소프트 에러 검출 방법으로 동작하는 현재 명령어 블록 및 분기 명령어 블록을 나타내는 도면이다.
1 is a diagram showing a soft error detection method according to an embodiment of the present invention.
Figure 2 is a diagram illustrating a processor that detects a soft error using a soft error detection method according to an embodiment of the present invention.
Figure 3 is a diagram showing an instruction block according to an embodiment of the present invention.
Figures 4A and 4B are diagrams showing examples of soft errors, respectively.
Figure 5 is a diagram showing a processor according to an embodiment of the present invention in which a soft error detection unit is integrated with a compiler.
Figure 6 is a diagram showing a soft error detection method according to an embodiment of the present invention.
Figure 7 is a diagram showing a current instruction block and a branch instruction block according to an embodiment of the present invention.
Figure 8 is a diagram showing steps for executing a first instruction set according to an embodiment of the present invention.
Figures 9A to 9C are diagrams showing the movement position of the program counter when an error occurs in a copy branch instruction according to an embodiment of the present invention.
Figure 10 is a diagram showing the step of determining whether an error exists in the execution of an original branch instruction according to an embodiment of the present invention.
Figure 11 is a diagram showing a soft error detection method according to an embodiment of the present invention.
FIG. 12 is a diagram showing a current instruction block and a branch instruction block operating using the soft error detection method of FIG. 11.
Figure 13 is a diagram showing a soft error detection method according to an embodiment of the present invention.
FIG. 14 is a diagram showing a current instruction block and a branch instruction block operating using the soft error detection method of FIG. 13.

이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present invention will be described clearly and in detail so that a person skilled in the art can easily practice the present invention.

도 1은 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)을 나타내는 도면이고, 도 2는 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)으로 소프트 에러를 검출하는 프로세서(200)를 나타내는 도면이고, 도 3은 본 발명의 실시예에 따른 명령어 블록(CBK)을 나타내는 도면이다. FIG. 1 is a diagram showing a soft error detection method 100 according to an embodiment of the present invention, and FIG. 2 is a diagram showing a processor 200 that detects a soft error using the soft error detection method 100 according to an embodiment of the present invention. 3 is a diagram showing a command block (CBK) according to an embodiment of the present invention.

도 1 내지 도 3을 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100) 및 프로세서(200)는 어플리케이션(application)의 실행에 존재하는 소프트 에러를 검출할 수 있다. 이에, 어플리케이션을 실행하는 프로세서(200)의 동작 신뢰성이 보장될 수 있다. 어플리케이션은 본 발명의 실시예에 따른 프로세서(200)에 의해 실행될 수 있는 프로그램, 또는 소프트웨어 모듈이나 소프트웨어 컴포넌트 등의 소프트웨어일 수 있다. 어플리케이션은 다수의 명령어로 구성될 수 있다. 소프트 에러란, 하드웨어의 영구적 결함과 무관하게 외부 요인으로 인해 반도체 소자에 저장되는 비트 값이 의도치 않게 변경되는 일시적 에러를 의미한다. 소프트 에러를 야기하는 외부 요인 중 하나는 공기 중의 중성자의 영향일 수 있다. Referring to Figures 1 to 3, the soft error detection method 100 and processor 200 according to an embodiment of the present invention can detect soft errors that exist in the execution of an application. Accordingly, the operational reliability of the processor 200 executing the application can be guaranteed. The application may be a program that can be executed by the processor 200 according to an embodiment of the present invention, or software such as a software module or software component. An application can consist of multiple commands. A soft error refers to a temporary error in which the bit value stored in a semiconductor device is unintentionally changed due to external factors, regardless of a permanent defect in the hardware. One of the external factors causing soft errors can be the effect of neutrons in the air.

본 발명의 실시예에 따른 소프트 에러 검출 방법(100)은, 원본 분기 명령어(OBC)를 복제 분기 명령어(CBC)로 복제하는 단계(S120), 복제 분기 명령어(CBC)를 포함하는 제1 명령어 셋(CS1)을 실행하는 단계(S140), 원본 분기 명령어(OBC)를 포함하는 제2 명령어 셋(CS2)을 실행하는 단계(S160), 및 제1 명령어 셋(CS1) 및 제2 명령어 셋(CS2)의 실행에 에러가 존재하는지에 근거하여 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지를 판단하는 단계(S180)를 포함한다. The soft error detection method 100 according to an embodiment of the present invention includes copying an original branch instruction (OBC) into a clone branch instruction (CBC) (S120), a first instruction set including the clone branch instruction (CBC) (CS1) (S140), executing the second instruction set (CS2) including the original branch instruction (OBC) (S160), and the first instruction set (CS1) and the second instruction set (CS2) ) includes a step (S180) of determining whether an error exists in the execution of the original branch instruction (OBC) based on whether an error exists in the execution of the original branch instruction (OBC).

원본 분기 명령어(OBC)는 원본 명령어 중 하나일 수 있다. 복제 분기 명령어(CBC)는 원본 명령어에 대해 복제되는 복제 명령어 중 하나일 수 있다. 원본 명령어 및 복제 명령어에는 어플리케이션의 실행에 요구되는 'ADD'(덧셈) 명령어, 'MULT'(곱셈) 명령어, 'XOR'(배타적 논리합) 명령어, 'STR'(저장) 명령어, 'JUMP' 명령어, 'BRANCH' 명령어, 'COMPARE' 명령어 및 'MOV'(이동) 명령어 등 다양한 명령어가 포함될 수 있다. 분기 명령어란 'BRANCH' 명령어, 'JUMP' 명령어 등과 같이, 명령어 실행의 흐름을 변경하거나 다른 루틴(routine)을 호출하는데 사용되는 명령어를 의미한다. 이에, 분기 명령어를 실행한 후의 프로그램 카운터(program counter)는 해당 명령어에 대한 프로그램 카운터에 연속되지 아니하거나, 해당 명령어가 실행되는 명령어 블록과 다른 명령어 블록으로 명령어 흐름이 변경될 수 있다. The original branch instruction (OBC) may be one of the original instructions. A clone branch instruction (CBC) may be one of the clone instructions that is copied to the original instruction. The original and duplicate instructions include the 'ADD' (addition) instruction, 'MULT' (multiplication) instruction, 'XOR' (exclusive OR) instruction, 'STR' (save) instruction, and 'JUMP' instruction required for the execution of the application. Various commands may be included, such as the 'BRANCH' command, the 'COMPARE' command, and the 'MOV' (movement) command. A branch instruction refers to an instruction used to change the flow of instruction execution or call another routine, such as the 'BRANCH' instruction or the 'JUMP' instruction. Accordingly, the program counter after executing the branch instruction may not be continuous with the program counter for the corresponding instruction, or the instruction flow may change to an instruction block different from the instruction block in which the corresponding instruction is executed.

예를 들어, 현재 명령어 블록(CBK)에서 복제 분기 명령어(CBC)가 제x 프로그램 카운터(PCx)에서 실행되는 경우, 복제 분기 명령어(CBC)의 실행에 의해 명령어 흐름이 제x+1 프로그램 카운터(PCx+1)가 아닌, 복제 분기 명령어(CBC)가 지시하는 현재 명령어 블록(CBK) 내의 다른 프로그램 카운터에 대응되는 위치로 이동할 수 있다. 또는, 현재 명령어 블록(CBK)의 복제 분기 명령어(CBC)가 실행된 후 명령어 흐름이 다른 명령어 블록으로 이동될 수 있다. 현재 명령어 블록(CBK)은 명령어 블록(BK1~BKn) 중 하나로, 현재 시점에서 실행되는 원본 명령어 및 복제 명령어가 위치하는 명령어 블록(BK1~BKn)을 의미할 수 있다.For example, if a replication branch instruction (CBC) in the current instruction block (CBK) is executed at the PCx+1), it can be moved to a location corresponding to another program counter in the current instruction block (CBK) indicated by the replication branch instruction (CBC). Alternatively, the instruction flow may be moved to another instruction block after the clone branch instruction (CBC) of the current instruction block (CBK) is executed. The current instruction block (CBK) is one of the instruction blocks (BK1 to BKn) and may refer to the instruction block (BK1 to BKn) where the original instruction and duplicate instruction executed at the current time are located.

제1 명령어 셋(CS1)은 복제 분기 명령어(CBC)와 함께 다른 명령어를 포함할 수 있다. 제2 명령어 셋(CS2)은 원본 분기 명령어(OBC)와 함께 다른 명령어를 포함할 수 있다. 복제 분기 명령어(CBC)를 포함하는 제1 명령어 셋(CS1)과 원본 분기 명령어(OBC)를 포함하는 제2 명령어 셋(CS2)은 현재 명령어 블록(CBK)에 함께 포함될 수 있다. 즉, 복제 분기 명령어(CBC)는 원본 분기 명령어(OBC)와 동일한 명령어 블록으로 복제될 수 있다. 다만, 이에 한정되는 것은 아니고, 소프트 에러를 검출하기 위해 본 발명의 실시예에 따른 소프트 에러 검출 방법(100) 또는 프로세서(200)에 적용되는 알고리즘에 따라, 제1 명령어 셋(CS1) 및 제2 명령어 셋(CS2)은 서로 다른 명령어 블록에 위치할 수도 있다. The first instruction set (CS1) may include other instructions along with the replication branch instruction (CBC). The second instruction set (CS2) may include other instructions along with the original branch instruction (OBC). A first instruction set (CS1) including a clone branch instruction (CBC) and a second instruction set (CS2) including an original branch instruction (OBC) may be included together in the current instruction block (CBK). That is, the clone branch instruction (CBC) can be copied into the same instruction block as the original branch instruction (OBC). However, it is not limited to this, and according to the algorithm applied to the soft error detection method 100 or the processor 200 according to an embodiment of the present invention to detect a soft error, the first instruction set (CS1) and the second instruction set (CS1) The instruction set (CS2) may be located in different instruction blocks.

도 4A 및 도 4B는 각각 소프트 에러의 예를 나타내는 도면이다. Figures 4A and 4B are diagrams showing examples of soft errors, respectively.

먼저 도 2 및 도 4A를 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출부(260)는 데이터 흐름에 대한 소프트 에러를 검출할 수 있다. 데이터 흐름에 대한 소프트 에러는 데이터 값이 손상되는 에러로, 프로그램 카운터 또는 명령어 블록(BK1~BKn)의 이동을 야기하지 아니하는 소프트 에러를 의미한다. First, referring to FIGS. 2 and 4A, the soft error detection unit 260 according to an embodiment of the present invention can detect soft errors in the data flow. Soft errors for data flow are errors that damage data values and do not cause movement of the program counter or instruction blocks (BK1 to BKn).

도 4A는 원본 명령어가 제1 레지스터에 저장되는 제1 원본 값(R1)에 제2 레지스터에 저장되는 제2 원본 값(R2)을 더하여 제3 레지스터에 원본 결과 값(R3)으로 저장하는 'ADD' 명령어인 예를 도시한다. 이때, 제1 원본 값(R1)을 복제한 제1 복제 값(R1*) 및 제2 원본 값(R2)을 복제한 제2 복제 값(R2*)에 대해 동일한 'ADD' 명령어를 별도로 수행함으로써, 원본 명령어가 복제 명령어로 복제될 수 있다. 도 4A의 예에서, 원본 명령어의 결과 값, 즉 원본 결과 값(R3)이 에러로 인해 손상되었다고 하자. 원본 명령어의 원본 결과 값(R3)과 복제 명령어의 복제 결과 값(R3*)을 비교하여 에러의 발생이 검출될 수 있다. Figure 4A shows 'ADD' in which the original instruction adds the second original value (R2) stored in the second register to the first original value (R1) stored in the first register and stores the original result value (R3) in the third register. ' An example of a command is shown. At this time, by separately performing the same 'ADD' command for the first duplicate value (R1*), which duplicates the first original value (R1), and the second duplicate value (R2*), which duplicates the second original value (R2) , the original command can be copied with a clone command. In the example of Figure 4A, let's say that the result value of the original instruction, that is, the original result value (R3), is damaged due to an error. The occurrence of an error can be detected by comparing the original result value (R3) of the original instruction and the duplicate result value (R3*) of the duplicate instruction.

다음으로 도 2 및 도 4B를 참조하면, 현재 명령어 블록(CBK)에서 제1 명령어 블록(BK1)으로의 이동을 지시하는 'BRANCH'명령어의 실행 결과, 제1 명령어 블록(BK1)이 아닌 제2 명령어 블록(BK2)으로 이동되는 에러가 발생할 수 있다. 이러한 에러는 제어 흐름에 대한 소프트 에러로 규정된다. 제어 흐름에 대한 소프트 에러는 데이터 흐름의 경우와 달리, 프로그램의 실행 순서 또는 실행 위치의 손상이 야기되는 에러를 의미한다. Next, referring to FIGS. 2 and 4B, as a result of executing the 'BRANCH' instruction indicating movement from the current instruction block (CBK) to the first instruction block (BK1), the second instruction block (BK1) rather than the first instruction block (BK1) An error may occur when moving to the command block (BK2). These errors are defined as soft errors for control flow. Unlike the case of data flow, a soft error for control flow refers to an error that causes damage to the execution order or execution location of the program.

따라서 데이터 흐름에 대한 에러와 대비하여 제어 흐름에 대한 에러 검출이 더 용이하지 아니할 수 있다. 즉, 제어 흐름을 야기하는 분기 명령어가 에러에 더 취약할 수 있다. 도 4B는 제어 흐름에 대한 소프트 에러 중 특히 Worng-Direction 에러를 도시한다. 제어 흐름에 대한 소프트 에러 중 원본 분기 명령어(OBC)가 지시하는 바에 따른 명령어 블럭(BK1~BKn)으로 이동하였으나, 이동된 명령어 블록(BK1~BKn) 내의 잘못된 위치로 이동하는 Unwanted-Jump 에러도 발생할 수 있다. Therefore, it may not be easier to detect errors in the control flow compared to errors in the data flow. In other words, branch instructions that cause control flow may be more vulnerable to errors. Figure 4B shows soft errors for control flow, particularly Worng-Direction errors. Among the soft errors in the control flow, an Unwanted-Jump error may occur in which the instruction block (BK1~BKn) is moved to the wrong location within the moved instruction block (BK1~BKn) even though the instruction block (BK1~BKn) is moved as instructed by the original branch instruction (OBC). You can.

다시 도 1 내지 도 3을 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100) 및 프로세서(200)는 전술된 데이터 흐름에 대한 소프트 에러 및 제어 흐름에 대한 소프트 에러를 모두 검출할 수 있다. 또한, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100) 및 프로세서(200)는 데이터 흐름과 제어 흐름에 동시에 소프트 에러가 발생하는 경우에 대해서도 그 에러를 정확히 검출할 수 있다.Referring again to FIGS. 1 to 3, the soft error detection method 100 and processor 200 according to an embodiment of the present invention can detect both the soft errors for the data flow and the soft errors for the control flow described above. there is. Additionally, the soft error detection method 100 and processor 200 according to an embodiment of the present invention can accurately detect soft errors even when soft errors occur simultaneously in data flow and control flow.

소프트 에러로부터 시스템을 보호하기 위한 방안으로, 하드웨어 기반 기법 및 소프트웨어 기반 기법으로 나뉠 수 있다. 본 발명의 실시예에 따른 소프트 에러 검출 방법(100) 및 프로세서(200)는 후자와 관련될 수 있다. 이때, 소프트웨어 기반의 소프트 에러 검출 방법이라 함은, 하드웨어의 변경이 수반되지 아니하거나 그 변경이 미비한 정도에 그치는 것을 의미한다. 본 발명의 실시예에 따른 소프트 에러 검출 방법(100) 및 프로세서(200)는 소프트웨어 기반으로 소프트 에러를 검출함에 있어, 조건부 계산 연산을 사용하지 아니하고도 소프트 에러를 정확하게 검출할 수 있다. As a method to protect the system from soft errors, it can be divided into hardware-based techniques and software-based techniques. The soft error detection method 100 and processor 200 according to an embodiment of the present invention may be related to the latter. At this time, a software-based soft error detection method means that there is no change in hardware or that the change is only minimal. The soft error detection method 100 and processor 200 according to an embodiment of the present invention detect soft errors based on software, and can accurately detect soft errors without using conditional calculation operations.

본 발명의 실시예에 따른 프로세서(200)는 프로세서 코어(220), 컴파일러(240), 명령어 블록(BK1~BKn) 및 소프트 에러 검출부(260)을 포함하여, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)으로 소프트 에러를 정확하게 검출할 수 있다. 프로세서(200)는 중앙 처리 장치(Central Processing Unit), 어플리케이션 프로세서(Application Processor), 또는 그래픽 프로세서, 데이터 프로세서 및 통신 프로세서 등의 전용 프로세서일 수 있다. 본 발명의 실시예에 따른 프로세서(200)는 프로세서 기반의 다양한 디바이스 또는 시스템에 포함될 수 있다. 예를 들어, 본 발명의 실시예에 따른 프로세서(200)는 내비게이션 디바이스, 통신 디바이스, 모바일 폰, 컴퓨터, 휴대용 컴퓨터 등에 포함될 수 있다. The processor 200 according to an embodiment of the present invention includes a processor core 220, a compiler 240, instruction blocks (BK1 to BKn), and a soft error detection unit 260, and detects soft errors according to an embodiment of the present invention. The detection method 100 can accurately detect soft errors. The processor 200 may be a central processing unit, an application processor, or a dedicated processor such as a graphics processor, a data processor, and a communication processor. The processor 200 according to an embodiment of the present invention may be included in various processor-based devices or systems. For example, the processor 200 according to an embodiment of the present invention may be included in a navigation device, a communication device, a mobile phone, a computer, a portable computer, etc.

프로세서 코어(220)는 복제 분기 명령어(CBC)를 포함하는 제1 명령어 셋(CS1) 및 원본 분기 명령어(OBC)를 포함하는 제2 명령어 셋(CS2)을 실행한다(S140, S180). 프로세서 코어(220)는 RISC-V (Reduced Instruction Set Computer-V)의 명령어 셋 구조(Istruction Set Architecture: ISA)에 기반하여, 요구되는 어플리케이션을 실행하기 위한 원본 명령어 및 복제 명령어를 처리할 수 있다. 또는 프로세서 코어(220)는 CISC(Complex Instruction Set Computer) 또는 ARM(Advanced RISC Machine) 구조에 기반하여 어플리케이션을 실행할 수 있다. The processor core 220 executes a first instruction set (CS1) including a copy branch instruction (CBC) and a second instruction set (CS2) including an original branch instruction (OBC) (S140, S180). The processor core 220 is based on the Instruction Set Architecture (ISA) of RISC-V (Reduced Instruction Set Computer-V) and can process original instructions and duplicate instructions for executing required applications. Alternatively, the processor core 220 may execute an application based on a Complex Instruction Set Computer (CISC) or Advanced RISC Machine (ARM) structure.

프로세서 코어(220)에는 원본 명령어 및 복제 명령어를 실행하기 위한 산술 논리 장치(arithmetic logic unit: ALU), 레지스터 셋(register set) 및 컨트롤러(controller) 등이 포함될 수 있다. 프로세서 코어(220)는 멀티 코어(multi-core)로 구비될 수 있다. The processor core 220 may include an arithmetic logic unit (ALU), a register set, and a controller for executing original instructions and duplicate instructions. The processor core 220 may be provided as a multi-core.

컴파일러(240)는 프로세서 코어(220)가 원본 명령어를 실행할 수 있도록, 어플리케이션의 소스 코드(source code)를 기계어로 변환한다. 복제 명령어는 컴파일러(240)에 의해 기계어 또는 어셈블리어 버전으로 변환된 원본 명령어에 대한 복제를 통해 생성될 수 있다(S120). 즉, 원본 명령어의 복제 명령어로의 복제는 컴파일러(240)에 의해 수행될 수 있다. 각각 원본 명령어 및 복제 명령어에 속하는 원본 분기 명령어(OBC) 및 복제 분기 명령어(CBC)도 마찬가지이다. The compiler 240 converts the source code of the application into machine language so that the processor core 220 can execute the original instructions. The duplicate instruction may be generated through duplication of the original instruction converted into a machine language or assembly language version by the compiler 240 (S120). That is, replication of the original instruction into a duplicate instruction may be performed by the compiler 240. The same applies to the original branch instruction (OBC) and clone branch instruction (CBC), which belong to the original instruction and clone instruction, respectively.

컴파일러(240)는 런타임(runtime)으로 컴파일링을 수행할 수 있다. 컴파일러(240)는 회로, 프로그래머블 로직(programmable logic) 등과 같은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합으로 구현되는 로직일 수 있다. 컴파일러(240)는 또한 어플리케이션의 실행에 최적화되도록, 어플리케이션을 다수의 명령어 블록(BK1~BKn)으로 분해하고 각각의 명령어 블록(BK1~BKn)에 대한 넘버링(numbering)을 수행할 수 있다. 예를 들어, 각각의 명령어 블록(BK1~BKn)은 제1 명령어 블록(BK1) 내지 제n 명령어 블록(BKn)으로 넘버링될 수 있다. The compiler 240 may perform compilation at runtime. The compiler 240 may be logic implemented as hardware such as circuits, programmable logic, etc., firmware, software, or a combination thereof. The compiler 240 may also decompose the application into a plurality of instruction blocks (BK1 to BKn) and perform numbering for each instruction block (BK1 to BKn) to optimize execution of the application. For example, each instruction block (BK1 to BKn) may be numbered as a first instruction block (BK1) to an n-th instruction block (BKn).

컴파일러(240)의 동작을 최적화하기 위해, 어플리케이션의 실행 중에 횡단 가능한 모든 경로를 나타내는 제어 흐름 그래프(Control Flow Graph)가 사용될 수 있다. 각각의 명령어 블록(BK1~BKn)은 제어 흐름 그래프에서 노드(node)의 형태로 처리될 수 있다. To optimize the operation of the compiler 240, a control flow graph representing all paths that can be traversed during execution of an application may be used. Each instruction block (BK1 to BKn) can be processed in the form of a node in the control flow graph.

명령어 블록(BK1~BKn)은 프로세서(200)에 요구되는 어플리케이션의 실행을 위한 명령어의 흐름을 나타낸다. 명령어 블록(BK1~BKn)은 각각 'ADD' 명령어, 'MULT' 명령어, 'XOR' 명령어, 'STR' 명령어, 'JUMP' 명령어, 'BRANCH' 명령어, 'COMPARE' 명령어 및 'MOV' 명령어 등 적어도 하나 이상의 명령어를 포함할 수 있다. 명령어 블록(BK1~BKn)은 기본 블록(Basic Block)일 수 있다. 이 경우, 엔트리 포인트 및 엑시트 포인트로 명령어 블록(BK1~BKn)이 구분될 수 있다. 즉, 명령어 블록(BK1~BKn)은 엔트리 포인트 이외에는 해당 명령어 블럭(BK1~BKn)으로 엔트리(entry)되는 분기가 없고, 엑시트 포인트 이외에는 엑시트(exit)되는 분기가 없는 직선 코드열로 규정될 수 있다. 다만, 명령어 블록(BK1~BKn)가 분기 명령어를 포함하는 경우, 분기 명령어를 통해 엑시트될 수 있다. The instruction blocks (BK1 to BKn) represent the flow of instructions for executing an application required by the processor 200. Instruction blocks (BK1 to BKn) each contain at least an 'ADD' instruction, a 'MULT' instruction, a 'XOR' instruction, a 'STR' instruction, a 'JUMP' instruction, a 'BRANCH' instruction, a 'COMPARE' instruction, and a 'MOV' instruction. It may contain one or more instructions. The instruction blocks (BK1 to BKn) may be basic blocks. In this case, instruction blocks (BK1 to BKn) can be divided into entry points and exit points. In other words, the instruction block (BK1 to BKn) can be defined as a straight code string with no branches entering the corresponding instruction block (BK1 to BKn) other than the entry point, and no branch exiting other than the exit point. . However, if the instruction block (BK1 to BKn) includes a branch instruction, it can be exited through the branch instruction.

소프트 에러 검출부(260)는 제1 명령어 셋(CS1) 및 제2 명령어 셋(CS2)의 실행에 에러가 존재하는지를 판단한다(S180). 즉, 소프트 에러 검출부(260)는 제1 명령어 셋(CS1)의 실행 결과로부터 복제 분기 명령어(CBC)의 실행에 에러 존재 여부를 판단하고(S160), 제1 명령어 셋(CS1) 및 제2 명령어 셋(CS2)의 실행 결과에 근거하여 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지를 판단할 수 있다(S150). 소프트 에러 검출부(260)는 제1 명령어 셋(CS1) 및 제2 명령어 셋(CS2)의 실행에 에러가 존재하는지에 대한 판단 결과를 에러 검출 신호(XED)로 출력할 수 있다. The soft error detection unit 260 determines whether an error exists in the execution of the first command set (CS1) and the second command set (CS2) (S180). That is, the soft error detection unit 260 determines whether an error exists in the execution of the replication branch instruction (CBC) from the execution result of the first instruction set (CS1) (S160), and determines whether the first instruction set (CS1) and the second instruction are Based on the execution result of the set (CS2), it can be determined whether an error exists in the execution of the original branch instruction (OBC) (S150). The soft error detection unit 260 may output a determination result of whether an error exists in the execution of the first command set (CS1) and the second command set (CS2) as an error detection signal (XED).

소프트 에러 검출부(260)는 회로, 프로그래머블 로직 등과 같은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합으로 구현되는 로직일 수 있다. 도 2는 소프트 에러 검출부(260)가 컴파일러(240)와 별도의 모듈로 구비되는 예를 도시한다. 다만, 이에 한정되는 것은 아니다. The soft error detection unit 260 may be logic implemented by hardware such as a circuit, programmable logic, firmware, software, or a combination thereof. Figure 2 shows an example in which the soft error detection unit 260 is provided as a separate module from the compiler 240. However, it is not limited to this.

도 5는 소프트 에러 검출부(260)가 컴파일러(240)와 일체로 구비되는 본 발명의 실시예에 따른 프로세서(200)를 나타내는 도면이다. FIG. 5 is a diagram showing the processor 200 according to an embodiment of the present invention in which the soft error detection unit 260 is integrated with the compiler 240.

도 5를 참조하면, 본 발명의 실시예에 따른 프로세서(200)의 소프트 에러 검출부(260)는 컴파일러(240)와 일체의 모듈로 구비될 수 있다. 이때, 소프트 에러 검출부(260)는 컴파일러(240)를 구성하는 세 개의 페이즈(phase), 즉 전단부(Front End), 최적화부(Optimizer) 및 후단부(Back End) 중 적어도 하나에 대한 에러 핸들링 로직으로 구현될 수 있다. Referring to FIG. 5, the soft error detection unit 260 of the processor 200 according to an embodiment of the present invention may be provided as an integrated module with the compiler 240. At this time, the soft error detection unit 260 performs error handling for at least one of the three phases constituting the compiler 240, that is, the front end, optimizer, and back end. It can be implemented with logic.

다시 도 1 내지 도 3을 참조하면, 현재 명령어 블록(CBK)은 4개의 영역으로 구분될 수 있다. 이때, 제1 명령어 셋(CS1)은 제2 영역(RG2)에 위치하고, 제2 명령어 셋(CS2)은 제4 영역(RG4)에 위치할 수 있다. 제2 영역(RG2) 및 제4 영역(RG4) 이외에는 제1 명령어 셋(CS1) 및 제2 명령어 셋(CS2) 이외의 다른 명령어가 위치할 수 있다. Referring again to FIGS. 1 to 3, the current instruction block (CBK) can be divided into four areas. At this time, the first command set CS1 may be located in the second area RG2, and the second command set CS2 may be located in the fourth area RG4. In addition to the second area RG2 and the fourth area RG4, other commands other than the first command set CS1 and the second command set CS2 may be located.

제1 시그니처 값(SIG1)은 현재 명령어 블록(CBK)에 대한 고유 시그니처 값을 나타낸다. 고유 시그니처 값은 각각의 명령어 블록(BK1~BKn)에 대해 고유한 값으로 설정될 수 있다. 예를 들어, 제1 명령어 블록(BK1)에 대한 고유 시그니처 값과 제2 명령어 블록(BK2)에 대한 고유 시그니처 값은 상이하게 설정될 수 있다. The first signature value (SIG1) represents a unique signature value for the current instruction block (CBK). The unique signature value can be set to a unique value for each instruction block (BK1 to BKn). For example, the unique signature value for the first instruction block (BK1) and the unique signature value for the second instruction block (BK2) may be set differently.

본 발명의 실시예에 따른 소프트 에러 검출 방법(100) 및 프로세서(200)는 고유 시그니처 값에 대응되는 글로벌 시그니처 값을 이용하여 소프트 에러를 보다 정확하게 검출할 수 있다. 이하에서는 본 발명의 실시예에 따른 고유 시그니처 값을 이용하여 소프트 에러를 검출하는 방법에 대해 자세히 설명한다. The soft error detection method 100 and the processor 200 according to an embodiment of the present invention can more accurately detect soft errors by using the global signature value corresponding to the unique signature value. Hereinafter, a method for detecting soft errors using a unique signature value according to an embodiment of the present invention will be described in detail.

도 6은 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)을 나타내는 도면이고, 도 7은 본 발명의 실시예에 따른 현재 명령어 블록(CBK) 및 분기 명령어 블록(BBK)을 나타내는 도면이다. FIG. 6 is a diagram showing a soft error detection method 100 according to an embodiment of the present invention, and FIG. 7 is a diagram showing a current instruction block (CBK) and a branch instruction block (BBK) according to an embodiment of the present invention.

도 6 및 도 7을 참조하면, 도 6의 소프트 에러 검출 방법(100)은 도 1과 마찬가지로, 원본 분기 명령어(OBC)를 복제 분기 명령어(CBC)로 복제하는 단계(S120), 복제 분기 명령어(CBC)를 포함하는 제1 명령어 셋(CS1)을 실행하는 단계(S140), 원본 분기 명령어(OBC)를 포함하는 제2 명령어 셋(CS2)을 실행하는 단계(S160), 및 제1 명령어 셋(CS1) 및 제2 명령어 셋(CS2)의 실행에 에러가 존재하는지에 근거하여 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지를 판단하는 단계(S180)를 포함한다. 나아가, 도 6의 소프트 에러 검출 방법(100)은 제1 명령어 셋(CS1)을 실행하는 전후로, 복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 판단하는 단계(S130)를 더 포함할 수 있다. Referring to FIGS. 6 and 7, the soft error detection method 100 of FIG. 6, similar to FIG. 1, includes a step of replicating the original branch instruction (OBC) to a replication branch instruction (CBC) (S120), and a replication branch instruction ( Executing the first instruction set (CS1) including the CBC (S140), executing the second instruction set (CS2) including the original branch instruction (OBC) (S160), and the first instruction set (S160) It includes a step (S180) of determining whether an error exists in the execution of the original branch instruction (OBC) based on whether an error exists in the execution of the CS1) and the second instruction set (CS2). Furthermore, the soft error detection method 100 of FIG. 6 may further include a step (S130) of determining whether an error exists in the execution of the copy branch instruction (CBC) before and after executing the first instruction set (CS1). .

복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 판단하는 단계(S130)는 글로벌 시그니처 값을 이용하여 그 에러 여부를 검출할 수 있다. 이를 위해, 복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 판단하는 단계(S130)는, 현재 명령어 블록(CBK)에 대한 글로벌 시그니처 값(global signature value, GSR)을 손상시키는 단계(S132), 및 손상된 글로벌 시그니처 값(GSR)을 복원시키는 단계(S134)를 포함할 수 있다. 복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 판단하는 단계(S130)는 소프트 에러 검출부(260)에 의해 수행될 수 있다. In the step (S130) of determining whether an error exists in the execution of the replication branch instruction (CBC), the error can be detected using the global signature value. To this end, the step of determining whether an error exists in the execution of the replication branch instruction (CBC) (S130) includes the step of damaging the global signature value (GSR) for the current instruction block (CBK) (S132), and restoring a damaged global signature value (GSR) (S134). The step S130 of determining whether an error exists in the execution of the copy branch instruction (CBC) may be performed by the soft error detection unit 260.

전술된 바와 같이 본 발명의 실시예에 의하면 명령어 블록마다 고유의 시그니처 값이 부여한다. 예를 들어, 현재 명령어 블록(CBK)에 대한 고유 시그니처 값은 제1 시그니처 값(SIG1)으로 설정되고, 제1 분기 명령어 블록(BBK1)에 대한 고유 시그니처 값은 제2-1 시그니처 값(SIG2-1)으로 설정되며, 제2 분기 명령어 블록(BBK2)에 대한 고유 시그니처 값은 제2-2 시그니처 값(SIG2-2)으로 설정될 수 있다. As described above, according to an embodiment of the present invention, a unique signature value is assigned to each instruction block. For example, the unique signature value for the current instruction block (CBK) is set to the first signature value (SIG1), and the unique signature value for the first branch instruction block (BBK1) is set to the 2-1 signature value (SIG2- 1), and the unique signature value for the second branch instruction block (BBK2) may be set to the 2-2 signature value (SIG2-2).

글로벌 시그니처 값(GSR)은 현재 시점에서 명령어가 실행되는 현재 명령어 블록(CBK)의 제1 시그니처 값(SIG1)과 동일한 값일 수 있다. 글로벌 시그니처 값(GSR)은 명령어가 실행되는 명령어 블록이 변경되는 시점에서 변경되는 명령어 블록의 고유 시그니처 값으로 업데이트될 수 있다. 글로벌 시그니처 값(GSR)은 도 2의 프로세서(200)에 포함되는 프로세서 레지스터(미도시) 중 하나에 저장될 수 있다. The global signature value (GSR) may be the same value as the first signature value (SIG1) of the current command block (CBK) in which the command is executed at the current time. The global signature value (GSR) can be updated with the unique signature value of the instruction block that changes at the time the instruction block in which the instruction is executed changes. The global signature value (GSR) may be stored in one of the processor registers (not shown) included in the processor 200 of FIG. 2.

글로벌 시그니처 값(GSR)에서 손상 값(DV)을 빼는 단계(S132), 즉 글로벌 시그니처 값(GSR)에서 손상 값(DV)을 빼는 뺄셈 명령어는 제1 명령어 셋(CS1)에 앞서 실행될 수 있다. 이때, 글로벌 시그니처 값(GSR)에서 손상 값(DV)을 빼는 뺄셈 명령어는 제1 명령어 셋(CS1)과 함께 제2 영역(RG2)에 함께 위치될 수 있다. The step of subtracting the damage value (DV) from the global signature value (GSR) (S132), that is, the subtraction instruction for subtracting the damage value (DV) from the global signature value (GSR), may be executed before the first instruction set (CS1). At this time, the subtraction instruction for subtracting the damage value (DV) from the global signature value (GSR) may be located in the second region RG2 along with the first instruction set (CS1).

손상 값(DV)은 다음의 조건을 만족할 수 있는 값으로 설정될 수 있다. 첫째, 손상된 글로벌 시그니처 값(GSR)이 어플리케이션에 포함되는 다른 명령어 블록의 고유 시그니처 값과 중복되지 않아야 한다. 예를 들어, 어플리케이션에 포함되는 명령어 블록의 고유 시그니처 값이 서로 "100"의 차이를 갖도록 설정된다면, 손상 값(DV)은 "100"이 아닌 다른 값으로 설정되어야 한다. 둘째, 손상 값(DV)은 어플리케이션에 포함되는 다른 명령어 블록의 손상 값과 중복되지 않아야 한다. 예를 들어, 제1 명령어 블록에서의 손상 값이 "10"인 경우 제2 명령어 블록에서의 손상 값은 "10"이 아닌 다른 값으로 설정되어야 한다.Damage value (DV) can be set to a value that satisfies the following conditions. First, the damaged global signature value (GSR) must not overlap with the unique signature value of other instruction blocks included in the application. For example, if the unique signature values of the command blocks included in the application are set to have a difference of "100", the damage value (DV) must be set to a value other than "100". Second, the damage value (DV) should not overlap with the damage values of other instruction blocks included in the application. For example, if the damage value in the first instruction block is "10", the damage value in the second instruction block must be set to a value other than "10".

글로벌 시그니처 값(GSR)을 손상시킨 후, 제1 명령어 셋(CS1)이 실행될 수 있다(S140).After corrupting the global signature value (GSR), the first instruction set (CS1) may be executed (S140).

도 8은 본 발명의 실시예에 따른 제1 명령어 셋(CS1)을 실행하는 단계(S140)를 나타내는 도면이다. Figure 8 is a diagram showing a step (S140) of executing the first instruction set (CS1) according to an embodiment of the present invention.

도 7 및 도 8을 참조하면, 본 발명의 실시예에 따른 제1 명령어 셋(CS1)을 실행하는 단계(S140)는, 런타임 시그니처 값(runtime signature value, RTS)을 제1 값(VA1)으로 설정하는 단계(S141), 복제 분기 명령어(CBC)를 실행하는 단계(S142), 복제 분기 명령어(CBC)의 분기 조건을 만족하면(S143의 "Y") 런타임 시그니처 값(RTS)을 제1 값(VA1)으로 유지하는 단계(S144) 및 복제 분기 명령어(CBC)의 분기 조건을 만족하지 아니하면(S143의 "N") 런타임 시그니처 값(RTS)을 제2 값(VA2)으로 변경하는 단계(S145)를 포함할 수 있다.Referring to Figures 7 and 8, the step (S140) of executing the first instruction set (CS1) according to an embodiment of the present invention is to set a runtime signature value (RTS) to the first value (VA1). Setting step (S141), executing the replication branch instruction (CBC) (S142), if the branch condition of the replication branch instruction (CBC) is satisfied (“Y” in S143), the runtime signature value (RTS) is set to the first value. A step of maintaining (VA1) (S144) and, if the branch condition of the replication branch instruction (CBC) is not satisfied (“N” in S143), changing the runtime signature value (RTS) to a second value (VA2) ( S145) may be included.

런타임 시그니처 값(RTS)은 현재 명령어 블록(CBK)과 분기 명령어 블록(BBK)의 고유 시그니처 값의 차이를 나타내는 값일 수 있다. 이때, 제1 값(VA1)은 현재 명령어 블록(CBK) 및 제1 분기 명령어 블록(BBK1)의 고유 시그니처 값을 배타적 논리합한 값이고, 제2 값(VA2)은 현재 명령어 블록(CBK) 및 제2 분기 명령어 블록(BBK2)의 고유 시그니처 값을 배타적 논리합한 값일 수 있다. 즉, 제1 값(VA1)은 현재 명령어 블록(CBK)의 제1 시그니처 값(SIG1) 및 제1 분기 명령어 블록(BBK1)의 제2-1 시그니처 값(SIG2-1)을 배타적 논리합하여 설정될 수 있다. The runtime signature value (RTS) may be a value representing the difference between the unique signature value of the current instruction block (CBK) and the branch instruction block (BBK). At this time, the first value VA1 is an exclusive OR value of the unique signature values of the current instruction block CBK and the first branch instruction block BBK1, and the second value VA2 is a value obtained by exclusive ORing the unique signature values of the current instruction block CBK and the first branch instruction block BBK1. It may be an exclusive OR value of the unique signature value of the second branch instruction block (BBK2). That is, the first value VA1 is set by exclusive ORing the first signature value (SIG1) of the current instruction block (CBK) and the 2-1 signature value (SIG2-1) of the first branch instruction block (BBK1). You can.

제1 값(VA1)은 복제 분기 명령어(CBC)의 실행에 앞서 설정될 수 있다(S141). 전술된 바와 같이, 런타임 시그니처 값(RTS)은 도 2의 프로세서(200)의 프로세서 레지스터(미도시) 중 하나의 레지스터에 저장될 수 있다. 본원에서 런타임 시그니처 값(RTS)을 제2 값(VA2)으로 변경한다(S145)는 것의 의미는, 런타임 시그니처 값(RTS)을 저장하는 레지스터의 값을 변경한다는 의미가 아닌, 서로 다른 레지스터에 저장되는 런타임 시그니처 값(RTS)의 제1 값(VA1) 및 제2 값(VA2) 중 하나의 레지스터에 저장되는 제2 값(VA2)을 사용한다는 의미로 해석될 수도 있다. The first value VA1 may be set prior to execution of the replication branch instruction (CBC) (S141). As described above, the runtime signature value (RTS) may be stored in one of the processor registers (not shown) of the processor 200 of FIG. 2. In the present application, changing the runtime signature value (RTS) to the second value (VA2) (S145) does not mean changing the value of the register storing the runtime signature value (RTS), but storing it in a different register. This may be interpreted to mean that the second value VA2 stored in one of the first value VA1 and the second value VA2 of the runtime signature value RTS is used.

복제 분기 명령어(CBC)를 실행하는 단계(S142)는 복제 분기 조건의 성립 여부에 따라 프로그램 카운터의 값이 달라질 수 있다. 예를 들어, 제1 레지스터에 저장된 제1 원본 값(R1)을 복제한 제1 복제 값(R1*)과 제2 레지스터에 저장된 제2 원본 값(R2)을 복제한 제2 복제 값(R2*)이 같은 경우, 프로그램 카운터가 현재 명령어 블록(CBK)의 임의의 영역으로 분기할 수 있다. 예를 들어, 복제 분기 명령어(CBC)의 실행에 의해 프로그램 카운터는 제1 명령어 셋(CS1)과 제2 명령어 셋(CS2) 사이의 제3 영역(RG3)으로 분기될 수 있다(S146). 반면, 제1 복제 값(R1*)과 제2 복제 값(R2*)이 상이한 경우, 프로그램 카운터는 복제 분기 명령어(CBC)의 다음 명령어의 위치를 나타낼 수 있다. 따라서, 전술된 런타임 시그니처 값(RTS)을 제2 값(VA2)으로 변경하는 단계(S145)가 수행될 수 있다. In the step S142 of executing the replication branch instruction (CBC), the value of the program counter may vary depending on whether the replication branch condition is established. For example, a first duplicate value (R1*) that duplicates the first original value (R1) stored in the first register and a second duplicate value (R2*) that duplicates the second original value (R2) stored in the second register. ) is equal, the program counter can branch to an arbitrary area of the current instruction block (CBK). For example, by executing a replication branch instruction (CBC), the program counter may branch to the third region (RG3) between the first instruction set (CS1) and the second instruction set (CS2) (S146). On the other hand, when the first replication value (R1*) and the second replication value (R2*) are different, the program counter may indicate the location of the next instruction of the replication branch instruction (CBC). Accordingly, the step (S145) of changing the above-described runtime signature value (RTS) to the second value (VA2) may be performed.

다시 도 6 및 도 7을 참조하면, 본 발명의 실시예에 따른 복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 판단하는 단계(S130)는, 제1 명령어 셋(CS1)이 실행된 후, 손상된 글로벌 시그니처 값(GSR)을 복원시키는 단계(S134)를 포함할 수 있다. 예를 들어, 손상된 글로벌 시그니처 값(GSR)은 복원 값(RV)을 더하여 복원될 수 있다. 손상된 글로벌 시그니처 값(GSR)에 복원 값(RV)을 더하는 덧셈 명령어는 제2 명령어 셋(CS2)에 앞서 실행될 수 있다. Referring again to FIGS. 6 and 7, the step (S130) of determining whether an error exists in the execution of the copy branch instruction (CBC) according to an embodiment of the present invention is performed after the first instruction set (CS1) is executed, A step (S134) of restoring a damaged global signature value (GSR) may be included. For example, a damaged global signature value (GSR) can be restored by adding a restoration value (RV). The addition instruction for adding the restoration value (RV) to the damaged global signature value (GSR) may be executed before the second instruction set (CS2).

손상된 글로벌 시그니처 값(GSR)에 복원 값(RV)을 더하는 덧셈 명령어는 제2 명령어 셋(CS2)과 함께 현재 명령어 블록(CBK)의 제4 영역(RG4)에 위치할 수 있다. 복원 값(RV)은 손상 값(DV)과 같은 값일 수 있다. 이 경우, 복원 값(RV)은 손상 값(DV)에 대한 조건이 동일하게 적용될 수 있다. The addition instruction for adding the restoration value (RV) to the damaged global signature value (GSR) may be located in the fourth region (RG4) of the current instruction block (CBK) along with the second instruction set (CS2). The restoration value (RV) may be the same as the damage value (DV). In this case, the restoration value (RV) may be subject to the same conditions as the damage value (DV).

본 발명의 실시예에 따른 복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 판단하는 단계(S130)는 손상시키기 전의 글로벌 시그니처 값(GSR)과 복원된 후의 글로벌 시그니처 값(GSR)을 비교하는 단계(S136)를 더 포함할 수 있다. 글로벌 시그니처 값(GSR)에 대한 손상 및 복원이 정상적으로 수행되는 경우, 복원 후의 현재 명령어 블록(CBK)에 대한 글로벌 시그니처 값(GSR)은 손상 전의 글로벌 시그니처 값(GSR)과 동일하게 될 수 있다. 반면, 손상 전과 복원 후의 전의 글로벌 시그니처 값(GSR)이 동일하지 아니하면, 복제 분기 명령어(CBC)에 대한 에러가 존재하는 것으로 검출될 수 있다. 이에 대하여 설명한다. The step (S130) of determining whether an error exists in the execution of a replication branch instruction (CBC) according to an embodiment of the present invention is a step of comparing the global signature value (GSR) before damage and the global signature value (GSR) after restoration. (S136) may be further included. If damage and restoration of the global signature value (GSR) are performed normally, the global signature value (GSR) for the current instruction block (CBK) after restoration may be the same as the global signature value (GSR) before damage. On the other hand, if the global signature value (GSR) before damage and after restoration is not the same, it may be detected that an error in the replication branch instruction (CBC) exists. This will be explained.

도 9A 내지 도 9C는 각각 본 발명의 실시예에 따른 복제 분기 명령어(CBC)에 에러가 발생한 경우의 프로그램 카운터의 이동 위치를 나타내는 도면이다. Figures 9A to 9C are diagrams showing the movement position of the program counter when an error occurs in the copy branch instruction (CBC) according to an embodiment of the present invention.

먼저 도 6 및 도 9A를 참조하면, 복제 분기 명령어(CBC)에 에러가 발생하는 경우, 복제 분기 명령어(CBC)에 의해 분기되는 프로그램 카운터가 현재 명령어 블록(CBK)의 제3 영역(RG3)이 아닌 제1 영역(RG1)으로 이동될 수 있다. 전술된 바와 같이 복제 분기 명령어(CBC)가 정상적으로 실행되는 경우, 프로그램 카운터는 제3 영역(RG3)으로 이동할 수 있다. 제3 영역(RG3)은 제1 명령어 셋(CS1)이 위치하는 제2 영역(RG2) 및 제2 명령어 셋(CS2)이 위치하는 제4 영역(RG4) 사이에 구비될 수 있다. 이에, 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132) 및 손상된 글로벌 시그니처 값(GSR)을 복원시키는 단계(S134)가 정상적으로 1회씩 실행되지 아니할 수 있다. First, referring to FIGS. 6 and 9A, when an error occurs in the replication branch instruction (CBC), the program counter branched by the replication branch instruction (CBC) is in the third region (RG3) of the current instruction block (CBK). It may be moved to the first area RG1. As described above, when the replication branch instruction (CBC) is executed normally, the program counter may move to the third region (RG3). The third area RG3 may be provided between the second area RG2 where the first instruction set CS1 is located and the fourth area RG4 where the second instruction set CS2 is located. Accordingly, the step of damaging the global signature value (GSR) (S132) and the step of restoring the damaged global signature value (GSR) (S134) may not be executed normally once.

따라서, 손상시키기 전과 복원된 후의 글로벌 시그니처 값(GSR)을 비교함으로써(S136), 복제 분기 명령어(CBC)의 에러 여부가 검출될 수 있다. 예를 들어, 복제 분기 명령어(CBC)에 에러가 존재하여 프로그램 카운터가 제3 영역(RG3)이 아닌 제1 영역으로 이동됨에 따라, 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132)는 두 번 실행되고, 손상된 글로벌 시그니처 값(GSR)을 복원시키는 단계(S134)는 한 번 실행될 수 있다. 따라서, 손상 값(DV) 및 복원 값(RV)이 "10"인 경우, 복원된 글로벌 시그니처 값(GSR)보다 손상되기 전의 글로벌 시그니처 값(GSR)이 "10"만큼 더 클 수 있다. Therefore, by comparing the global signature value (GSR) before damage and after restoration (S136), an error in the replication branch instruction (CBC) can be detected. For example, as an error exists in the replication branch instruction (CBC) and the program counter is moved to the first region rather than the third region (RG3), the step (S132) of corrupting the global signature value (GSR) is performed twice. The step S134 of restoring the damaged global signature value (GSR) may be executed once. Accordingly, when the damage value (DV) and the restored value (RV) are “10”, the global signature value (GSR) before damage may be greater than the restored global signature value (GSR) by “10”.

다음으로 도 6 및 도 9B를 참조하면, 소프트 에러로 인해 복제 분기 명령어(CBC)에 의해 분기되는 프로그램 카운터가 현재 명령어 블록(CBK)의 제3 영역(RG3)이 아닌 제4 영역(RG4)으로 이동될 수 있다. 복제 분기 명령어(CBC)에 에러가 존재하여 프로그램 카운터가 제4 영역으로 이동됨에 따라, 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132)는 한 번 실행되고, 손상된 글로벌 시그니처 값(GSR)을 복원시키는 단계(S134)는 한 번도 실행되지 아니할 수 있다. 따라서, 손상 값(DV) 및 복원 값(RV)이 "10"인 경우, 복원된 글로벌 시그니처 값(GSR)보다 손상되기 전의 글로벌 시그니처 값(GSR)이 "10"만큼 더 클 수 있다. Next, referring to FIGS. 6 and 9B, due to a soft error, the program counter branched by the copy branch instruction (CBC) is moved to the fourth region (RG4) rather than the third region (RG3) of the current instruction block (CBK). can be moved As the program counter is moved to the fourth region due to an error in the replication branch instruction (CBC), the step S132 for corrupting the global signature value (GSR) is executed once and restores the corrupted global signature value (GSR). The command step (S134) may not be executed even once. Accordingly, when the damage value (DV) and the restored value (RV) are “10”, the global signature value (GSR) before damage may be greater than the restored global signature value (GSR) by “10”.

다음으로 도 6 및 도 9C를 참조하면, 소프트 에러로 인해 복제 분기 명령어(CBC)에 의해 분기되는 프로그램 카운터가 현재 명령어 블록(CBK)의 제3 영역(RG3)이 아닌, 복제 분기 명령어(CBC)를 포함하는 제1 명령어 셋(CS1)이 위치하는 제2 영역(RG2)으로 이동될 수 있다. 예를 들어, 프로그램 카운터는 제2 영역(RG2)에서 복제 분기 명령어(CBC)의 전 또는 후의 위치로 이동될 수 있다. 이 경우, 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132)는 한 번 실행되고, 손상된 글로벌 시그니처 값(GSR)을 복원시키는 단계(S134)는 한 번도 실행되지 아니할 수 있다. 따라서, 손상 값(DV) 및 복원 값(RV)이 "10"인 경우, 복원된 글로벌 시그니처 값(GSR)보다 손상되기 전의 글로벌 시그니처 값(GSR)이 "10"만큼 더 클 수 있다. Next, referring to FIGS. 6 and 9C, due to a soft error, the program counter branched by the replication branch instruction (CBC) is not in the third region (RG3) of the current instruction block (CBK), but is in the replication branch instruction (CBC). It may be moved to the second area RG2 where the first command set CS1 including . For example, the program counter may be moved to a position before or after the replication branch instruction (CBC) in the second region (RG2). In this case, the step of damaging the global signature value (GSR) (S132) may be executed once, and the step of restoring the damaged global signature value (GSR) (S134) may not be executed once. Accordingly, when the damage value (DV) and the restored value (RV) are “10”, the global signature value (GSR) before damage may be greater than the restored global signature value (GSR) by “10”.

다시 도 6 및 도 7을 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)은, 손상된 글로벌 시그니처 값(GSR)을 복원한 후, 원본 분기 명령어(OBC)를 포함하는 제2 명령어 셋(CS2)을 실행할 수 있다(S160). 제2 명령어 셋(CS2)을 실행한 결과, 제1 레지스터의 제1 원본 값(R1)과 제2 레지스터의 제2 원본 값(R2)이 동일한 경우 제1 분기 명령어 블록(BBK1)으로 이동되고(Branch if(R1 == R2) BBK1), 그렇지 아니하면 제2 분기 명령어 블록(BBK2)으로 이동(Jump BBK2)될 수 있다. 이는, 현재 명령어 블록(CBK)에서의 BRANCH 명령어 또는 JUMP 명령어를 통하는 경우를 제외하고는 제1 분기 명령어 블록(BBK1) 또는 제2 분기 명령어 블록(BBK2)으로 입장할 수 없는 제어 흐름일 수 있다. 따라서, 제1 원본 값(R1)과 제2 원본 값(R2)이 동일하면 제1 분기 명령어 블록(BBK1)으로 분기하고, 동일하지 아니하면 제2 분기 명령어 블록(BBK2)으로 프로그램 카운터가 이동될 수 있다. Referring again to FIGS. 6 and 7, the soft error detection method 100 according to an embodiment of the present invention restores a damaged global signature value (GSR) and then executes a second instruction including an original branch instruction (OBC). Set (CS2) can be executed (S160). As a result of executing the second instruction set (CS2), if the first original value (R1) of the first register and the second original value (R2) of the second register are the same, it is moved to the first branch instruction block (BBK1) ( Branch if (R1 == R2) BBK1), otherwise it can be moved (Jump BBK2) to the second branch instruction block (BBK2). This may be a control flow that cannot enter the first branch instruction block BBK1 or the second branch instruction block BBK2 except through a BRANCH instruction or JUMP instruction in the current instruction block CBK. Therefore, if the first original value (R1) and the second original value (R2) are the same, the program counter is branched to the first branch instruction block (BBK1), and if not the same, the program counter is moved to the second branch instruction block (BBK2). You can.

도 10은 본 발명의 실시예에 따른 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지를 판단하는 단계(S180)를 나타내는 도면이다. Figure 10 is a diagram showing a step (S180) of determining whether an error exists in the execution of an original branch instruction (OBC) according to an embodiment of the present invention.

도 6, 도 7 및 도 10을 참조하면, 제2 명령어 셋(CS2)의 실행까지 완료되면(S120~S160), 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)은, 제1 명령어 셋(CS1) 및 제2 명령어 셋(CS2)의 실행 결과에 근거하여, 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지를 판단하는 동작을 수행한다(S180). 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지를 판단하는 단계(S180)는, 분기 명령어 블록(BBK)에서 글로벌 시그니처 값(GSR)과 런타임 시그니처 값(RTS)을 이용하여 수행될 수 있다. Referring to FIGS. 6, 7, and 10, when execution of the second instruction set (CS2) is completed (S120 to S160), the soft error detection method 100 according to an embodiment of the present invention detects the first instruction set Based on the execution results of the (CS1) and the second instruction set (CS2), an operation is performed to determine whether an error exists in the execution of the original branch instruction (OBC) (S180). The step (S180) of determining whether an error exists in the execution of the original branch instruction (OBC) may be performed using the global signature value (GSR) and runtime signature value (RTS) in the branch instruction block (BBK).

예를 들어, 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지를 판단하는 단계(S180)는, 글로벌 시그니처 값(GSR)과 런타임 시그니처 값(RTS)을 배타적 논리합하는 단계(S182), 그 배타적 논리합한 결과와 분기 명령어 블록(BBK)에 대한 고유 시그니처 값(SIG2-1, SIG2-2)을 비교하는 단계(S184) 및 그 비교 결과에 근거하여 원본 분기 명령어(OBC)의 실행에 대한 에러 검출 결과를 생성하는 단계(S186)를 포함할 수 있다. For example, the step of determining whether an error exists in the execution of the original branch instruction (OBC) (S180) includes the step of exclusive ORing the global signature value (GSR) and the runtime signature value (RTS) (S182), and the exclusive OR of the global signature value (GSR) and the runtime signature value (RTS). A step (S184) of comparing a result with unique signature values (SIG2-1, SIG2-2) for the branch instruction block (BBK) and error detection results for execution of the original branch instruction (OBC) based on the comparison result. It may include a step of generating (S186).

예를 들어, 원본 분기 명령어(OBC)의 분기 조건이 만족되어 제1 분기 명령어 블록(BBK1)으로 분기하고자 하는 경우, 글로벌 시그니처 값(GSR)과 런타임 시그니처 값(RTS)의 제1 값(VA1)을 배타적 논리합한 결과와, 제1 분기 명령어 블록(BBK1)의 제2-1 시그니처 값(SIG2-1)를 비교할 수 있다. 또는, 원본 분기 명령어(OBC)의 분기 조건이 만족되지 아니하여 제2 분기 명령어 블록(BBK2)으로 이동하고자 하는 경우, 글로벌 시그니처 값(GSR)과 런타임 시그니처 값(RTS)의 제2 값(VA2)을 배타적 논리합한 결과와, 제2 분기 명령어 블록(BBK2)의 제2-1 시그니처 값(SIG2-1)을 비교할 수 있다. For example, if the branch condition of the original branch instruction (OBC) is satisfied and you want to branch to the first branch instruction block (BBK1), the first value (VA1) of the global signature value (GSR) and runtime signature value (RTS) The result of exclusive ORing can be compared with the 2-1 signature value (SIG2-1) of the first branch instruction block (BBK1). Or, if the branch condition of the original branch instruction (OBC) is not satisfied and you want to move to the second branch instruction block (BBK2), the second value (VA2) of the global signature value (GSR) and runtime signature value (RTS) The result of exclusive ORing can be compared with the 2-1 signature value (SIG2-1) of the second branch instruction block (BBK2).

런타임 시그니처 값(RTS)과 배타적 논리합되는 글로벌 시그니처 값(GSR)은, 그 배타적 논리합을 수행하는 시점에서 아직 프로그램 카운터가 현재 명령어 블록(CBK)을 나타내므로, 제1 시그니처 값(SIG1)과 동일할 수 있다. 그 비교 결과에 따른 에러 검출 결과는 도 2의 소프트 에러 검출부(260)로부터 출력되는 에러 검출 신호(XED)일 수 있다. The global signature value (GSR) that is exclusive-ORed with the runtime signature value (RTS) may be the same as the first signature value (SIG1) because the program counter still represents the current instruction block (CBK) at the time of performing the exclusive-OR. You can. The error detection result according to the comparison result may be an error detection signal (XED) output from the soft error detection unit 260 of FIG. 2.

이렇듯, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)에 의하면, 데이터 흐름의 중복성을 활용하여 데이터 흐름과 제어 흐름이 모두 보호될 수 있다. 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)이 적용되는 도 2의 프로세서(200) 또한 마찬가지이다. In this way, according to the soft error detection method 100 according to an embodiment of the present invention, both the data flow and the control flow can be protected by utilizing the redundancy of the data flow. The same applies to the processor 200 of FIG. 2 to which the soft error detection method 100 according to an embodiment of the present invention is applied.

즉, 원본 분기 명령어(OBC)의 취약성, 즉 제어 흐름 상의 에러가 검출되지 아니하는 것을 방지하기 위해, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)은 원본 분기 명령어(OBC)를 복제한 복제 분기 명령어(CBC)를 통해, 원본 분기 명령어(OBC)에 의해 분기되고자 하는 분기 명령어 블록(BBK)에 대한 일종의 통행권을 생성할 수 있다. 일종의 통행권이라 함은 에러가 발생하지 아니하여 정상적으로 해당 분기 명령어 블록(BBK)으로 진입할 수 있는지를 판단하는 근거의 의미를 나타낼 수 있다. 일종의 통행권은 고유 시그니처 값(SIG1, SIG2-1, SIG2-2), 글로벌 시그니처 값(GSR) 및 런타임 시그니처 값(RTS)에 의해 생성될 수 있다. That is, in order to prevent the vulnerability of the original branch instruction (OBC), that is, errors in the control flow from not being detected, the soft error detection method 100 according to an embodiment of the present invention duplicates the original branch instruction (OBC). A clone branch instruction (CBC) allows you to create a kind of right-of-way to the branch instruction block (BBK) that you want to branch to by the original branch instruction (OBC). A kind of right of passage can represent the basis for determining whether an error has occurred and the branch instruction block (BBK) can be entered normally. A type of right-of-way can be created by unique signature values (SIG1, SIG2-1, SIG2-2), global signature values (GSR), and runtime signature values (RTS).

이 경우, 예를 들어, 제1 원본 값(R1) 및 제2 원본 값(R2)이 동일하여 제1 분기 명령어 블록(BBK1)으로 이동되어야 함에도, 데이터 흐름에서 발생한 소프트 에러로 인해 제1 원본 값(R1)이 손상되어 제1 원본 값(R1) 및 제2 원본 값(R2)이 동일하지 않게 되어 제2 분기 명령어 블록(BBK2)으로 잘못 이동되더라도, 그 제어 흐름의 에러가 감지될 수 있다. 다시 말해, 본 발명의 실시예에 따른 제1 명령어 셋(CS1)의 실행(S140) 및 제2 명령어 셋(CS2)의 실행(S160)은 서로 독립적으로 수행될 수 있다. 즉, 제1 명령어 셋(CS1)을 실행한 결과(S140)가 제2 명령어 셋(CS2)을 실행한 결과(S160)에 영향을 미치지 아니할 수 있다.In this case, for example, even though the first original value (R1) and the second original value (R2) are the same and must be moved to the first branch instruction block (BBK1), the first original value is lost due to a soft error occurring in the data flow. Even if (R1) is damaged and the first original value (R1) and the second original value (R2) are not the same and are incorrectly moved to the second branch instruction block (BBK2), an error in the control flow can be detected. In other words, execution (S140) of the first instruction set (CS1) and execution (S160) of the second instruction set (CS2) according to an embodiment of the present invention may be performed independently of each other. That is, the result (S140) of executing the first instruction set (CS1) may not affect the result (S160) of executing the second instruction set (CS2).

또한, 복제 분기 명령어(CBC)에 대한 에러 검출(S130)이 별도로 수행됨으로써 원본 분기 명령어(OBC)에 대한 소프트 에러가 더 정확하게 검출될 수 있다. 복제 분기 명령어(CBC)에 에러가 발생하면 일종의 통행권 자체가 잘못 생성되는 것이므로, 에러가 정확히 검출되기 어려울 수 있다. 반면 복제 분기 명령어(CBC) 또한 분기 명령어로서 전술된 에러 취약성이 높을 수 있다.Additionally, since error detection (S130) for the copy branch instruction (CBC) is performed separately, soft errors for the original branch instruction (OBC) can be more accurately detected. If an error occurs in the replication branch instruction (CBC), the right-of-way itself is created incorrectly, so it may be difficult to accurately detect the error. On the other hand, the replication branch instruction (CBC) is also a branch instruction and may have a high vulnerability to the errors described above.

본 발명의 실시예에 따른 소프트 에러 검출 방법(100)는 RISC-V 등 조건부 계산 명령어를 지원하지 않는 명령어 셋 구조에서 소프트 에러 검출에 야기되는 취약성을 가장 기본적인 명령어인 덧셈 및 뺄셈 명령어를 사용하여 해결할 수 있다. 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)이 적용되는 도 2의 프로세서(200) 또한 마찬가지이다. The soft error detection method 100 according to an embodiment of the present invention solves the vulnerability caused by soft error detection in an instruction set structure that does not support conditional calculation instructions such as RISC-V by using the most basic instructions, addition and subtraction instructions. You can. The same applies to the processor 200 of FIG. 2 to which the soft error detection method 100 according to an embodiment of the present invention is applied.

조건부 계산 명령어라 함은 'move_equal', 'move_notEqual' 등과 같이 조건부로 레지스터 값을 업데이트하는 명령어를 의미한다. 조건부 명령어가 지원되는 명령어 셋 구조의 경우, 복제 분기 명령어(CBC)에 대한 취약성이 존재하지 아니하는데, 이는 조건부 명령어의 수행에 요구되는 연산이 데이터 흐름에 대한 연산이기 때문이다. 조건부 명령어의 수행을 위해 조건부 배타적 논리합 연산 및 조건부 레지스터 복사 연산이 요구될 수 있다. 따라서, 조건부 명령어에서 소프트 에러가 발생하여도 점프 및 브랜치 연산처럼 프로그램 카운터가 변경되지 아니한다. 전술된 바와 같이, 프로그램 카운터의 변경을 야기하는 제어 흐름의 경우, 데이터 흐름과 대비하여 에러에 대한 취약성이 높게 존재할 수 있다. Conditional calculation instructions refer to instructions that conditionally update register values, such as 'move_equal', 'move_notEqual', etc. In the case of an instruction set structure in which conditional instructions are supported, there is no vulnerability to replication branch instructions (CBC), because the operations required to execute conditional instructions are operations on the data flow. To perform conditional instructions, a conditional exclusive OR operation and a conditional register copy operation may be required. Therefore, even if a soft error occurs in a conditional instruction, the program counter does not change like in jump and branch operations. As described above, in the case of a control flow that causes a change in the program counter, there may be a higher vulnerability to errors compared to a data flow.

도시되지 아니하였으나, 소프트 에러로 인해 복제 분기 명령어(CBC)에 의해 분기되는 프로그램 카운터가 현재 명령어 블록(CBK)이 아닌 다른 명령어 블록으로 이동될 수 있다. 이 경우는 후술되는 원본 명령어에 대한 에러를 검출하는 방법에 의해 그 에러가 검출될 수 있다. 또한, 도 2의 프로세서 코어(220)의 동작 모드에 따라, 도 6 등의 복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 판단하는 단계(S130)가 선택적으로 수행될 수 있다. 예를 들어, 임의의 동작 모드에서 에러 발생율이 기준 값 이하로 안정적인 경우, 복제 분기 명령어(CBC)에 대한 에러 체크를 수행하지 아니하고 복제 분기 명령어(CBC)가 정상적으로 실행되었음이 전제된 상태로 원본 분기 명령어(OBC)가 실행될 수 있다. Although not shown, the program counter branched by the copy branch instruction (CBC) may be moved to an instruction block other than the current instruction block (CBK) due to a soft error. In this case, the error can be detected by a method for detecting errors in the original command, which will be described later. Additionally, depending on the operation mode of the processor core 220 of FIG. 2, a step (S130) of determining whether an error exists in the execution of the copy branch instruction (CBC) of FIG. 6 or the like may be selectively performed. For example, if the error occurrence rate is stable below the reference value in any operation mode, the original branch is performed on the assumption that the replication branch instruction (CBC) was executed normally without performing an error check on the replication branch instruction (CBC). Instructions (OBC) can be executed.

도 11은 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)을 나타내는 도면이고, 도 12는 도 11의 소프트 에러 검출 방법(100)으로 동작하는 현재 명령어 블록(CBK) 및 분기 명령어 블록(BBK)을 나타내는 도면이다. FIG. 11 is a diagram showing a soft error detection method 100 according to an embodiment of the present invention, and FIG. 12 shows a current instruction block (CBK) and a branch instruction block (BBK) operating with the soft error detection method 100 of FIG. 11. ) This is a drawing showing.

도 11 및 도 12를 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)은 현재 명령어 블록(CBK)의 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132), 원본 분기 명령어(OBC)와 분기 조건이 동일한 복제 분기 명령어(CBC)를 실행하는 단계(S142-2), 손상된 글로벌 시그니처 값(GSR)을 복원시키는 단계(S134), 글로벌 시그니처 값(GSR)의 손상 전의 값과 복원 후의 값을 비교하는 단계(S136) 및 그 비교 결과에 근거하여 복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 검출하는 단계(S138)를 포함할 수 있다. 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)은 또한, 이하의 동작들을 수행할 수 있다. 11 and 12, the soft error detection method 100 according to an embodiment of the present invention includes a step of damaging the global signature value (GSR) of the current instruction block (CBK) (S132), and an original branch instruction (OBC). ) and executing a replication branch instruction (CBC) with the same branch conditions (S142-2), restoring the damaged global signature value (GSR) (S134), the value before damage and after restoration of the global signature value (GSR). It may include comparing values (S136) and detecting whether an error exists in the execution of the replication branch instruction (CBC) based on the comparison result (S138). The soft error detection method 100 according to an embodiment of the present invention can also perform the following operations.

도 12는 손상 값(DV) 및 복원 값(RV)이 각각 "10"인 경우가 도시된다. 또한, 현재 명령어 블록(CBK)의 제1 시그니처 값(SIG1)이 "00110000"이고, 제1 분기 명령어 블록(BBK1)에 대한 제2-1 시그니처 값(SIG2-1)이 "01100000"이며, 제2 분기 명령어 블록(BBK2)에 대한 제2-2 시그니처 값(SIG2-2)이 "10000000"으로 설정될 수 있다. 이에, 현재 시점, 즉 프로그램 카운터가 나타내는 현재 명령어 블록(CBK)의 고유 시그니처 값을 나타내는 글로벌 시그니처 값(GSR) 또한 "00110000"으로 설정될 수 있다. FIG. 12 shows a case where the damage value (DV) and restoration value (RV) are each “10”. In addition, the first signature value (SIG1) of the current instruction block (CBK) is "00110000", the 2-1 signature value (SIG2-1) for the first branch instruction block (BBK1) is "01100000", and the The 2-2 signature value (SIG2-2) for the second branch instruction block (BBK2) may be set to “10000000”. Accordingly, the global signature value (GSR) representing the unique signature value of the current instruction block (CBK) indicated by the current point in time, that is, the program counter, may also be set to “00110000”.

복제 분기 명령어(CBC)를 포함하는 제1 명령어 셋(CS1)이 실행되기에 앞서, 글로벌 시그니처 값(GSR)에서 "10"을 뺄셈함으로써, 글로벌 시그니처 값(GSR)을 손상시킬 수 있다(S132). 이 경우, 손상된 글로벌 시그니처 값(GSR)은 "00101100"이 된다. 복제 분기 명령어(CBC)이 실행된 후. 글로벌 시그니처 값(GSR)은 손상된 글로벌 시그니처 값(GSR) "00101100"에 대해 복원 값(RV) "10"을 더함으로써 복원된다(S134). 손상 전의 글로벌 시그니처 값(GSR)과 복원된 글로벌 시그니처 값(GSR)의 비교 결과(S136), 그 값이 모두 "00110000"으로 동일하므로, 복제 분기 명령어(CBC)의 실행에 에러가 존재하지 아니하는 것으로 판단될 수 있다(S138).Before the first instruction set (CS1) including the replication branch instruction (CBC) is executed, the global signature value (GSR) can be damaged by subtracting "10" from the global signature value (GSR) (S132). . In this case, the corrupted global signature value (GSR) becomes “00101100”. After the replication branch instruction (CBC) is executed. The global signature value (GSR) is restored by adding a restoration value (RV) “10” to the damaged global signature value (GSR) “00101100” (S134). As a result of comparing the global signature value (GSR) before damage and the restored global signature value (GSR) (S136), the values are all the same as "00110000", so there is no error in the execution of the replication branch instruction (CBC). It can be judged that it is (S138).

이때, 복제 분기 명령어(CBC)를 실행하기에 앞서, 복제 분기 명령어(CBC)가 실행되는 현재 명령어 블록(CBK)과 원본 분기 명령어(OBC)에 의해 분기되는 분기 명령어 블록(BBK)의 고유 시그니처 값을 차이를 나타내는 런타임 시그니처 값(RTS)이, 제1 값으로 설정될 수 있다(S141). 도 12는 제1 값이 "01010000"인 예를 도시한다. 분기 조건이 만족되는 경우, 즉 제1 복제 값(R1*) 및 제2 복제 값(R2*)이 동일한 경우 프로그램 카운터는 현재 명령어 블록(CBK)의 제3 영역(RG3)으로 이동할 수 있다. 이때, 런타임 시그니처 값(RTS)은 제1 값인 "01010000"으로 확정된다(S144). At this time, before executing the replication branch instruction (CBC), the unique signature value of the current instruction block (CBK) where the replication branch instruction (CBC) is executed and the branch instruction block (BBK) branched by the original branch instruction (OBC). A runtime signature value (RTS) indicating the difference may be set as the first value (S141). Figure 12 shows an example where the first value is “01010000”. When the branch condition is satisfied, that is, when the first replication value (R1*) and the second replication value (R2*) are the same, the program counter may be moved to the third region (RG3) of the current instruction block (CBK). At this time, the runtime signature value (RTS) is confirmed as the first value, “01010000” (S144).

반면, 복제 분기 명령어(CBC)의 실행 결과, 그 분기 조건이 만족되지 아니하는 경우, 런타임 시그니처 값(RTS)은 제1 값과 상이한 제2 값으로 변경된다(S145). 다시 말해, 복제 분기 명령어(CBC)의 분기 조건이 만족되지 아니하는 경우, 즉 제1 복제 값(R1*) 및 제2 복제 값(R2*)이 상이한 경우 프로그램 카운터가 하나 증가하여 런타임 시그니처 값(RTS)이 제2 값인 "10110000"으로 확정된다. 런타임 시그니처 값(RTS)의 제1 값은 제2-1 분기 명령어 블록(BBK1)에 대응되고, 제2 값은 제2-2 분기 명령어 블록(BBK2)에 대응될 수 있다. On the other hand, if the branch condition is not satisfied as a result of executing the replication branch instruction (CBC), the runtime signature value (RTS) is changed to a second value that is different from the first value (S145). In other words, if the branch condition of the replication branch instruction (CBC) is not satisfied, that is, if the first replication value (R1*) and the second replication value (R2*) are different, the program counter is incremented by one and the runtime signature value ( RTS) is confirmed as the second value, “10110000”. The first value of the runtime signature value (RTS) may correspond to the 2-1 branch instruction block BBK1, and the second value may correspond to the 2-2 branch instruction block BBK2.

복제 분기 명령어(CBC)의 실행 결과 확정되는 런타임 시그니처 값(RTS)에 근거하여, 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지가 검출될 수 있다(S180-2). Based on the runtime signature value (RTS) determined as a result of execution of the copy branch instruction (CBC), it can be detected whether an error exists in the execution of the original branch instruction (OBC) (S180-2).

우선 원본 분기 명령어(OBC)가 실행된다. 원본 분기 명령어(OBC)의 분기 조건이 만족되는 경우, 즉 제1 원본 값(R1) 및 제2 원본 값(R2)이 동일한 경우 프로그램 카운ㅌ는 제1 분기 명령어 블록(BBK1)으로 이동될 것이다. 이때, 글로벌 시그니처 값(GSR) "00110000"과 런타임 시그니처 값(RTS) "01010000"에 대한 배타적 논리합이 수행된다. 그 배타적 논리합한 결과 값은 "01100000"으로, 분기하고자 하는 제1 분기 명령어 블록(BBK1)에 대한 제2-1 시그니처 값(SIG2-1)과 동일함을 알 수 있다. 이에, 원본 분기 명령어(OBC)의 실행에 에러가 존재하지 아니하는 것으로 확인될 수 있다. First, the original branch instruction (OBC) is executed. When the branch condition of the original branch instruction (OBC) is satisfied, that is, when the first original value (R1) and the second original value (R2) are the same, the program count will be moved to the first branch instruction block (BBK1). At this time, exclusive OR is performed on the global signature value (GSR) “00110000” and the runtime signature value (RTS) “01010000”. It can be seen that the result of the exclusive OR is “01100000”, which is the same as the 2-1 signature value (SIG2-1) for the first branch instruction block (BBK1) to be branched. Accordingly, it can be confirmed that there is no error in the execution of the original branch instruction (OBC).

제1 원본 값(R1)에 에러가 존재하여 제1 원본 값(R1) 및 제2 원본 값(R2)이 상이한 것으로 처리되면, 원본 분기 명령어(OBC)의 실행에 따라 프로그램 카운터는 제2 분기 명령어 블록(BBK2)으로 이동될 것이다. 그런데, 글로벌 시그니처 값(GSR) "00110000"과 런타임 시그니처 값(RTS) "01010000"에 대한 배타적 논리합의 결과 값인 "01100000"은, 분기하고자 하는 제2 분기 명령어 블록(BBK2)에 대한 제2-2 시그니처 값(SIG2-2) "10000000"과 상이하게 된다. 따라서, 원본 분기 명령어(OBC)의 실행에 에러가 발생하였음이 검출될 수 있다. If an error exists in the first original value (R1) and the first original value (R1) and the second original value (R2) are treated as different, the program counter is converted to the second branch instruction according to the execution of the original branch instruction (OBC). It will be moved to block (BBK2). However, "01100000", which is the result of exclusive OR for the global signature value (GSR) "00110000" and the runtime signature value (RTS) "01010000", is the 2-2 command for the second branch instruction block (BBK2) to be branched. It is different from the signature value (SIG2-2) “10000000”. Accordingly, it may be detected that an error occurred in the execution of the original branch instruction (OBC).

도 11 및 도 12는 소프트웨어 기반 명령어 중복기법 중 하나인 CHITIN(CompreHensive In-Thread InstructioN replication technique against transient faults)이 적용된 경우에 대한 예일 수 있다. 다만, 이에 한정되는 것은 아니다. 본 발명의 실시예에 따른 소프트 에러 검출 방법은 CHITIN 이외의 다양한 소프트웨어 기반 명령어 중복기법에 대해 적용될 수 있다. Figures 11 and 12 may be an example of a case where CHITIN (Comprehensive In-Thread Instruction replication technique against transient faults), one of the software-based instruction duplication techniques, is applied. However, it is not limited to this. The soft error detection method according to an embodiment of the present invention can be applied to various software-based instruction duplication techniques other than CHITIN.

도 13은 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)을 나타내는 도면이고, 도 14는 도 13의 소프트 에러 검출 방법(100)으로 동작하는 현재 명령어 블록(CBK) 및 분기 명령어 블록(BBK)을 나타내는 도면이다. FIG. 13 is a diagram showing a soft error detection method 100 according to an embodiment of the present invention, and FIG. 14 shows the current instruction block (CBK) and branch instruction block (BBK) operating with the soft error detection method 100 of FIG. 13. ) This is a drawing showing.

도 13 및 도 14를 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)은 현재 명령어 블록(CBK)의 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132), 원본 분기 명령어(OBC)와 분기 조건이 상이한 복제 분기 명령어(CBC)를 실행하는 단계(S142-4), 손상된 글로벌 시그니처 값(GSR)을 복원시키는 단계(S134), 글로벌 시그니처 값(GSR)의 손상 전의 값과 복원 후의 값을 비교하는 단계(S136) 및 그 비교 결과에 근거하여 복제 분기 명령어(CBC)의 실행에 에러가 존재하는지를 검출하는 단계(S138)를 포함할 수 있다. 본 발명의 실시예에 따른 소프트 에러 검출 방법(100)은 또한, 이하의 동작들을 수행할 수 있다.13 and 14, the soft error detection method 100 according to an embodiment of the present invention includes a step of damaging the global signature value (GSR) of the current instruction block (CBK) (S132), and an original branch instruction (OBC). ) and executing replication branch instructions (CBC) with different branch conditions (S142-4), restoring the damaged global signature value (GSR) (S134), the value before damage and after restoration of the global signature value (GSR) It may include comparing values (S136) and detecting whether an error exists in the execution of the replication branch instruction (CBC) based on the comparison result (S138). The soft error detection method 100 according to an embodiment of the present invention can also perform the following operations.

도 14의 현재 명령어 블록(CBK) 및 분기 명령어 블록(BBK)에 대한, 고유 시그니처 값(SIG1, SIG2-1, SIG2-2), 글로벌 시그니처 값(GSR) 및 런타임 시그니처 값(RTS)은 모두 도 12와 동일할 수 있다. 다만, 도 13 및 도 14의 경우, 원본 분기 명령어(OBC)와 분기 조건과 복제 분기 명령어(CBC)의 분기 조건이 서로 상이하다. 예를 들어, 원본 분기 명령어(OBC)는 제1 원본 값(R1) 및 제2 원본 값(R2)이 동일한지 여부가 분기 조건이라면, 복제 분기 명령어(CBC)는 제1 복제 값(R1*) 및 제2 복제 값(R2*)이 상이한지 여부가 분기 조건일 수 있다. The unique signature values (SIG1, SIG2-1, SIG2-2), global signature values (GSR), and runtime signature values (RTS) for the current instruction block (CBK) and branch instruction block (BBK) in Figure 14 are all shown in Figure 14. It may be equal to 12. However, in the case of FIGS. 13 and 14, the branch conditions of the original branch instruction (OBC) and the branch conditions of the copy branch instruction (CBC) are different. For example, if the original branch instruction (OBC) is a branch condition that determines whether the first original value (R1) and the second original value (R2) are the same, the replication branch instruction (CBC) is the first replication value (R1*). And whether the second replication value (R2*) is different may be a branching condition.

복제 분기 명령어(CBC)를 포함하는 제1 명령어 셋(CS1)이 실행되기에 앞서, 글로벌 시그니처 값(GSR)에서 "10"을 뺌으로써, 글로벌 시그니처 값(GSR)을 손상시킬 수 있다(S132). 이 경우, 손상된 글로벌 시그니처 값(GSR)은 "00101100"이 된다. 복제 분기 명령어(CBC)이 실행된 후. 글로벌 시그니처 값(GSR)은 손상된 글로벌 시그니처 값(GSR) "00101100"에 대해 복원 값(RV) "10"을 더함으로써 복원된다(S134). 손상 전의 글로벌 시그니처 값(GSR)과 복원된 글로벌 시그니처 값(GSR)의 비교 결과(S136), 그 값이 모두 "00110000"으로 동일하므로, 복제 분기 명령어(CBC)의 실행에 에러가 존재하지 아니하는 것으로 판단될 수 있다(S138).Before the first instruction set (CS1) including the replication branch instruction (CBC) is executed, the global signature value (GSR) can be damaged by subtracting "10" from the global signature value (GSR) (S132). . In this case, the corrupted global signature value (GSR) becomes “00101100”. After the replication branch instruction (CBC) is executed. The global signature value (GSR) is restored by adding a restoration value (RV) “10” to the damaged global signature value (GSR) “00101100” (S134). As a result of comparing the global signature value (GSR) before damage and the restored global signature value (GSR) (S136), the values are all the same as "00110000", so there is no error in the execution of the replication branch instruction (CBC). It can be judged that it is (S138).

이때, 복제 분기 명령어(CBC)의 분기 조건이 만족되지 아니하는 경우, 런타임 시그니처 값(RTS)이 제1 값으로 설정될 수 있다. 예를 들어, 제1 복제 값(R1*) 및 제2 복제 값(R2*)이 동일하여 복제 분기 명령어(CBC)의 분기 조건이 만족되지 아니하는 경우, 런타임 시그니처 값(RTS)이 제1 값인 "01010000"으로 확정될 수 있다. 반면, 복제 분기 명령어(CBC)의 분기 조건이 만족되고, 원본 분기 명령어(OBC)의 실행 결과 원본 분기 명령어(OBC)의 분기 조건이 만족되지 아니하는 경우, 런타임 시그니처 값(RTS)은 제1 값과 상이한 제2 값으로 설정될 수 있다(S145-2). 예를 들어, 제1 복제 값(R1*) 및 제2 복제 값(R2*)이 상이하고 제1 원본 값(R1) 및 제2 원본 값(R2)이 동일하지 아니한 경우, 런타임 시그니처 값(RTS)이 제2 값인 "10110000"으로 확정될 수 있다. At this time, if the branch condition of the replication branch instruction (CBC) is not satisfied, the runtime signature value (RTS) may be set as the first value. For example, if the first replication value (R1*) and the second replication value (R2*) are the same and the branch condition of the replication branch instruction (CBC) is not satisfied, the runtime signature value (RTS) is the first value. It can be confirmed as “01010000”. On the other hand, if the branch condition of the replication branch instruction (CBC) is satisfied and the branch condition of the original branch instruction (OBC) is not satisfied as a result of execution of the original branch instruction (OBC), the runtime signature value (RTS) is the first value. It may be set to a second value different from (S145-2). For example, if the first replication value (R1*) and the second replication value (R2*) are different and the first original value (R1) and the second original value (R2) are not the same, the runtime signature value (RTS ) can be confirmed as the second value, “10110000”.

즉, 런타임 시그니처 값(RTS) 중 제1 값 "01010000"에 대한 현재 명령어 블록(CBK) 내의 위치가 복제 분기 명령어(CBC) 이후로 설정되고, 런타임 시그니처 값(RTS) 중 제2 값 "10110000"에 대한 현재 명령어 블록(CBK) 내의 위치가 원본 분기 명령어(OBC) 이후로 설정될 수 있다. That is, the position in the current instruction block (CBK) for the first value "01010000" among the runtime signature values (RTS) is set after the replication branch instruction (CBC), and the second value "10110000" among the runtime signature values (RTS). The position in the current instruction block (CBK) for may be set after the original branch instruction (OBC).

그밖에, 복제 분기 명령어(CBC) 및 원본 분기 명령어(OBC)의 실행 결과 확정되는 런타임 시그니처 값(RTS)에 근거하여, 원본 분기 명령어(OBC)의 실행에 에러가 존재하는지가 검출하는 동작(S180-4)은, 전술된 도 11 및 도 12의 경우와 같을 수 있다. 도 13 및 도 14는 소프트웨어 기반 명령어 중복기법 중 하나인 SWIFT (Software Implemented Fault Tolerance)가 적용된 경우에 대한 예일 수 있다.In addition, an operation (S180- 4) may be the same as the case of FIGS. 11 and 12 described above. Figures 13 and 14 may be an example of when SWIFT (Software Implemented Fault Tolerance), one of the software-based instruction duplication techniques, is applied.

이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 예를 들어, 이상에서는 글로벌 시그니처 값(GSR)에서 손상 값(DV)을 뺄셈함으로써 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132)가 수행되고, 이를 복원 값(RV)으로 덧셈함으로써 손상된 글로벌 시그니처 값(GSR)을 복원하는 단계(S134)가 수행되는 것으로 기술되었으나 이에 한정되는 것은 아니다. 본 발명의 실시예에 따른 소프트 에러 검출 방법(100) 및 프로세서(200)에 의하면, 글로벌 시그니처 값(GSR)에서 손상 값(DV)을 덧셈함으로써 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132)가 수행되고, 이를 복원 값(RV)으로 뺄셈함으로써 손상된 글로벌 시그니처 값(GSR)을 복원하는 단계(S134)가 수행될 수도 있다. 나아가, 글로벌 시그니처 값(GSR)을 손상시키는 단계(S132) 및 손상된 글로벌 시그니처 값(GSR)을 복원하는 단계(S134)는 뺄셈 또는 덧셈 이외에, 나누기 또는 곱하기 등의 다양한 연산을 통해 그 손상 및 복원 동작을 수행할 수도 있다. Although representative embodiments of the present invention have been described in detail above, those skilled in the art will understand that various modifications can be made to the above-described embodiments without departing from the scope of the present invention. . For example, in the above, the step (S132) of corrupting the global signature value (GSR) is performed by subtracting the corruption value (DV) from the global signature value (GSR), and adding this to the restoration value (RV) to obtain the damaged global signature. Although it has been described that the step (S134) of restoring the value (GSR) is performed, it is not limited thereto. According to the soft error detection method 100 and the processor 200 according to an embodiment of the present invention, a step (S132) of corrupting the global signature value (GSR) by adding a corruption value (DV) to the global signature value (GSR). is performed, and a step (S134) of restoring the damaged global signature value (GSR) by subtracting it from the restoration value (RV) may be performed. Furthermore, the step of damaging the global signature value (GSR) (S132) and the step of restoring the damaged global signature value (GSR) (S134) involve damage and restoration operations through various operations such as division or multiplication in addition to subtraction or addition. You can also perform .

그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined not only by the claims described later but also by equivalents to the claims.

100: 소프트 에러 검출 방법
200: 프로세서
OBC, CBC: 원본 분기 명령어, 복제 분기 명령어
CBK, BBK: 현재 명령어 블록, 분기 명령어 블록
XED: 에러 검출 신호
SIG: 고유 시그니처 값
GSR: 글로벌 시그니처 값
RTS: 런타임 시그니처 값
100: Soft error detection method
200: processor
OBC, CBC: Original branch instruction, replication branch instruction
CBK, BBK: Current instruction block, branch instruction block
XED: Error detection signal
SIG: Unique signature value
GSR: Global signature value
RTS: Runtime signature value

Claims (20)

원본 분기 명령어를 복제 분기 명령어로 복제하는 단계;
상기 복제 분기 명령어를 포함하는 제1 명령어 셋을 실행하는 단계;
상기 원본 분기 명령어를 포함하는 제2 명령어 셋을 실행하는 단계; 및
상기 제1 명령어 셋 및 제2 명령어 셋의 실행 결과에 근거하여, 상기 원본 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계;를 포함하는 소프트 에러 검출 방법.
replicating the original branch instruction into a duplicate branch instruction;
executing a first set of instructions including the replication branch instruction;
executing a second instruction set including the original branch instruction; and
A soft error detection method including; determining whether an error exists in execution of the original branch instruction based on execution results of the first instruction set and the second instruction set.
청구항 1에 있어서,
상기 제1 명령어 셋을 실행하는 전후로, 상기 제1 명령어 셋이 실행되는 현재 명령어 블록에 대한 글로벌 시그니처 값을 이용하여 상기 복제 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계;를 더 포함하는 소프트 에러 검출 방법.
In claim 1,
Before and after executing the first instruction set, determining whether an error exists in execution of the replication branch instruction using a global signature value for the current instruction block in which the first instruction set is executed; soft error further comprising: Detection method.
제2 항에 있어서,
상기 복제 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계는,
상기 글로벌 시그니처 값을 손상시키는 단계; 및
손상된 상기 글로벌 시그니처 값을 복원시키는 단계;를 포함하는 소프트 에러 검출 방법.
According to clause 2,
The step of determining whether an error exists in the execution of the replication branch instruction is:
Corrupting the global signature value; and
A soft error detection method comprising: restoring the damaged global signature value.
제2 항에 있어서,
상기 글로벌 시그니처 값을 손상시키는 단계는,
상기 글로벌 시그니처 값에서 손상 값을 빼는 단계;를 포함하고,
손상된 상기 글로벌 시그니처 값을 복원시키는 단계는,
손상된 상기 글로벌 시그니처 값에서 복원 값을 더하는 단계;를 포함하는 소프트 에러 검출 방법.
According to clause 2,
The step of damaging the global signature value is,
Comprising: subtracting a corruption value from the global signature value,
The step of restoring the damaged global signature value is,
A soft error detection method comprising adding a restored value to the damaged global signature value.
제4 항에 있어서,
상기 손상 값 및 상기 복원 값은,
서로 동일하고, 각각 고유한 값으로 설정되는 소프트 에러 검출 방법.
According to clause 4,
The damage value and the restoration value are,
Soft error detection methods that are identical to each other and each set to a unique value.
제2 항에 있어서,
상기 복제 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계는,
손상시키기 전의 상기 글로벌 시그니처 값과 복원된 후의 상기 글로벌 시그니처 값을 비교하는 단계;를 더 포함하는 소프트 에러 검출 방법.
According to clause 2,
The step of determining whether an error exists in the execution of the replication branch instruction is:
A soft error detection method further comprising comparing the global signature value before damage and the global signature value after restoration.
제1 항에 있어서,
동작 모드에 근거하여, 상기 복제 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계를 선택적으로 수행하는 소프트 에러 검출 방법.
According to claim 1,
A soft error detection method that selectively performs the step of determining whether an error exists in execution of the replication branch instruction based on the operation mode.
제1 항에 있어서,
상기 제1 명령어 셋을 실행하는 단계는,
상기 원본 분기 명령어의 실행에 의해 분기되는 분기 명령어 블록에 대응되는 런타임 시그니처 값을 제1 값으로 설정하는 단계;
상기 복제 분기 명령어를 실행하는 단계;
상기 복제 분기 명령어의 분기 조건을 만족하면 상기 런타임 시그니처 값을 상기 제1 값으로 유지하는 단계; 및
상기 복제 분기 명령어의 분기 조건을 만족하지 아니하면 상기 런타임 시그니처 값을 상기 제1 값에서 상기 제2 값으로 변경하는 단계;를 포함하는 소프트 에러 검출 방법.
According to claim 1,
The step of executing the first instruction set is:
Setting a runtime signature value corresponding to a branch instruction block branched by execution of the original branch instruction to a first value;
executing the replication branch instruction;
maintaining the runtime signature value as the first value when the branch condition of the replication branch instruction is satisfied; and
If the branch condition of the replication branch instruction is not satisfied, changing the runtime signature value from the first value to the second value.
제8 항에 있어서,
상기 제1 값은,
상기 복제 분기 명령어가 실행되는 현재 명령어 블록에 대한 고유 시그니처 값과 상기 제2 명령어 셋의 실행 결과 분기되는 분기 명령어 블록 중 하나의 고유 시그니처 값을 배타적 논리합한 값이고,
상기 제2 값은,
상기 현재 명령어 블록에 대한 고유 시그니처 값과 상기 분기 명령어 블록 중 다른 하나의 고유 시그니처 값을 배타적 논리합한 값인 소프트 에러 검출 방법.
According to clause 8,
The first value is,
It is an exclusive OR value of a unique signature value for the current instruction block in which the replication branch instruction is executed and a unique signature value of one of the branch instruction blocks branched as a result of execution of the second instruction set,
The second value is,
A soft error detection method in which the value is an exclusive OR of the unique signature value for the current instruction block and the unique signature value of another one of the branch instruction blocks.
제8 항에 있어서,
상기 제1 명령어 셋을 실행하는 단계는,
상기 복제 분기 명령어의 분기 조건을 만족하면 상기 복제 분기 명령어가 실행되는 현재 명령어 블록의 프로그램 카운터를, 상기 현재 명령어 블록의 상기 제1 명령어 셋 및 상기 제2 명령어 셋 사이에 위치하는 영역으로 이동시키는 단계;를 더 포함하는 소프트 에러 검출 방법.
According to clause 8,
The step of executing the first instruction set is:
If the branch condition of the replication branch instruction is satisfied, moving the program counter of the current instruction block in which the replication branch instruction is executed to an area located between the first instruction set and the second instruction set of the current instruction block. A soft error detection method further including ;.
제8 항에 있어서,
상기 런타임 시그니처 값은,
상기 현재 명령어 블록과 상기 분기 명령어 블록의 고유 시그니처 값의 차이를 나타내는 소프트 에러 검출 방법.
According to clause 8,
The runtime signature value is,
A soft error detection method that indicates the difference between the unique signature value of the current instruction block and the branch instruction block.
제1 항에 있어서,
상기 제2 명령어 셋을 실행하는 단계는,
상기 원본 분기 명령어의 분기 조건을 만족하면 분기 명령어 블록 중 제1 분기 명령어 블록으로 이동하는 단계; 및
상기 원본 분기 명령어의 분기 조건을 만족하지 아니하면 상기 분기 명령어 블록 중 제2 분기 명령어 블록으로 이동하는 단계;를 포함하는 소프트 에러 검출 방법.
According to claim 1,
The step of executing the second instruction set is,
moving to a first branch instruction block among branch instruction blocks when the branch condition of the original branch instruction is satisfied; and
A soft error detection method comprising: moving to a second branch instruction block among the branch instruction blocks if the branch condition of the original branch instruction is not satisfied.
제12 항에 있어서,
상기 원본 분기 명령어의 실행에 에러가 존재하는지를 판단하는 단계는,
상기 현재 명령어 블록에 대한 글로벌 시그니처 값과, 상기 제1 분기 명령어 블록 또는 상기 제2 분기 명령어 블록에 대응되는 런타임 시그니처 값을 배타적 논리합하는 단계;
상기 배타적 논리합한 값과, 상기 제1 분기 명령어 블록 또는 상기 제2 분기 명령어 블록의 고유 시그니처 값을 비교하는 단계; 및
상기 비교 결과에 근거하여 상기 원본 분기 명령어의 실행에 대한 에러 검출 결과를 생성하는 단계;를 포함하는 소프트 에러 검출 방법.
According to claim 12,
The step of determining whether an error exists in the execution of the original branch instruction is:
Exclusively ORing a global signature value for the current instruction block and a runtime signature value corresponding to the first branch instruction block or the second branch instruction block;
Comparing the exclusive OR value with a unique signature value of the first branch instruction block or the second branch instruction block; and
A soft error detection method comprising: generating an error detection result for execution of the original branch instruction based on the comparison result.
제1 항에 있어서,
상기 제1 명령어 셋의 실행 및 상기 제2 명령어 셋의 실행은 서로 독립적으로 수행되는 소프트 에러 검출 방법.
According to claim 1,
A soft error detection method in which execution of the first instruction set and execution of the second instruction set are performed independently of each other.
제1 항에 있어서,
상기 소프트 에러 검출 방법은,
소프트웨어 기반 명령어 중복기법 중 CHITIN(CompreHensive In-Thread InstructioN replication technique against transient faults) 또는 SWIFT (Software Implemented Fault Tolerance)에 적용되는 소프트 에러 검출 방법.
According to claim 1,
The soft error detection method is,
A soft error detection method applied to CHITIN (Comprehensive In-Thread Instruction replication technique against transient faults) or SWIFT (Software Implemented Fault Tolerance) among software-based instruction duplication techniques.
제1 항에 있어서,
상기 소프트 에러 검출 방법은,
조건부로 레지스터 값을 업데이트하는 명령어를 지원하지 아니하는 명령어 집합 구조(Istruction Set Architecture)로 동작하는 프로세서에서 수행되는 소프트 에러 검출 방법.
According to claim 1,
The soft error detection method is,
A soft error detection method performed on a processor operating with an instruction set architecture that does not support instructions that conditionally update register values.
제1 항의 소프트 에러 검출 방법으로 동작하여, 상기 원본 분기 명령어의 실행에 에러가 존재하는 경우 에러 검출 신호를 출력하는 프로세서.A processor that operates using the soft error detection method of claim 1 and outputs an error detection signal when an error exists in execution of the original branch instruction. 현재 명령어 블록의 글로벌 시그니처 값을 손상시키는 단계;
원본 분기 명령어에 대응되는 복제 분기 명령어를 실행하는 단계;
손상된 상기 글로벌 시그니처 값을 복원시키는 단계;
상기 글로벌 시그니처 값의 손상 전의 값과 복원 후의 값을 비교하는 단계; 및
상기 비교 결과에 근거하여 상기 복제 분기 명령어의 실행에 에러가 존재하는지를 검출하는 단계;를 포함하는 소프트 에러 검출 방법.
Corrupting the global signature value of the current instruction block;
executing a replication branch instruction corresponding to the original branch instruction;
restoring the damaged global signature value;
Comparing a value before damage and a value after restoration of the global signature value; and
A soft error detection method comprising: detecting whether an error exists in execution of the replication branch instruction based on the comparison result.
제18 항에 있어서,
상기 복제 분기 명령어는 상기 원본 분기 명령어와 분기 조건이 동일하고,
상기 복제 분기 명령어를 실행하기에 앞서, 상기 복제 분기 명령어가 실행되는 현재 명령어 블록과 상기 원본 분기 명령어에 의해 분기되는 분기 명령어 블록의 고유 시그니처 값을 차이를 나타내는 런타임 시그니처 값을, 제1 값으로 설정하는 단계;
상기 복제 분기 명령어의 실행 결과, 상기 복제 분기 명령어의 분기 조건이 만족되는 경우 상기 런타임 시그니처 값을 상기 제1 값으로 유지하고, 상기 복제 분기 명령어의 분기 조건이 만족되지 아니하는 경우 상기 런타임 시그니처 값을 상기 제1 값과 상이한 제2 값으로 변경하는 단계; 및
상기 복제 분기 명령어의 실행 결과에 따른 상기 런타임 시그니처 값에 근거하여 상기 원본 분기 명령어의 실행에 에러가 존재하는지를 검출하는 단계;를 더 포함하는 소프트 에러 검출 방법.
According to clause 18,
The replication branch instruction has the same branch conditions as the original branch instruction,
Before executing the replication branch instruction, a runtime signature value indicating the difference between the unique signature value of the current instruction block in which the replication branch instruction is executed and the branch instruction block branched by the original branch instruction is set to the first value. steps;
As a result of executing the replication branch instruction, if the branch condition of the replication branch instruction is satisfied, the runtime signature value is maintained as the first value, and if the branch condition of the replication branch instruction is not satisfied, the runtime signature value is maintained. changing to a second value different from the first value; and
A soft error detection method further comprising detecting whether an error exists in execution of the original branch instruction based on the runtime signature value according to an execution result of the duplicate branch instruction.
제18 항에 있어서,
상기 복제 분기 명령어는 상기 원본 분기 명령어와 분기 조건이 상이하고,
상기 복제 분기 명령어의 분기 조건이 만족되지 아니하는 경우, 상기 복제 분기 명령어가 실행되는 현재 명령어 블록과 상기 원본 분기 명령어에 의해 분기되는 분기 명령어 블록의 고유 시그니처 값을 차이를 나타내는 런타임 시그니처 값을, 제1 값으로 설정하는 단계;
상기 원본 분기 명령어의 실행 결과, 상기 원본 분기 명령어의 분기 조건이 만족되지 아니하는 경우, 상기 런타임 시그니처 값을 상기 제1 값과 상이한 제2 값으로 변경하는 단계; 및
상기 분기 분기 명령어 및 상기 원본 분기 명령어의 실행 결과에 따른 상기 런타임 시그니처 값에 근거하여 상기 원본 분기 명령어의 실행에 에러가 존재하는지를 검출하는 단계;를 더 포함하는 소프트 에러 검출 방법.
According to clause 18,
The replication branch instruction has different branch conditions from the original branch instruction,
If the branch condition of the replication branch instruction is not satisfied, a runtime signature value indicating the difference between the unique signature value of the current instruction block in which the replication branch instruction is executed and the branch instruction block branched by the original branch instruction, setting it to a value of 1;
As a result of executing the original branch instruction, if the branch condition of the original branch instruction is not satisfied, changing the runtime signature value to a second value different from the first value; and
A soft error detection method further comprising: detecting whether an error exists in execution of the original branch instruction based on the runtime signature value according to the execution result of the branch instruction and the original branch instruction.
KR1020220169753A 2022-09-07 2022-12-07 Processor and soft error detection method thereof KR20240034615A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP23193935.6A EP4339782A1 (en) 2022-09-07 2023-08-29 Processor and method of detecting soft error using the same
US18/461,120 US20240080044A1 (en) 2022-09-07 2023-09-05 Processor and method of detecting soft error using the same
CN202311147060.1A CN117667508A (en) 2022-09-07 2023-09-06 Processor and method for detecting soft error using the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220113765 2022-09-07
KR1020220113765 2022-09-07

Publications (1)

Publication Number Publication Date
KR20240034615A true KR20240034615A (en) 2024-03-14

Family

ID=90249131

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220169753A KR20240034615A (en) 2022-09-07 2022-12-07 Processor and soft error detection method thereof

Country Status (1)

Country Link
KR (1) KR20240034615A (en)

Similar Documents

Publication Publication Date Title
US5974529A (en) Systems and methods for control flow error detection in reduced instruction set computer processors
JP4795433B2 (en) Reduction of uncorrectable error rate in a lockstep dual module redundant system.
US10296312B2 (en) Methods, apparatuses, and systems for zero silent data corruption (ZDC) compiler technique
US20080244354A1 (en) Apparatus and method for redundant multi-threading with recovery
US10657010B2 (en) Error detection triggering a recovery process that determines whether the error is resolvable
JP2005166057A (en) Fault detecting computer system
Zarandi et al. Two efficient software techniques to detect and correct control-flow errors
JP2007519101A (en) External memory update management for fault detection in redundant multi-threading systems using speculative memory support
JP4905553B2 (en) Information processing apparatus and control method
Didehban et al. Generic soft error data and control flow error detection by instruction duplication
KR20240034615A (en) Processor and soft error detection method thereof
KR20050121729A (en) Program-controlled unit and method
US10176031B2 (en) Arithmetic processing device and method of controlling arithmetic processing device
Ding et al. More: Model-based redundancy for simulink
CN117667508A (en) Processor and method for detecting soft error using the same
US8560924B2 (en) Register file soft error recovery
EP4339782A1 (en) Processor and method of detecting soft error using the same
Sharif et al. Repair: Control flow protection based on register pairing updates for sw-implemented hw fault tolerance
CN115543716A (en) Validating processing logic of a graphics processing unit
Li et al. Experience report: An application-specific checkpointing technique for minimizing checkpoint corruption
Nezzari et al. Modelling processor reliability using LLVM compiler fault injection
De Blaere et al. Utilizing Parity Checking to Optimize Soft Error Detection Through Low-Level Reexecution
Maghsoudloo et al. CCDA: Correcting control-flow and data errors automatically
Huang et al. Critical Signature Assertion and On-the-Fly Recovery for Control Flow Errors in Processors
Nazarian et al. Low-cost software control-flow error recovery