KR20240038497A - 프로세서 및 프로세서에서의 소프트 에러 검출 방법 - Google Patents

프로세서 및 프로세서에서의 소프트 에러 검출 방법 Download PDF

Info

Publication number
KR20240038497A
KR20240038497A KR1020220117447A KR20220117447A KR20240038497A KR 20240038497 A KR20240038497 A KR 20240038497A KR 1020220117447 A KR1020220117447 A KR 1020220117447A KR 20220117447 A KR20220117447 A KR 20220117447A KR 20240038497 A KR20240038497 A KR 20240038497A
Authority
KR
South Korea
Prior art keywords
instruction
original
duplicate
register
register file
Prior art date
Application number
KR1020220117447A
Other languages
English (en)
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 KR1020220117447A priority Critical patent/KR20240038497A/ko
Priority to US18/232,442 priority patent/US20240095113A1/en
Priority to EP23193529.7A priority patent/EP4339781A1/en
Priority to CN202311186118.3A priority patent/CN117724765A/zh
Publication of KR20240038497A publication Critical patent/KR20240038497A/ko

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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1637Error detection by comparing the output of redundant processing systems using additional compare functionality in one or some but not all of the redundant processing components
    • 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/1497Details of time redundant execution on a single processing unit
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)

Abstract

프로세서 및 프로세서에서의 소프트 에러 검출 방법이 개시된다. 본 발명의 실시예에 따른 프로세서는, 원본 명령어 및 상기 원본 명령어를 복제하여 생성되는 복제 명령어를 순차적으로 처리하는 명령어 파이프라인; 상기 원본 명령어에 대한 상기 명령어 파이프라인에서의 처리 결과가 제n 인덱스의 레지스터에 저장되는 원본 레지스터 파일; 상기 복제 명령어에 대한 상기 명령어 파이프라인에서의 처리 결과가 제n 인덱스의 레지스터에 저장되는 복제 레지스터 파일; 및 제어 신호에 응답하여, 상기 원본 레지스터 파일의 제n 인덱스의 레지스터와 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하여 에러 검출 신호로 출력하는 비교부;를 포함한다.

Description

프로세서 및 프로세서에서의 소프트 에러 검출 방법 {PROCESSOR AND SOFT ERROR DETECTION METHOD FOR PROCESSOR}
본 발명은 프로세서에서의 에러 검출에 관한 것으로, 프로세서 및 프로세서에서의 소프트 에러 검출 방법에 관한 것이다.
소프트 에러, 혹은 순간 결함(transient fault)은 중성자 혹은 알파 입자의 충돌 등 하드웨어의 영구적인 결함과 관계없이 외부 요인으로 인해 트랜지스터 등 반도체 소자에 저장되는 비트 값이 "0"에서 "1", 혹은 그 반대로 뒤집히는 오류를 뜻한다. 소프트 에러로 인한 비트 값의 손상은 프로세서의 운영에 있어 치명적인 오작동을 일으킬 수 있다.
이에, 소프트 에러가 장치 또는 시스템의 운용에 있어 치명적인 오작동으로 이어지기 전에 이를 정확하게 검출하는 것이 요구된다. 이때, 소프트 에러 검출에 요구되는 리소스(resource)의 제한 또는 소프트 에러 검출의 복잡도 등이 고려되어야 할 것이다.
본 발명은 상술한 과제를 해결하기 위한 것으로서, 정확하게 소프트 에러를 검출하여 소프트 에러로 인한 오동작을 방지하면서도, 소프트 에러 검출에 요구되는 리소스를 최소화하고 처리 과정을 단순화할 수 있는 프로세서 및 프로세서에서의 소프트 에러 검출 방법을 제공하고자 한다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 프로세서는, 원본 명령어 및 상기 원본 명령어를 복제하여 생성되는 복제 명령어를 순차적으로 처리하는 명령어 파이프라인; 상기 원본 명령어에 대한 상기 명령어 파이프라인에서의 처리 결과가 제n 인덱스의 레지스터에 저장되는 원본 레지스터 파일; 상기 복제 명령어에 대한 상기 명령어 파이프라인에서의 처리 결과가 제n 인덱스의 레지스터에 저장되는 복제 레지스터 파일; 및 제어 신호에 응답하여, 상기 원본 레지스터 파일의 제n 인덱스의 레지스터와 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하여 에러 검출 신호로 출력하는 비교부;를 포함한다.
상기 원본 레지스터 파일의 인덱스와 상기 복제 레지스터 파일의 인덱스가 동일하게 설정될 수 있다.
상기 원본 레지스터 파일에 포함되는 레지스터의 크기 및 개수와, 상기 복제 레지스터 파일에 포함되는 레지스터의 크기 및 개수가 동일할 수 있다.
상기 명령어 파이프라인은, 상기 원본 명령어 및 상기 복제 명령어를 패치(fetch)하는 패치부; 상기 패치부의 상기 원본 명령어 및 상기 복제 명령어를 순차적으로 디코딩하는 디코딩부; 상기 디코딩부의 디코딩 결과를 실행시키는 실행부; 및 상기 실행부의 실행 결과를 상기 원본 레지스터 파일 및 상기 복제 레지스터 파일 중 하나의 상기 제n 인덱스의 레지스터에 기입하는 기입부;를 포함할 수 있다.
상기 패치부는, 명령어 메모리로부터 원본 프로그램 카운터에 대응되는 상기 원본 명령어를 패치하는 원본 패치부; 및 상기 원본 패치부에 패치되는 상기 원본 명령어를 복제하여 상기 복제 명령어로 저장하는 복제 패치부;를 포함할 수 있다.
상기 패치부는, 명령어 메모리로부터 원본 프로그램 카운터에 대응되는 상기 원본 명령어를 패치하는 원본 패치부; 및 상기 명령어 메모리로부터 상기 원본 프로그램 카운터에 대응되는 상기 원본 명령어를 패치하여 상기 복제 명령어로 저장하는 복제 패치부;를 포함할 수 있다.
상기 디코딩부는, 상기 원본 명령어를 디코딩하여 상기 원본 레지스터 파일의 제m 인덱스의 레지스터를 액세스하고, 상기 복제 명령어를 디코딩하여 상기 복제 레지스터 파일의 제m 인덱스의 레지스터를 액세스하는 디코딩부;를 포함할 수 있다.
상기 원본 명령어에 대응되는 원본 프로그램 카운터가 복제되고 상기 명령어 파이프라인이 상기 복제 명령어를 처리하는 중에 변경되는 복제 프로그램 카운터;가 더 포함되고, 상기 비교부는, 상기 제어 신호에 응답하여, 상기 원본 프로그램 카운터 및 상기 복제 프로그램 카운터를 비교하여 상기 에러 검출 신호로 출력할 수 있다.
상기 복제 명령어의 생성 및 처리, 및 상기 비교부의 비교 동작을 제어하는 상기 제어 신호를 생성하는 복제 제어부;가 더 포함될 수 있다.
상기 복제 제어부는, 상기 원본 명령어가 저장 명령어인 경우, 상기 저장 명령어에 대응되는 로드 명령어를 상기 복제 명령어로 복제하고, 상기 복제 명령어의 실행 결과를 상기 원본 레지스터 파일의 제n 인덱스의 레지스터에 저장시킬 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 프로세서에서의 소프트 에러 검출 방법은, 명령어 파이프라인을 통해 원본 명령어를 실행하는 단계; 상기 원본 명령어의 실행 결과를 원본 레지스터 파일의 제n 인덱스의 레지스터에 저장하는 단계; 상기 원본 명령어를 복제 명령어로 복제하는 단계; 상기 복제 명령어를 상기 명령어 파이프라인을 통해 실행하는 단계; 상기 복제 명령어의 실행 결과를 복제 레지스터 파일의 제n 인덱스의 레지스터에 저장하는 단계; 및 상기 원본 레지스터 파일의 제n 인덱스의 레지스터와 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하는 단계;를 포함할 수 있다.
상기 원본 명령어를 복제 명령어로 복제하는 단계는, 상기 원본 명령어의 실행하는 단계에서 명령어 메모리로부터 상기 명령어 파이프라인으로 패치되는 상기 원본 명령어를 상기 복제 명령어로 복제하는 단계;를 포함할 수 있다.
상기 원본 명령어를 복제 명령어로 복제하는 단계는, 명령어 메모리로부터 원본 프로그램 카운터에 대응되는 상기 원본 명령어를 패치하여 상기 복제 명령어로 저장하는 단계;를 포함할 수 있다.
상기 원본 명령어를 복제 명령어로 복제하는 단계는, 상기 원본 명령어가 저장 명령어인 경우, 상기 저장 명령어에 대응되는 로드 명령어를 상기 복제 명령어로 복제하는 단계;를 포함하고, 상기 복제 명령어의 실행 결과를 상기 복제 레지스터 파일의 제n 인덱스의 레지스터가 아닌 상기 원본 레지스터 파일의 제n 인덱스의 레지스터에 저장하는 단계;가 더 포함될 수 있다.
상기 원본 명령어를 실행하는 단계는, 상기 원본 명령어를 디코딩하여 상기 원본 레지스터 파일의 제m 인덱스의 레지스터를 액세스하는 단계;를 포함하고, 상기 복제 데이터를 실행하는 단계는, 상기 복제 명령어를 디코딩하여 상기 복제 레지스터 파일의 제m 인덱스의 레지스터를 액세스하는 단계;를 포함할 수 있다.
상기 원본 레지스터 파일 및 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하는 단계는, 상기 원본 명령어가 저장 명령어인 때에 수행될 수 있다.
상기 원본 명령어를 실행하는 단계에서 상기 원본 명령어에 대응되는 원본 프로그램 카운터를 변경하고 상기 복제 명령어에 대응되는 복제 프로그램 카운터를 유지하는 단계; 및 상기 복제 명령어를 실행하는 단계에서 상기 복제 프로그램 카운터를 변경하고 상기 원본 프로그램 카운터를 유지하는 단계;가 더 포함될 수 있다.
상기 원본 명령어에 대응되는 프로그램 카운터를 복제 프로그램 카운터로 복제하는 단계; 상기 복제 명령어를 실행하는 중에 상기 복제 프로그램 카운터를 변경하는 단계; 및 상기 원본 프로그램 카운터 및 상기 복제 프로그램 카운터를 비교하는 단계;가 더 포함될 수 있다.
상기 원본 레지스터 파일 및 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하는 단계 및 상기 원본 프로그램 카운터 및 상기 복제 프로그램 카운터를 비교하는 단계는, 서로 다른 명령어 사이클에서 수행될 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 프로세서는, 적어도 둘 이상의 코어를 포함한다. 상기 적어도 둘 이상의 코어는 각각, 각각 제x 명령어 사이클에서 원본 명령어를 처리하고 제x+1 명령어 사이클에서 복제 명령어를 처리하는 다수의 스테이지를 포함하는 명령어 파이프라인; 다수의 레지스터를 포함하고 상기 원본 명령어에 대한 상기 명령어 파이프라인의 처리 결과가 일시적으로 저장되는 원본 레지스터 파일; 상기 제x 명령어 사이클에서 변경되어 상기 제x+1 명령어 사이클까지 유지되는 원본 프로그램 카운터; 상기 원본 레지스터 파일과 동일한 개수의 레지스터를 포함하고, 상기 복제 명령어에 대한 상기 명령어 파이프라인의 처리 결과가 일시적으로 저장되는 복제 레지스터 파일; 상기 제x+1 명령어 사이클에서 변경되어 상기 제x+2 명령어 사이클까지 유지되는 복제 프로그램 카운터; 및 상기 원본 레지스터 파일 및 상기 복제 레지스터 파일의 동일 인덱스의 레지스터를 비교하거나, 상기 원본 프로그램 카운터 및 상기 복제 프로그램 카운터를 비교하여, 에러 검출 신호를 출력하는 비교부;를 포함한다.
본 발명의 실시예에 따른 프로세서 및 프로세서에서의 소프트 에러 검출 방법에 의하면, 소프트 에러 검출을 위한 별도로 코어(core)를 구비하지 아니하므로 리소스를 절약할 수 있고, 원본 명령어에 대한 원본 레지스터 파일과 복제 명령어에 대응되는 레지스터 파일이 동일한 구조로 구비됨으로써 소프트 에러 검출에 요구되는 처리 과정의 복잡도를 줄일 수 있다.
도 1은 본 발명의 실시예에 따른 프로세서를 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 프로세서에서의 소프트 에러 검출 방법을 나타내는 도면이다.
도 3은 본 발명의 실시예에 따른 명령어 파이프라인을 나타내는 도면이다.
도 4는 도 3의 명령어 파이프라인의 동작을 나타내는 도면이다.
도 5는 본 발명의 실시예에 따른 프로세서를 나타내는 도면이다.
도 6은 본 발명의 실시예에 따른 복제 제어부의 제어 동작을 나타내는 도면이다.
도 7은 본 발명의 실시예에 따른 원본 명령어의 복제 방법을 나타내는 도면이다.
도 8은 본 발명의 실시예에 따른 프로그램 카운터를 복제하여 소프트 에러를 검출하는 프로세서를 나타내는 도면이다.
도 9는 본 발명의 실시예에 따른 명령어 파이프라인을 나타내는 도면이다.
도 10 및 도 11은 본 발명의 실시예에 따른 저장 명령어에 대한 소프트 에러 검출 방법을 나타내는 도면이다.
도 12는 본 발명의 실시예에 따른 프로그램 카운터에 대한 제어가 적용되는 소프트 에러 검출 방법을 나타내는 도면이다.
도 13은 본 발명의 실시예에 따른 에러 검출 시점에 대한 제어가 적용되는 소프트 에러 검출 방법을 나타내는 도면이다.
도 14 및 도 15는 각각 특정 명령어에 대한 본 발명의 실시예에 따른 프로세서에서의 소프트 에러 검출 동작을 설명하기 위한 도면이다.
도 16은 본 발명의 실시예에 따른 프로세서를 나타내는 도면이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시예에 따른 프로세서를 나타내는 도면이고, 도 2는 본 발명의 실시예에 따른 프로세서에서의 소프트 에러 검출 방법을 나타내는 도면이다.
도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 프로세서(processor, 100)는 명령어 파이프라인(instruction pipeline, 110), 원본 레지스터 파일(original register file, 120), 복제 레지스터 파일(duplicate register file, 130) 및 비교부(140)를 포함하여, 소프트 에러 검출에 요구되는 리소스를 최소화하면서도 처리 과정을 단순화할 수 있다.
본 발명의 실시예에 따른 프로세서에서의 소프트 에러 검출 방법(200)은, 원본 명령어를 실행하는 단계(S210), 원본 명령어의 실행 결과를 원본 레지스터 파일의 제n 인덱스(index)의 레지스터에 저장하는 단계(S220), 원본 명령어를 복제 명령어로 복제하는 단계(S230), 복제 명령어를 실행하는 단계(S240), 복제 명령어의 실행 결과를 복제 레지스터 파일의 제n 인덱스의 레지스터에 저장하는 단계(S250), 및 원본 레지스터 파일의 제n 인덱스의 레지스터와 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하는 단계(S260)를 포함하여, 소프트 에러 검출에 요구되는 리소스를 최소화하면서도 처리 과정을 단순화할 수 있다.
본 발명의 실시예에 따른 프로세서(100)는 본 발명의 실시예에 따른 소프트 에러 검출 방법(200)으로 소프트 에러를 검출할 수 있다. 또한, 본 발명의 실시예에 따른 소프트 에러 검출 방법(200)은 본 발명의 실시예에 따른 프로세서(100)에서 실행될 수 있다. 다만, 이에 한정되는 것은 아니다. 본 발명의 실시예에 따른 프로세서(100)는 소프트 에러 검출 방법(200)과 다른 방법으로 소프트 에러를 검출할 수 있다. 또한, 본 발명의 실시예에 따른 소프트 에러 검출 방법(200)은 프로세서(100)과 다른 프로세서에서 실행될 수 있다. 다만, 이하에서는 설명의 편의를 위해, 본 발명의 실시예에 따른 프로세서(100)가 소프트 에러 검출 방법(200)으로 소프트 에러를 검출하고, 본 발명의 실시예에 따른 소프트 에러 검출 방법(200)이 프로세서(100)에서 실행되는 예에 한하여 기술한다.
계속해서 도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 프로세서(100)의 명령어 파이프라인(110)는 원본 명령어(OIN)를 순차적으로 처리한다(S210).
명령어 파이프라인(110)은 원본 명령어(OIN)와 함께, 원본 명령어(OIN)에 대응되는 복제 명령어(DIN)를 순차적으로 처리한다(S240). 예를 들어, 복제 명령어(DIN)는 원본 명령어(OIN)를 복제하여 생성된다(S230). 본 발명의 실시예에 따른 원본 명령어(OIN)를 복제하여 복제 명령어(DIN)로 생성하는 다양한 방법에 대해서는 후술된다.
명령어 파이프라인(110)는 원본 명령어(OIN) 또는 복제 명령어(DIN)를 순차적으로 처리한다 함은, 프로세서(100)의 명령어 사이클(instruction cycle)에 동기되어 원본 명령어(OIN) 또는 복제 명령어(DIN)의 실행에 요구되는 명령어 파이프라인(110)에 포함되는 전체 스테이지(stage)를 수행하여, 원본 명령어(OIN) 또는 복제 명령어(DIN)의 실행 결과를 생성하는 과정을 의미할 수 있다. 이하 동일하다.
도 3은 본 발명의 실시예에 따른 명령어 파이프라인을 나타내는 도면이고, 도 4는 도 3의 명령어 파이프라인의 동작을 나타내는 도면이다.
도 1, 도 3 및 도 4를 참조하면, 본 발명의 실시예에 따른 명령어 파이프라인(110)은 패치부(Fetch Unit, FU), 디코딩부(Decoding Unit, DU), 실행부(Execution Unit, EU) 및 기입부(Write-back Unit, WU)을 포함할 수 있다.
패치부(FU)는 원본 명령어(OIN) 및 복제 명령어(DIN)를 패치(fetch)할 수 있다. 패치부(FU)는 선입선출 버퍼(FIFO buffer)에 의한 큐(queue)로 구현될 수 있다. 패치부(FU)는 외부로부터 원본 명령어(OIN)를 패치하는 원본 패치부(OFU) 및 원본 패치부에 패치되는 원본 명령어(OIN)를 복제하여 복제 명령어(DIN)로 저장하는 복제 패치부(DFU)를 포함할 수 있다. 즉, 복제 명령어(DIN)는 원본 패치부(OFU)의 원본 명령어(OIN)를 복제한 결과로 생성될 수 있다.
이 경우, 제1 명령어 사이클 및 제2 명령어 사이클에서 각각 제1 원본 명령어(INS1) 및 제2 원본 명령어(INS2)가 원본 패치부(OFU)로 패치되면, 제1 원본 명령어(INS1) 및 제2 원본 명령어(INS2)가 제2 명령어 사이클 및 제3 명령어 사이클에서 각각 복제 패치부(DFU)로 패치될 수 있다.
디코딩부(DU)는 원본 명령어(OIN) 및 복제 명령어(DIN)를 순차적으로 디코딩할 수 있다. 원본 명령어(OIN) 및 복제 명령어(DIN)의 연산 코드(opcode)를 파싱(parsing)하고 피연산자(operand)가 나타내는 레지스터를 액세스할 수 있다. 예를 들어, 디코딩부(DU)는, 원본 명령어(OIN)를 디코딩하여 원본 레지스터 파일(120)의 제m 인덱스의 레지스터(Rm)를 액세스하고, 복제 명령어(DIN)를 디코딩하여 복제 레지스터 파일(130)의 제m 인덱스의 레지스터(Rm')를 액세스할 수 있다.
이하에서는 설명의 편의를 위해 필요에 따라 원본 레지스터 파일(120)의 레지스터가 원본 레지스터로, 복제 레지스터 파일(130)의 레지스터가 복제 레지스터로 약칭되어 기술될 수 있다. 또는 본 발명의 이해함에 있어 불명확성을 야기하지 아니하는 한도에서 레지스터, 레지스터의 인덱스 또는 레지스터 값이 혼용되어 사용될 수 있다.
본 발명의 실시예에 따른 명령어 파이프라인(110)은 디코딩부(DU)가 원본 명령어(OIN) 및 복제 명령어(DIN) 중 하나를 디코딩하고, 원본 레지스터(Rm)와 복제 레지스터(Rm') 중 하나를 처리하기 위해, 제1 멀티플렉서(multiplexer, MUX1) 및 제2 멀티플렉서(MUX2)를 더 포함할 수 있다. 제1 멀티플렉서(MUX1) 및 제2 멀티플렉서(MUX2)는 각각 제어 신호(XCON)에 응답하여, 디코딩부(DU)에 원본 명령어(OIN) 및 복제 명령어(DIN) 중 하나, 그리고 원본 레지스터(Rm)와 복제 레지스터(Rm') 중 하나를 전달할 수 있다.
제1 원본 명령어(INS1) 및 제2 원본 명령어(INS2)에 대한 디코딩 동작이 각각 제2 명령어 사이클 및 제 4 명령어 사이클에서 수행되고, 제1 복제 명령어(INS1') 및 제2 복제 명령어(INS2')에 대한 디코딩 동작이 각각 제3 명령어 사이클 및 제 5 명령어 사이클에서 수행될 수 있다.
실행부(EU)는 디코딩부(DU)의 디코딩 결과에 대응되는 연산을 수행할 수 있다. 예를 들어, 원본 명령어(OIN) 및 복제 명령어(DIN)의 연산 코드가 임의의 두 개의 레지스터를 더하는 "ADD"인 경우, 실행부(EU)는 ALU(Arithmetic and Logical Unit)을 통해, 두 레지스터를 더한 결과를 출력할 수 있다.
기입부(WU)는 실행부(EU)의 실행 결과를 원본 레지스터 파일(120) 및 복제 레지스터 파일(130) 중 제n 인덱스의 레지스터(Rn')에 기입할 수 있다. 제1 원본 명령어(INS1)는 제3 명령어 사이클 및 제 4 명령어 사이클에서 각각 실행부(EU) 및 기입부(WU)에 의해 처리되어 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn)에 기입되고, 제1 복제 명령어(INS1')는 제4 명령어 사이클 및 제 5 명령어 사이클에서 각각 실행부(EU) 및 기입부(WU)에 의해 처리되어 복제 레지스터 파일(130)의 제n 인덱스의 레지스터(Rn')에 기입될 수 있다. 제2 원본 명령어(INS2) 및 제2 복제 명령어(INS2')도 동일한 동작을 통해 대응되는 레지스터에 기입될 수 있다.
이렇듯, 본 발명의 실시예에 따른 하나의 명령어 파이프라인(110)의 구조를 통해 원본 명령어(OIN) 및 복제 명령어(DIN)를 순차적으로 수행함으로써, 소프트 에러 검출을 위한 하드웨어 리소스, 전력 및 수행 시간의 증가를 최소화할 수 있다.
본 발명의 실시예에 따른 프로세서(100)는 또한, 원본 명령어(OIN) 및 복제 명령어(DIN)의 실행에 요구되는 피연산자 또는 원본 명령어(OIN) 및 복제 명령어(DIN)의 실행 결과가 일시적으로 저장되는 레지스터 파일이 동일하게 구비됨으로써, 소프트 에러 검출 과정을 단순화할 수 있다. 이에 대하여 설명한다.
원본 레지스터 파일(120)은 다수의 레지스터를 포함할 수 있다. 다수의 레지스터 각각은 32 bit 또는 64 bit 등의 동일한 크기로 구비될 수 있다. 전술된 바와 같이, 원본 레지스터 파일(120)의 레지스터로 원본 명령어(OIN)에 명령어 파이프라인(110)에서의 처리 결과가 저장될 수 있다. 예를 들어, 기입부(WU)에 의해 제1 원본 명령어(INS1)의 처리 결과가 제n 인덱스의 레지스터(Rn)에 저장될 수 있다. 각 레지스터는 인덱스(R0~Rz)로 나타내어질 수 있다.
복제 명령어(DIN)에 대한 피연산자 또는 복제 명령어(DIN)의 처리 결과가 일시적으로 저장되는 복제 레지스터 파일(130)은 그 인덱스가 원본 레지스터 파일(120)의 인덱스와 동일하게 설정될 수 있다. 도 1의 예와 같이, 원본 레지스터 파일(120)의 인덱스가 R0 내지 RZ로 설정되는 경우, 복제 레지스터 파일(130)의 인덱스 또한 동일하게 R0 내지 RZ로 설정된다. 다만, 본 발명을 기술함에 있어 원본 레지스터 파일(120)의 인덱스와 원본 레지스터 파일(120)의 인덱스를 구분하기 위해, 원본 레지스터 파일(120)의 인덱스는 R0 내지 RZ로, 복제 레지스터 파일(130)의 인덱스는 R0' 내지 RZ'로 구분하여 나타낸다. 또한, 복제 레지스터 파일(130)은 원본 레지스터 파일(120)과 포함하는 레지스터의 크기 및 개수가 동일할 수 있다.
복제 명령어(DIN)에 대한 명령어 파이프라인(110)에서의 처리 결과는, 원본 명령어(OIN)에 대한 처리 결과가 저장되는 원본 레지스터 파일(120)의 인덱스와 동일한 인덱스의 복제 레지스터 파일(130)의 레지스터에 저장된다. 전술된 예와 같이 제1 원본 명령어(INS1)의 처리 결과가 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn)에 저장되는 경우, 제1 원본 명령어(INS1)에 대응되는 제1 복제 명령어(INS1')의 처리 결과는 복제 레지스터 파일(130)의 제n 인덱스의 레지스터(Rn, Rn')에 저장될 수 있다.
임의의 명령어의 처리 결과는 후속하는 다른 명령어의 피연산자로 사용될 수 있으므로, 원본 명령어(OIN)의 처리에 사용되는 피연산자 및 복제 명령어(DIN)의 처리에 사용되는 피연산자가 저장되는 레지스터의 인덱스도 동일하게 설정된다. 전술된 예의 경우, 원본 명령어(OIN) 및 복제 명령어(DIN)의 피연산자가 모두 제m 인덱스의 레지스터(Rm, Rm')에 저장되어 있을 수 있다.
비교부(140)는 제어 신호(XCON)에 응답하여, 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn)와 복제 레지스터 파일(130)의 제n 인덱스의 레지스터(Rn')를 비교하여 에러 검출 신호(XERR)로 출력할 수 있다. 예를 들어, 원본 레지스터(Rn)와 복제 레지스터(Rn')가 동일한 경우 에러 검출 신호(XERR)는 논리 로우("L")로 출력되어 소프트 에러가 검출되지 아니함을 나타낼 수 있다. 또는 원본 레지스터(Rn)와 복제 레지스터(Rn')가 상이한 경우 에러 검출 신호(XERR)는 논리 하이("H")로 출력되어 소프트 에러가 검출되었음을 나타낼 수 있다.
이렇듯, 복제 레지스터 파일(130)이 원본 레지스터 파일(120)과 별개로 구비되면서, 원본 레지스터 파일(120)의 구조가 동일하고 원본 명령어(OIN) 및 복제 명령어(DIN)에 대해 동일한 인덱스가 할당됨에 따라, 원본 명령어(OIN)의 실행에 있어 야기될 수 있는 소프트 에러를 검출하는 과정을 단순화할 수 있다. 따라서, 소프트 에러 검출에 요구되는 리소스, 전력 및 시간이 절약될 수 있다.
도 5는 본 발명의 실시예에 따른 프로세서를 나타내는 도면이다.
도 5을 참조하면, 본 발명의 실시예에 따른 프로세서(100)는 도 1과 마찬가지로, 명령어 파이프라인(110), 원본 레지스터 파일(120), 복제 레지스터 파일(130) 및 비교부(140)를 포함한다. 나아가, 도 5의 프로세서(100)는 프로그램 카운터 레지스터(program counter register, 150), 명령어 메모리(160) 및 복제 제어부(170)를 더 포함할 수 있다.
프로그램 카운터 레지스터(150)는 실행하고자 하는 원본 명령어(OIN)를 특정하는 원본 프로그램 카운터(OPC)를 저장할 수 있다. 원본 프로그램 카운터(OPC)에 대응되는 명령어 메모리(160)의 어드레스에 저장되어 있는 원본 명령어(OIN)가 명령어 파이프라인(110)으로 패치될 수 있다. 원본 프로그램 카운터(OPC)는 원본 명령어(OIN)가 명령어 파이프라인(110)으로 패치된 후 그 값이 변경될 수 있다. 예를 들어, 원본 프로그램 카운터(OPC)는 원본 명령어(OIN)가 패치된 후, 그 값이 "0x0004"에서 "0x0008"로 하나 증가될 수 있다.
복제 제어부(170)는 소프트 에러 검출을 위해 복제 명령어(DIN)의 생성 및 처리를 제어하는 제어 신호(XCON)를 생성할 수 있다. 예를 들어, 복제 제어부(170)는 명령어 메모리(160)에서 명령어 파이프라인(110)으로 패치되는 원본 명령어(OIN)를 확인하여 원본 명령어(OIN)의 종류에 따라 대응되는 복제 명령어(DIN)가 복제되도록 제어할 수 있다.
예를 들어, 복제 제어부(170)는 원본 명령어(OIN)와 동일하게 복제 명령어(DIN)가 복제되도록 제어할 수 있다.
도 6은 본 발명의 실시예에 따른 복제 제어부의 제어 동작을 나타내는 도면이다.
도 5 및 도 6을 참조하면, 본 발명의 실시예에 따른 복제 제어부(170)는, 프로세서(100)가 ARM 프로세서인 경우, 원본 레지스터 파일(120)의 레지스터 R0에 레지스터 R1과 R2의 합을 저장하는 원본 명령어(OIN)"ADD R0, R1, R2"에 대해, 복제 레지스터 파일(130)의 레지스터 R0'에 레지스터 R1'와 R2'의 합을 저장하는 복제 명령어(DIN)"ADD R0', R1', R2'"로 복제되도록 제어할 수 있다.
다시 도 5를 참조하면, 복제 제어부(170)는 원본 명령어(OIN)와 다른 종류로 복제 명령어(DIN)가 복제되도록 제어할 수도 있다. 예를 들어, 프로세서(100)가 ARM 프로세서인 경우, 복제 제어부(170)는 명령어 파이프라인(110)으로 패치되는 원본 명령어(OIN)가 "STR", 즉 메모리로의 저장을 지시하는 명령인 경우, 복제 명령어(DIN)는 "LDR", 즉 메모리에서 레지스터로의 로드를 지시하는 명령으로 복제되도록 제어할 수 있다. 원본 명령어(OIN)가 "STR"인 예에 대한 더 자세한 사항은 후술된다.
복제 제어부(170)는 또한, 명령어 파이프라인(110)의 제1 및 제2 멀티플렉서(도 3의 MUX1, MUX2)의 제어 등 원본 레지스터 파일(120) 및 복제 레지스터 파일(130)의 업데이트를 제어하거나, 비교부(140)에서 비교하는 대상 등 비교 동작을 제어하는 제어 신호(XCON)를 생성할 수 있다.
도 7은 본 발명의 실시예에 따른 원본 명령어의 복제 방법을 나타내는 도면이다.
도 7을 참조하면, 원본 패치부(OFU)에는 명령어 메모리(160)로부터 원본 프로그램 카운터(OPC)에 대응되는 원본 명령어(OIN)가 패치될 수 있다. 복제 패치부(DFU)에는 명령어 메모리(160)로부터 원본 프로그램 카운터(OPC)에 대응되는 원본 명령어(OIN)가 복제 명령어(DIN)로 패치될 수 있다. 이렇듯 본 발명의 실시예에 따른 프로세서(100)는 요구되는 조건 및 상황에 따라 다양한 방식으로 원본 명령어(OIN)를 복제할 수 있어, 소프트 에러 검출에 있어 제어의 유연성을 향상시킬 수 있다.
이상에서는 본 발명의 실시예에 따른 프로세서(100)에서 데이터 흐름에 대한 소프트 에러를 검출하기 위해 원본 레지스터 파일(120)이 복제되는 예에 대하여 설명하였다. 이하에서는 본 발명의 실시예에 따른 프로세서(100)에서 제어 흐름에 대한 소프트 에러도 함께 검출하거나 최종 결과가 아닌 실행 단계의 소프트 에러를 유휴 리소스를 활용하여 검출할 수 있는 실시예에 대해 기술한다.
도 8은 본 발명의 실시예에 따른 프로그램 카운터를 복제하여 소프트 에러를 검출하는 프로세서를 나타내는 도면이다.
도 8을 참조하면, 본 발명의 실시예에 따른 프로세서(100)는 도 6과 마찬가지로, 명령어 파이프라인(110), 원본 레지스터 파일(120), 복제 레지스터 파일(130), 비교부(140), 프로그램 카운터 레지스터(150), 명령어 메모리(160) 및 복제 제어부(170)를 더 포함할 수 있다. 나아가, 도 8의 프로그램 카운터 레지스터(150)는 원본 프로그램 카운터 레지스터(150) 및 복제 프로그램 카운터 레지스터(150)를 포함할 수 있다.
원본 프로그램 카운터 레지스터(150)는 전술된 바와 같이, 원본 명령어(OIN)에 대응되는 원본 프로그램 카운터(OPC)를 저장할 수 있다. 복제 프로그램 카운터 레지스터(150)는 복제 명령어(DIN)에 대응되는 복제 프로그램 카운터(DPC)를 저장할 수 있다.
복제 프로그램 카운터(DPC)는 원본 명령어(OIN)에 대한 제1 명령어 사이클에서 원본 프로그램 카운터(OPC)를 복제하여 저장될 수 있다. 제1 명령어 사이클 이후에는 복제 프로그램 카운터(DPC)는 명령어 파이프라인(110)에서 복제 명령어(DIN)를 처리하는 중에 변경될 수 있다. 예를 들어, 명령어 파이프라인(110)에서 복제 명령어(DIN)가 패치된 후에 변경될 수 있다.
이때, 비교부(140)는 제어 신호(XCON)에 응답하여, 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)를 비교하여 에러 검출 신호(XERR)로 출력할 수 있다.
비교부(140)는 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)가 동일한 경우 에러 검출 신호(XERR)는 논리 로우("L")로 출력되어 소프트 에러가 검출되지 아니함을 나타낼 수 있다. 또는 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)가 상이한 경우 에러 검출 신호(XERR)는 논리 하이("H")로 출력되어 소프트 에러가 검출되었음을 나타낼 수 있다.
원본 명령어(OIN)의 실행 중에 소프트 에러가 발생하여 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)가 달라지는 경우는 다음의 두 가지가 있을 수 있다. 첫째, 원본 프로그램 카운터(OPC) 자체에 에러가 존재하여 실행되어야 하는 명령어가 아닌, 명령어 메모리(160)의 다른 어드레스에 저장되는 명령어가 잘못 실행되는 경우이다. 특히, ARM 프로세서의"JMP"(점프) 명령 또는 "BEQ"(브랜치) 명령과 같이 프로그램 카운터가 명령어의 실행 결과에 대응되는 임의의 주소 값으로 변경되는 때에, 프로그램 카운터에 에러가 발생할 확률이 높을 수 있다. 둘째, 원본 프로그램 카운터(OPC)는 정상이나 원본 프로그램 카운터(OPC)에 대응되는 원본 명령어(OIN)의 실행에 에러가 존재하는 경우이다.
도 9는 본 발명의 실시예에 따른 명령어 파이프라인을 나타내는 도면이다.
도 5 및 도 9를 참조하면, 본 발명의 실시예에 따른 명령어 파이프라인(110)은 도 3과 마찬가지로, 패치부(FU), 디코딩부(DU), 실행부(EU) 및 기입부(WU)를 포함하고, 나아가 프로세서(100)의 외부에 위치하는 데이터 메모리(data memory)로 데이터를 전송하거나 메모리로부터 데이터를 수신하는 메모리 액세스부(MU)를 더 포함할 수 있다. 예를 들어, 원본 명령어(OIN)가 저장 명령어("STR") 인 경우, 원본 레지스터 파일(120)의 임의의 레지스터에 저장된 데이터가 메모리 액세스부(MU)를 통해 데이터 메모리로 전송될 수 있다. 또는 원본 명령어(OIN)가 로드 명령어("LDR")인 경우, 메모리 액세스부(MU)를 통해 데이터 메모리로부터 원본 레지스터 파일(120)의 임의의 레지스터로 데이터로 로딩될 수 있다.
도 10 및 도 11은 본 발명의 실시예에 따른 저장 명령어에 대한 소프트 에러 검출 방법을 나타내는 도면이다.
먼저 도 8 및 도 10을 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출 방법(200)은 저장 명령어에 대한 따른 소프트 에러를 검출함에 있어, 저장 명령어("STR") 가 아닌 원본 명령어(OIN)에 대한 경우와 마찬가지로, 원본 명령어(OIN)를 실행하는 단계(S210) 및 원본 명령어(OIN)의 실행 결과를 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn)에 저장하는 단계(S220)를 포함한다.
나아가, 복제 제어부(170)는 원본 명령어(OIN)가 저장 명령어("STR")인 경우(S232), 복제 명령어(DIN)를 로드 명령어("LDR")로 설정하여(S234), 원본 명령어(OIN)를 복제 명령어(DIN)로 복제할 수 있다(S230).
복제 명령어(DIN)를 로드 명령어("LDR")인 때에는, 복제 명령어(DIN)를 실행한 후(S240), 복제 명령어(DIN)의 실행 결과는 복제 레지스터 파일(130)의 제n 인덱스의 레지스터(Rn')에 저장되지 아니하고, 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn)에 저장될 수 있다(S230).
반면, 비교부(140)는 다른 명령어와 마찬가지로, 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn) 및 복제 레지스터 파일(130)의 제n 인덱스의 레지스터(Rn')를 비교하여 에러 검출 신호(XERR)를 출력할 수 있다.
다음으로 도 10 및 도 11을 참조하면, 본 발명의 실시예에 따른 프로세서(100)가 ARM 프로세서인 경우 원본 명령어(OIN)"STR R0 ← [R1]"를 실행함에 있어(S210), 원본 레지스터 파일(120)의 레지스터 R0이 액세스되고(①), 데이터 메모리의 어드레스 [R1]에 저장된다(②). 어드레스 [R1]는 원본 레지스터 파일(120)의 레지스터 R1에 저장된 값이다. 이때, 원본 명령어(OIN)"STR R0 ← [R1]"의 실행에 따라 원본 레지스터 파일(120)의 레지스터 R0은 그 값을 유지하게 된다(S220).
다음으로, 원본 명령어(OIN)"STR R0 ← [R1]"에 대해 복제 명령어(DIN)"LDR R0 ← [R1']"가 복제된다(S234), 복제 레지스터 파일(130)의 레지스터 R1'가 액세스되고(③), 데이터 메모리의 어드레스 [R1']에 저장된 데이터 R0가 프로세서(100)로 전달된다(④, S240). 프로세서(100)로 전달된 데이터 R0는 도 7의 명령어 파이프라인(110)의 메모리 액세스부(MU)와 기입부(WU)를 통해, 원본 레지스터 파일(120)의 레지스터 R0에 저장된다(⑤, S255).
이때, 복제 레지스터 파일(130)의 레지스터 R0'에는 원본 명령어(OIN)"STR R0 ← [R1]"가 실행되기 전에 실행된 원본 명령어에 대응되는 복제 명령어의 실행 결과가 저장되어 있고, 에러가 발생되지 아니하였다면 원본 레지스터 파일(120)의 레지스터 R0와 동일한 값이 저장된 상태일 것이다.
이에, 비교부(140)는 복제 명령어(DIN)"LDR R0 ← [R1']"의 실행 결과인 원본 레지스터 파일(120)의 레지스터 R0와, 원본 명령어(OIN)"STR R0 ← [R1]"의 실행 결과에 대응되는 복제 레지스터 파일(130)의 레지스터 R0'를 비교하여(S260), 에러 검출 신호(XERR)를 출력할 수 있다.
저장 명령어("SRT")의 실행에 소프트 에러가 발생하여, 1) 잘못된 데이터를 정상적인 데이터 메모리 영역에 저장하는 경우, 2) 정상적인 데이터를 잘못된 어드레스에 저장하는 경우 모두에 대해, 본 발명의 실시예에 따른 프로세서(100) 및 그 소프트 에러 검출 방법(200)은 간단하고 정확하게 검출할 수 있다. 복제 레지스터 파일(130)의 레지스터 R0'에 에러가 존재하지 아니한다는 전제 하에, 1)의 경우는 비교부(140)가 비교하는 원본 레지스터 파일(120)의 레지스터 R0 자체가 손상된 데이터이고, 2)의 경우 비교부(140)가 비교하는 원본 레지스터 파일(120)의 레지스터 R0은 아예 다른 데이터일 것이다. 따라서, 두 경우 모두에서 복제 레지스터 파일(130)의 레지스터 R0'와 원본 레지스터 파일(120)의 레지스터 R0가 달라져 비교부(140)는 논리 하이("H")의 에러 검출 신호(XERR)를 생성할 수 있다.
이렇듯, 본 발명의 실시예에 따른 프로세서(100) 및 그 소프트 에러 검출 방법(200)에 의하면, 소프트 에러가 발생하여 저장 명령어("SRT")가 잘못 실행될 수 있는 두 가지 경우 모두를 간단하고 정확하게 검출할 수 있다.
도 12는 본 발명의 실시예에 따른 프로그램 카운터에 대한 제어가 적용되는 소프트 에러 검출 방법을 나타내는 도면이다.
도 8 및 도 12를 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출 방법(200)은 도 2와 마찬가지로, 원본 명령어(OIN)를 실행하는 단계(S210), 원본 명령어(OIN)의 실행 결과를 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn)에 저장하는 단계(S220), 원본 명령어(OIN)를 복제 명령어(DIN)로 복제하는 단계(S230), 복제 명령어(DIN)를 실행하는 단계(S240), 복제 명령어(DIN)의 실행 결과를 복제 레지스터 파일(130)의 제n 인덱스의 레지스터(Rn')에 저장하는 단계(S250), 및 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn)와 복제 레지스터 파일(130)의 제n 인덱스의 레지스터(Rn')를 비교하는 단계(S260)를 포함한다.
이때, 도 8의 소프트 에러 검출 방법(200)에 의하면, 원본 명령어(OIN)와 복제 명령어(DIN)의 실행을 위한 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)를 제어함에 있어, 원본 명령어(OIN)를 실행하는 단계(S210)에서 두 명령어 사이클 주기로 원본 프로그램 카운터(OPC)를 변경하고 복제 프로그램 카운터(DPC)를 유지할 수 있다(S270-2).
예를 들어, 원본 프로그램 카운터(OPC)는 제1 명령어 사이클에서 그 값을 "0x0000"에서 "0x0004"로 하나 증가시키고 복제 프로그램 카운터(DPC)는 그 값을 "0x0000"으로 유지한 후, 제3 명령어 사이클에서 그 값을 "0x0004"에서 "0x0008"로 하나 증가시키고 복제 프로그램 카운터(DPC)는 그 값을 "0x0004"으로 유지할 수 있다. 참고로, 원본 명령어(OIN)가 처음으로 실행되는 제1 명령어 사이클에서, 즉 원본 프로그램 카운터(OPC)가 명령어 메모리(160)의 첫 어드레스 "0x0000"를 가리키는 경우, 복제 프로그램 카운터(DPC)는 원본 프로그램 카운터(OPC)를 복제하여 "0x0000"의 값을 가질 수 있다.
또한 도 8의 소프트 에러 검출 방법(200)에 의하면, 원본 명령어(OIN)와 복제 명령어(DIN)의 실행을 위한 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)를 제어함에 있어, 복제 명령어(DIN)를 실행하는 단계(S240)에서 두 명령어 사이클 주기로 원본 프로그램 카운터(OPC)를 유지하고 복제 프로그램 카운터(DPC)를 변경할 수 있다(S270-4). 예를 들어, 복제 프로그램 카운터(DPC)는 원본 프로그램 카운터(OPC)는 제1 명령어 사이클에서 그 값을 "0x0000"에서 "0x0004"로 하나 증가시키고 복제 프로그램 카운터(DPC)는 그 값을 "0x0000"으로 유지한 후, 제3 명령어 사이클에서 그 값을 "0x0004"에서 "0x0008"로 하나 증가시키고 복제 프로그램 카운터(DPC)는 그 값을 "0x0004"으로 유지할 수 있다.
이렇듯, 본 발명의 실시예에 따른 하나의 명령어 파이프라인(110)의 구조를 통해 원본 명령어(OIN) 및 복제 명령어(DIN)를 순차적으로 실행함에 있어 최적화된 프로그램 카운터 제어 동작을 수행함으로써, 소프트 에러 검출에 요구되는 하드웨어 리소스, 소모 전력 및 수행 시간의 증가를 최소화할 수 있다.
도 13은 본 발명의 실시예에 따른 에러 검출 시점에 대한 제어가 적용되는 소프트 에러 검출 방법을 나타내는 도면이다.
도 8 및 도 13을 참조하면, 본 발명의 실시예에 따른 소프트 에러 검출 방법(200)은 비교부(140)가 에러 검출 신호(XERR)를 생성함에 있어, 원본 명령어(OIN)가 저장 명령어("STR")이니 경우, 원본 레지스터 파일(120)의 제n 인덱스의 레지스터(Rn)와 복제 레지스터 파일(130)의 제n 인덱스의 레지스터(Rn')의 비교를 수행할 수 있다(S262). 비교부(140)는 S262의 비교 동작을 저장 명령어("STR")의 실행이 완료된 시점에서 수행할 수 있다. 어느 시점에 어느 명령어가 실행이 완료되었는지는, 복제 제어부(170)가 명령어 파이프라인(110)의 마지막 단계인 기입부(WU)로부터 실행이 완료된 명령어에 대한 정보를 수신하여 관련된 제어 동작을 수행함으로써 확인될 수 있다.
또한, 본 발명의 실시예에 따른 소프트 에러 검출 방법(200)은 제n 인덱스의 레지스터(Rn, Rn')의 비교(S262)와 다른 시점에서 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)를 비교할 수 있다(S264).
전술되는 바와 같이, 원본 명령어(OIN)와 복제 명령어(DIN)가 번갈아 실행되므로 비교부(140)는 두 명령어 사이클 마다 레지스터 값 프로그램 카운터 값을 비교하여 소프트 에러를 검출할 수 있을 것이다. 그런데, 원본 레지스터 파일(120)에는 원본 명령어(OIN)의 실행 결과가 임시적으로 저장되는 것이고, 하나의 원본 명령어(OIN) 또는 다수의 원본 명령어(OIN)에 대한 최종적인 실행 결과는 프로세서(100) 외부의 데이터 메모리에 전송되는 값 또는 데이터일 수 있다. 본 발명의 실시예에 따른 프로세서(100) 및 소프트 에러 검출 방법(200)에 의하면, 최종적인 명령어 수행 결과에 대하여 레지스터 값의 비교 동작을 수행함으로써, 소프트 에러 검출에 요구되는 전력 및 시간이 절약될 수 있다.
또한, 본 발명의 실시예에 따른 프로세서(100) 및 소프트 에러 검출 방법(200)에 의하면, 최종적인 실행 결과에 대해 비교 동작을 수행하는 것과 함께, 비교부(140)가 레지스터 값에 대한 비교 동작을 수행하지 아니하는 사이클에서 상대적으로 리소스 할당이 크지 아니하는 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)를 비교하여 소프트 에러를 검출함으로써, 그 검출 정확도를 더 향상시킬 수 있다. 전술된 바와 같이, 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)를 비교를 통해. 프로그램 카운터에 대한 소프트 에러 뿐만 아니라, 명령어 실행 과정의 다른 소프트 에러도 검출될 수 있다.
도 14 및 도 15는 각각 특정 명령어에 대한 본 발명의 실시예에 따른 프로세서에서의 소프트 에러 검출 동작을 설명하기 위한 도면이다.
도 8, 도 14 및 도 15를 참조하면, 본 발명의 실시예에 따른 프로세서(100)에서 제1 원본 명령어(INS1) "ADD R0, R1, R2", 제2 원본 명령어(INS2) "R1 = 0x0100", 및 제3 원본 명령어(INS3) "STR R0 ← [R1]"가 순차적으로 실행될 수 있다. 이때, 제1 원본 명령어(INS1) 내지 제3 원본 명령어(INS3)에 대해, 제1 복제 명령어(INS1') 내지 제3 복제 명령어(INS3')가 복제되어 실행될 수 있다. 즉, 제1 복제 명령어(INS1') "ADD R0', R1', R2'", 제2 복제 명령어(INS2') "R1' = 0x0100", 및 제3 복제 명령어(INS3') "LDR R0 ← [R1']"가 순차적으로 실행될 수 있다.
구체적으로 제1 명령어 사이클에서, 제1 원본 명령어(INS1)가 원본 패치부(OFU)에 패치될 수 있다. 이에 따라, 원본 프로그램 카운터(OPC)는 다음 어드레스 "0x0004"를 가리키도록 변경되고, 복제 프로그램 카운터(DPC)는 초기화시 복제된 원본 프로그램 카운터(OPC) 값 "0x0000"을 유지할 수 있다.
다음으로 제2 명령어 사이클에서, 제2 원본 명령어(INS2) 및 제1 복제 명령어(INS1')가 각각 원본 패치부(OFU) 및 복제 패치부(DFU)에 패치될 수 있다. 이에 따라, 원본 프로그램 카운터(OPC)는 기존 어드레스 "0x0000"을 유지하고, 복제 프로그램 카운터(DPC)는 다음 어드레스 "0x0004"를 가리키도록 변경될 수 있다.
이와 함께, 제1 원본 명령어(INS1)는 디코딩부(DU)에 의해 디코딩되어 원본 레지스터 파일(120)의 레지스터 R1 및 R2가 액세스될 수 있다. 참고로, 도 15는 제1 복제 명령어(INS1')가 제2 명령어 사이클에서 복제 패치부(DFU)에 패치되는 것으로 도시하고 있으나, 제1 명령어 사이클에서 제1 원본 명령어(INS1)와 동시에 패치될 수도 있다.
제3 명령어 사이클에서, 제2 원본 명령어(INS2)가 원본 패치부(OFU)에 홀딩(holding)되고 제2 복제 명령어(INS2')가 복제 패치부(DFU)에 패치될 수 있다. 이와 함께, 제1 복제 명령어(INS1')는 디코딩부(DU)에 의해 디코딩되어 복제 레지스터 파일(130)의 레지스터 R1' 및 R2'가 액세스되고, 디코딩된 제1 원본 명령어(INS1)는 실행부(EU)에 의해 실행될 수 있다.
제4 명령어 사이클에서는 제3 원본 명령어(INS3)가 원본 패치부(OFU)에 패치되고 제2 복제 명령어(INS2')가 복제 패치부(DFU)에 홀딩될 수 있다. 이와 함께, 제2 원본 명령어(INS2)는 디코딩부(DU)에 의해 디코딩되고 제1 복제 명령어(INS1')는 실행부(EU)에 의해 실행될 수 있다. 데이터 메모리 액세스가 요구되지 아니하는 제1 원본 명령어(INS1)는 메모리 액세스부(MU)에 의해 홀딩될 수 있다.
제5 명령어 사이클에서, 제3 원본 명령어(INS3)가 원본 패치부(OFU)에 홀딩되고 제3 복제 명령어(INS3')가 복제 패치부(DFU)에 패치될 수 있다. 이와 함께, 제2 복제 명령어(INS2')는 디코딩부(DU)에 의해 디코딩되고 제2 원본 명령어(INS2)는 실행부(EU)에 의해 실행될 수 있다. 데이터 메모리 액세스가 요구되지 아니하는 제1 복제 명령어(INS1')는 메모리 액세스부(MU)에 의해 홀딩되고, 제1 원본 명령어(INS1)는 실행이 완료되어 기입부(WU)에 의해 원본 레지스터 파일(120)의 레지스터 RO에 레지스터 R1 및 R2을 더한 값이 저장될 수 있다.
제6 명령어 사이클에서, 제3 복제 명령어(INS3')가 복제 패치부(DFU)에 홀딩될 수 있다. 이와 함께, 제3 원본 명령어(INS3)는 디코딩부(DU)에 의해 디코딩되고 제2 복제 명령어(INS2')는 실행부(EU)에 의해 실행될 수 있다. 데이터 메모리 액세스가 요구되지 아니하는 제2 원본 명령어(INS2)는 메모리 액세스부(MU)에 의해 홀딩되고, 제1 복제 명령어(INS1')는 실행이 완료되어 기입부(WU)에 의해 복제 레지스터 파일(130)의 레지스터 RO'에 레지스터 R1' 및 R2'을 더한 값이 저장될 수 있다.
제7 명령어 사이클에서, 제3 복제 명령어(INS3')가 디코딩부(DU)에 의해 디코딩되고 제3 원본 명령어(INS3)는 실행부(EU)에 의해 실행될 수 있다. 이와 함께, 데이터 메모리 액세스가 요구되지 아니하는 제2 복제 명령어(INS2')는 메모리 액세스부(MU)에 의해 홀딩되고, 제2 원본 명령어(INS2)는 실행이 완료되어 기입부(WU)에 의해 원본 레지스터 파일(120)의 레지스터 R1에 "0x0100" 값이 저장될 수 있다.
비교부(140)는 제7 명령어 사이클에서, 각각 제5 명령어 사이클 및 제6 명령어 사이클에서 완료된 제1 원본 명령어(INS1) 및 제1 복제 명령어(INS1')의 실행에 대해, 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)에 대한 비교 동작을 수행하여 소프트 에러를 검출할 수 있다.
제8 명령어 사이클에서, 제3 복제 명령어(INS3')가 실행부(EU)에 의해 실행될 수 있다. 이와 함께, 제3 원본 명령어(INS3)는 메모리 액세스부(MU)를 통해 데이터 메모리로 원본 레지스터 파일(120)의 레지스터 R0에 저장된 데이터를 레지스터 R1에 저장된 주소로 전달할 수 있다. 제2 복제 명령어(INS2')는 실행이 완료되어 기입부(WU)에 의해 복제 레지스터 파일(130)의 레지스터 R1'에 "0x0100" 값이 저장될 수 있다.
제9 명령어 사이클에서, 제3 복제 명령어(INS3')가 메모리 액세스부(MU)를 통해 데이터 메모리로부터 복제 레지스터 파일(130)의 레지스터 R1의 주소에 저장된 데이터를 수신할 수 있다. 이와 함께, 제3 원본 명령어(INS3)는 실행이 완료되어 기입부(WU)에 의해 원본 레지스터 파일(120)의 레지스터 R0의 값이 유지될 수 있다.
비교부(140)는 제9 명령어 사이클에서, 각각 제7 명령어 사이클 및 제8 명령어 사이클에서 완료된 제2 원본 명령어(INS2) 및 제2 복제 명령어(INS2')의 실행에 대해, 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)에 대한 비교 동작을 수행하여 소프트 에러를 검출할 수 있다.
제10 명령어 사이클에서, 제3 복제 명령어(INS3')는 실행이 완료되어 기입부(WU)에 의해 원본 레지스터 파일(120)의 레지스터 R0에 데이터 메모리로부터 수신된 데이터를 로딩할 수 있다.
제11 명령어 사이클에서, 비교부(140)는 원본 레지스터 파일(120)의 레지스터 R0과 복제 레지스터 파일(130)의 레지스터 R0'를 비교하여 소프트 에러 여부를 검출할 수 있다.
도 16은 본 발명의 실시예에 따른 프로세서를 나타내는 도면이다.
도 1 및 도 16을 참조하면, 본 발명의 실시예에 따른 프로세서(100)는 적어도 둘 이상의 코어를 포함할 수 있다. 적어도 둘 이상의 코어 중 적어도 하나는 제1 코어(CR1)과 같이 각각 제x 명령어 사이클에서 원본 명령어(OIN)를 처리하고 제x+1 명령어 사이클에서 복제 명령어(DIN)를 처리하는 다수의 스테이지를 포함하는 명령어 파이프라인(110), 다수의 레지스터를 포함하고 원본 명령어(OIN)에 대한 명령어 파이프라인(110)의 처리 결과가 일시적으로 저장되는 원본 레지스터 파일(120), 제x 명령어 사이클에서 변경되어 제x+1 명령어 사이클까지 유지되는 원본 프로그램 카운터(OPC), 원본 레지스터 파일(120)과 동일한 개수의 레지스터를 포함하고 복제 명령어(DIN)에 대한 명령어 파이프라인(110)의 처리 결과가 일시적으로 저장되는 복제 레지스터 파일(130), 제x+1 명령어 사이클에서 변경되어 제x+2 명령어 사이클까지 유지되는 복제 프로그램 카운터(DPC), 및 원본 레지스터 파일(120) 및 복제 레지스터 파일(130)의 동일 인덱스의 레지스터를 비교하거나, 원본 프로그램 카운터(OPC) 및 복제 프로그램 카운터(DPC)를 비교하여 에러 검출 신호(XERR)를 출력하는 비교부(140)를 포함한다.
도 16은 비록 연결 관계를 도시하고 있지는 아니하나, 상술된 바에 의해 본 발명이 속하는 기술분야의 통상의 기술자가 명확하게 이해할 수 있을 것이다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 예를 들어, 이상에서는 본 발명의 실시예에 따른 프로세서(100)가 ARM 프로세서인 경우가 예시되었으나, 이에 한정되는 것은 아니다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 프로세서
110: 명령어 파이프라인
120: 원본 레지스터 파일
130: 복제 레지스터 파일
140: 비교부
200: 소프트 에러 검출 방법
OIN: 원본 명령어
DIN: 복제 명령어
XERR: 에러 검출 신호

Claims (20)

  1. 원본 명령어 및 상기 원본 명령어를 복제하여 생성되는 복제 명령어를 순차적으로 처리하는 명령어 파이프라인;
    상기 원본 명령어에 대한 상기 명령어 파이프라인에서의 처리 결과가 제n 인덱스의 레지스터에 저장되는 원본 레지스터 파일;
    상기 복제 명령어에 대한 상기 명령어 파이프라인에서의 처리 결과가 제n 인덱스의 레지스터에 저장되는 복제 레지스터 파일; 및
    제어 신호에 응답하여, 상기 원본 레지스터 파일의 제n 인덱스의 레지스터와 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하여 에러 검출 신호로 출력하는 비교부;를 포함하는 프로세서.
  2. 제1 항에 있어서,
    상기 원본 레지스터 파일의 인덱스와 상기 복제 레지스터 파일의 인덱스가 동일하게 설정되는 프로세서.
  3. 제1 항에 있어서,
    상기 원본 레지스터 파일에 포함되는 레지스터의 크기 및 개수와, 상기 복제 레지스터 파일에 포함되는 레지스터의 크기 및 개수가 동일한 프로세서.
  4. 제1 항에 있어서,
    상기 명령어 파이프라인은,
    상기 원본 명령어 및 상기 복제 명령어를 패치(fetch)하는 패치부;
    상기 패치부의 상기 원본 명령어 및 상기 복제 명령어를 순차적으로 디코딩하는 디코딩부;
    상기 디코딩부의 디코딩 결과를 실행시키는 실행부; 및
    상기 실행부의 실행 결과를 상기 원본 레지스터 파일 및 상기 복제 레지스터 파일 중 하나의 상기 제n 인덱스의 레지스터에 기입하는 기입부;를 포함하는 프로세서.
  5. 제4 항에 있어서,
    상기 패치부는,
    명령어 메모리로부터 원본 프로그램 카운터에 대응되는 상기 원본 명령어를 패치하는 원본 패치부; 및
    상기 원본 패치부에 패치되는 상기 원본 명령어를 복제하여 상기 복제 명령어로 저장하는 복제 패치부;를 포함하는 프로세서.
  6. 제4 항에 있어서,
    상기 패치부는,
    명령어 메모리로부터 원본 프로그램 카운터에 대응되는 상기 원본 명령어를 패치하는 원본 패치부; 및
    상기 명령어 메모리로부터 상기 원본 프로그램 카운터에 대응되는 상기 원본 명령어를 패치하여 상기 복제 명령어로 저장하는 복제 패치부;를 포함하는 프로세서.
  7. 제4 항에 있어서,
    상기 디코딩부는,
    상기 원본 명령어를 디코딩하여 상기 원본 레지스터 파일의 제m 인덱스의 레지스터를 액세스하고, 상기 복제 명령어를 디코딩하여 상기 복제 레지스터 파일의 제m 인덱스의 레지스터를 액세스하는 디코딩부;를 포함하는 프로세서.
  8. 제1 항에 있어서,
    상기 원본 명령어에 대응되는 원본 프로그램 카운터가 복제되고 상기 명령어 파이프라인이 상기 복제 명령어를 처리하는 중에 변경되는 복제 프로그램 카운터;를 더 포함하고,
    상기 비교부는,
    상기 제어 신호에 응답하여, 상기 원본 프로그램 카운터 및 상기 복제 프로그램 카운터를 비교하여 상기 에러 검출 신호로 출력하는 프로세서.
  9. 제1 항에 있어서,
    상기 복제 명령어의 생성 및 처리, 및 상기 비교부의 비교 동작을 제어하는 상기 제어 신호를 생성하는 복제 제어부;를 더 포함하는 프로세서.
  10. 제9 항에 있어서,
    상기 복제 제어부는,
    상기 원본 명령어가 저장 명령어인 경우, 상기 저장 명령어에 대응되는 로드 명령어를 상기 복제 명령어로 복제하고,
    상기 복제 명령어의 실행 결과를 상기 원본 레지스터 파일의 제n 인덱스의 레지스터에 저장시키는 프로세서.
  11. 프로세서에서의 소프트 에러 검출 방법에 있어서,
    명령어 파이프라인을 통해 원본 명령어를 실행하는 단계;
    상기 원본 명령어의 실행 결과를 원본 레지스터 파일의 제n 인덱스의 레지스터에 저장하는 단계;
    상기 원본 명령어를 복제 명령어로 복제하는 단계;
    상기 복제 명령어를 상기 명령어 파이프라인을 통해 실행하는 단계;
    상기 복제 명령어의 실행 결과를 복제 레지스터 파일의 제n 인덱스의 레지스터에 저장하는 단계; 및
    상기 원본 레지스터 파일의 제n 인덱스의 레지스터와 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하는 단계;를 포함하는 소프트 에러 검출 방법.
  12. 제11 항에 있어서,
    상기 원본 명령어를 복제 명령어로 복제하는 단계는,
    상기 원본 명령어의 실행하는 단계에서 명령어 메모리로부터 상기 명령어 파이프라인으로 패치되는 상기 원본 명령어를 상기 복제 명령어로 복제하는 단계;를 포함하는 소프트 에러 검출 방법.
  13. 제11 항에 있어서,
    상기 원본 명령어를 복제 명령어로 복제하는 단계는,
    명령어 메모리로부터 원본 프로그램 카운터에 대응되는 상기 원본 명령어를 패치하여 상기 복제 명령어로 저장하는 단계;를 포함하는 소프트 에러 검출 방법.
  14. 제11 항에 있어서,
    상기 원본 명령어를 복제 명령어로 복제하는 단계는,
    상기 원본 명령어가 저장 명령어인 경우, 상기 저장 명령어에 대응되는 로드 명령어를 상기 복제 명령어로 복제하는 단계;를 포함하고,
    상기 복제 명령어의 실행 결과를 상기 복제 레지스터 파일의 제n 인덱스의 레지스터가 아닌 상기 원본 레지스터 파일의 제n 인덱스의 레지스터에 저장하는 단계;를 더 포함하는 소프트 에러 검출 방법.
  15. 제11 항에 있어서,
    상기 원본 명령어를 실행하는 단계는,
    상기 원본 명령어를 디코딩하여 상기 원본 레지스터 파일의 제m 인덱스의 레지스터를 액세스하는 단계;를 포함하고,
    상기 복제 데이터를 실행하는 단계는,
    상기 복제 명령어를 디코딩하여 상기 복제 레지스터 파일의 제m 인덱스의 레지스터를 액세스하는 단계;를 포함하는 소프트 에러 검출 방법.
  16. 제11 항에 있어서,
    상기 원본 레지스터 파일 및 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하는 단계는,
    상기 원본 명령어가 저장 명령어인 때에 수행되는 소프트 에러 검출 방법.
  17. 제11 항에 있어서,
    상기 원본 명령어를 실행하는 단계에서 상기 원본 명령어에 대응되는 원본 프로그램 카운터를 변경하고 상기 복제 명령어에 대응되는 복제 프로그램 카운터를 유지하는 단계; 및
    상기 복제 명령어를 실행하는 단계에서 상기 복제 프로그램 카운터를 변경하고 상기 원본 프로그램 카운터를 유지하는 단계;를 더 포함하는 소프트 에러 검출 방법.
  18. 제11 항에 있어서,
    상기 원본 명령어에 대응되는 원본 프로그램 카운터를 복제 프로그램 카운터로 복제하는 단계;
    상기 복제 명령어를 실행하는 중에 상기 복제 프로그램 카운터를 변경하는 단계; 및
    상기 원본 프로그램 카운터 및 상기 복제 프로그램 카운터를 비교하는 단계;를 더 포함하는 소프트 에러 검출 방법.
  19. 제18 항에 있어서,
    상기 원본 레지스터 파일 및 상기 복제 레지스터 파일의 제n 인덱스의 레지스터를 비교하는 단계 및 상기 원본 프로그램 카운터 및 상기 복제 프로그램 카운터를 비교하는 단계는,
    서로 다른 명령어 사이클에서 수행되는 소프트 에러 검출 방법.
  20. 적어도 둘 이상의 코어를 포함하는 프로세서에 있어서,
    상기 적어도 둘 이상의 코어는 각각,
    각각, 제x 명령어 사이클에서 원본 명령어를 처리하고 제x+1 명령어 사이클에서 복제 명령어를 처리하는 다수의 스테이지를 포함하는 명령어 파이프라인;
    다수의 레지스터를 포함하고 상기 원본 명령어에 대한 상기 명령어 파이프라인의 처리 결과가 일시적으로 저장되는 원본 레지스터 파일;
    상기 제x 명령어 사이클에서 변경되어 상기 제x+1 명령어 사이클까지 유지되는 원본 프로그램 카운터;
    상기 원본 레지스터 파일과 동일한 개수의 레지스터를 포함하고, 상기 복제 명령어에 대한 상기 명령어 파이프라인의 처리 결과가 일시적으로 저장되는 복제 레지스터 파일;
    상기 제x+1 명령어 사이클에서 변경되어 상기 제x+2 명령어 사이클까지 유지되는 복제 프로그램 카운터; 및
    상기 원본 레지스터 파일 및 상기 복제 레지스터 파일의 동일 인덱스의 레지스터를 비교하거나, 상기 원본 프로그램 카운터 및 상기 복제 프로그램 카운터를 비교하여, 에러 검출 신호를 출력하는 비교부;를 포함하는 프로세서.
KR1020220117447A 2022-09-16 2022-09-16 프로세서 및 프로세서에서의 소프트 에러 검출 방법 KR20240038497A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220117447A KR20240038497A (ko) 2022-09-16 2022-09-16 프로세서 및 프로세서에서의 소프트 에러 검출 방법
US18/232,442 US20240095113A1 (en) 2022-09-16 2023-08-10 Processor and method of detecting soft error from processor
EP23193529.7A EP4339781A1 (en) 2022-09-16 2023-08-25 Processor and method of detecting soft error from processor
CN202311186118.3A CN117724765A (zh) 2022-09-16 2023-09-14 处理器和从处理器检测软错误的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220117447A KR20240038497A (ko) 2022-09-16 2022-09-16 프로세서 및 프로세서에서의 소프트 에러 검출 방법

Publications (1)

Publication Number Publication Date
KR20240038497A true KR20240038497A (ko) 2024-03-25

Family

ID=87845774

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220117447A KR20240038497A (ko) 2022-09-16 2022-09-16 프로세서 및 프로세서에서의 소프트 에러 검출 방법

Country Status (4)

Country Link
US (1) US20240095113A1 (ko)
EP (1) EP4339781A1 (ko)
KR (1) KR20240038497A (ko)
CN (1) CN117724765A (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296312B2 (en) * 2016-05-20 2019-05-21 Arizona Board Of Regents On Behalf Of Arizona State University Methods, apparatuses, and systems for zero silent data corruption (ZDC) compiler technique

Also Published As

Publication number Publication date
CN117724765A (zh) 2024-03-19
US20240095113A1 (en) 2024-03-21
EP4339781A1 (en) 2024-03-20

Similar Documents

Publication Publication Date Title
KR101546033B1 (ko) Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행
CN111164578B (zh) 核内锁步模式的错误恢复
JP4691105B2 (ja) 冗長マルチスレッド環境でのチェッカ命令の実行
US20060190700A1 (en) Handling permanent and transient errors using a SIMD unit
US10248488B2 (en) Fault tolerance and detection by replication of input data and evaluating a packed data execution result
KR102484125B1 (ko) 벡터 처리회로를 사용한 에러 검출
JPS59114641A (ja) 割込処理装置
JPH07248897A (ja) コンピュータ・システムにおける例外からの回復方法、及びそのための装置
US9740557B2 (en) Pipelined ECC-protected memory access
KR100472346B1 (ko) 명령어 리플레이를 포함하는 프로세서 파이프라인
CN109416672B (zh) 不对有缺陷数据采取异常的从存储器读取指令、处理器、方法和系统
US9348681B2 (en) Apparatus and method for detecting fault of processor
US5761467A (en) System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
US6047370A (en) Control of processor pipeline movement through replay queue and pointer backup
CN109416632B (zh) 用于处理数据的装置和方法
KR20240038497A (ko) 프로세서 및 프로세서에서의 소프트 에러 검출 방법
EP1220088B1 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US20060156123A1 (en) Fault free store data path for software implementation of redundant multithreading environments
KR102379886B1 (ko) 벡터 명령 처리
US8793689B2 (en) Redundant multithreading processor
TW202418068A (zh) 處理器及自處理器偵測軟錯誤的方法
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
US20230273811A1 (en) Reducing silent data errors using a hardware micro-lockstep technique
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置
CN116700799A (zh) 一种利用流水线气泡实现指令级冗余的容软错设计方法