KR101978984B1 - 프로세서의 오류를 검출하는 장치 및 방법 - Google Patents

프로세서의 오류를 검출하는 장치 및 방법 Download PDF

Info

Publication number
KR101978984B1
KR101978984B1 KR1020130054079A KR20130054079A KR101978984B1 KR 101978984 B1 KR101978984 B1 KR 101978984B1 KR 1020130054079 A KR1020130054079 A KR 1020130054079A KR 20130054079 A KR20130054079 A KR 20130054079A KR 101978984 B1 KR101978984 B1 KR 101978984B1
Authority
KR
South Korea
Prior art keywords
control unit
execution
error control
error
instruction
Prior art date
Application number
KR1020130054079A
Other languages
English (en)
Other versions
KR20140134371A (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 KR1020130054079A priority Critical patent/KR101978984B1/ko
Priority to US14/255,481 priority patent/US9348681B2/en
Publication of KR20140134371A publication Critical patent/KR20140134371A/ko
Application granted granted Critical
Publication of KR101978984B1 publication Critical patent/KR101978984B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error 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 the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error 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 the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error 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 the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • 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

Abstract

프로세서의 내부 유닛별 오류를 검출하고 정정할 수 있도록 하는 프로세서의 오류를 검출하는 장치 및 방법을 제시한다. 제시된 장치는 메모리에 접속된 다수의 프로세서 코어내의 각각의 페치 유닛의 오류를 검출하는 페치 오류 제어부, 메모리에 접속된 다수의 프로세서 코어내의 각각의 디코딩 유닛의 오류를 검출하는 디코딩 오류 제어부, 및 메모리에 접속된 다수의 프로세서 코어내의 각각의 실행 유닛의 오류를 검출하고 동일한 명령어를 다수의 프로세서 코어에서 실행시켜 오류를 발생한 프로세서 코어를 판별하여 이를 페치 오류 제어부 및 디코딩 오류 제어부에게로 알리는 실행 오류 제어부를 포함한다.

Description

프로세서의 오류를 검출하는 장치 및 방법{Apparatus and method for detecting fault of processor}
본 발명은 프로세서의 오류를 검출하는 장치 및 방법에 관한 것으로, 보다 상세하게는 프로세서가 오류를 발생할 때 이를 검출 및 정정할 수 있도록 한 장치 및 방법에 관한 것이다.
프로세서는 외부 저장장치에 보관된 명령어를 읽어 명령어를 분석하여 명령어가 지정하는 피연산자(operand)를 이용한 특정 연산(operation)을 수행한다. 그리고, 프로세서는 특정 연산이 수행된 결과를 다시 외부 저장장치에 저장하고 저장된 프로그램에 의해 특정 기능을 수행한다.
프로세서는 페치 유닛(fetch unit), 디코딩 유닛(decoding unit), 실행 유닛(execution unit), 및 레지스터 파일(register file)을 포함한다.
페치 유닛(Fetch unit)은 메모리(외부 저장장치)로부터 수행할 명령어(Instruction)을 읽어와서 디코딩 유닛(decoding unit)에 보내는 역할을 한다.
디코딩 유닛(Decoding unit)은 입력받은 명령어를 분석하여 실행 유닛(execution unit) 내의 필요한 연산기를 동작시키고, 그 연산기의 입력을 레지스터 파일(register file)에서 읽어오도록 한다.
실행 유닛(Execution unit)은 레지스터 파일(register file)에서 읽어온 피연산자를 해당 실행 유닛의 내부의 연산기에 보내고, 그 연산기에서의 연산 결과를 메모리 또는 레지스터 파일(register file)에 저장을 하도록 한다.
레지스터 파일(Register file)은 메모리로부터 데이터를 읽어오거나 쓰고, 디코딩 유닛(decoding unit)으로부터 받은 정보로 저장한 피연산자를 읽어 실행 유닛(execution unit)에게로 보낸다.
이러한 페치 유닛, 디코딩 유닛, 실행 유닛, 레지스터 파일 내부에서는 오류가 발생할 수 있고, 이는 프로세서의 결과에 영향을 미칠 수 있다.
관련 선행기술로는, 각 프로세서 코어의 동작 상태를 보다 정확하게 판정할 수 있는 내용이 일본 등록특허 4433006호(멀티 코어의 이상 감시장치)에 기술되었다.
일본 등록특허 4433006호의 발명은 멀티 프로세서 코어가 채용된 디바이스에 대한 구조이지만, 프로세서 코어내의 각 유닛별 오류를 검출하는 것에 대해서는 기술하지 않고 있다.
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, 프로세서의 내부 유닛별 오류를 검출하고 정정할 수 있도록 하는 프로세서의 오류를 검출하는 장치 및 방법을 제공함에 그 목적이 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 바람직한 실시양태에 따른 프로세서의 오류를 검출하는 장치는, 메모리에 접속된 다수의 프로세서 코어내의 각각의 페치 유닛의 오류를 검출하는 페치 오류 제어부; 상기 메모리에 접속된 상기 다수의 프로세서 코어내의 각각의 디코딩 유닛의 오류를 검출하는 디코딩 오류 제어부; 및 상기 메모리에 접속된 상기 다수의 프로세서 코어내의 각각의 실행 유닛의 오류를 검출하고, 동일한 명령어를 상기 다수의 프로세서 코어에서 실행시켜 오류를 발생한 프로세서 코어를 판별하여 이를 상기 페치 오류 제어부 및 상기 디코딩 오류 제어부에게로 알리는 실행 오류 제어부;를 포함한다.
바람직하게, 상기 다수의 프로세서 코어는 세 개이고, 상기 실행 오류 제어부는 상기 세 개의 프로세서 코어중에서 두 개의 프로세서 코어의 실행 결과는 동일하고 다른 하나의 프로세서 코어의 실행 결과가 상기 두 개의 프로세서의 실행 결과와는 다르면 상기 하나의 프로세서 코어를 상기 오류가 발생한 프로세서 코어로 판별할 수 있다.
바람직하게, 상기 실행 오류 제어부는, 상기 실행 결과가 다른 상기 하나의 프로세서 코어에서 실행한 상기 명령어에 의해 파생된 모든 명령어를 취소시키는 명령 및 정상적인 명령어를 상기 페치 오류 제어부 및 상기 디코딩 오류 제어부에게로 보낼 수 있다.
바람직하게, 상기 페치 오류 제어부는, 상기 실행 오류 제어부로부터의 명령 및 정상적인 명령어를 근거로, 상기 하나의 프로세서 코어에서 해당 명령어를 취소하고 상기 정상적인 명령어로 정정할 수 있다.
바람직하게, 상기 디코딩 오류 제어부는, 상기 실행 오류 제어부로부터의 명령 및 정상적인 명령어를 근거로, 상기 하나의 프로세서 코어에서 해당 명령어를 취소하고 상기 정상적인 명령어로 정정할 수 있다.
바람직하게, 상기 다수의 프로세서 코어는 네 개 이상이어도 된다.
한편, 본 발명의 바람직한 실시양태에 따른 프로세서의 오류를 검출하는 방법은, 각각의 페치 유닛이 페치 오류 제어부와 접속되고 각각의 디코딩 유닛이 디코딩 오류 제어부와 접속되고 각각의 실행 유닛이 실행 오류 제어부와 접속된 제 1 내지 제 3 프로세서 코어가 메모리와 연결된 멀티 프로세서에서 상기 실행 오류 제어부가, 동일한 명령어를 상기 제 1 및 제 2 프로세서 코어에서 수행시키는 단계; 상기 실행 오류 제어부가, 상기 제 1 및 제 2 프로세서 코어에서의 수행 결과를 비교하는 단계; 상기 실행 오류 제어부가, 상기 제 1 및 제 2 프로세서 코어에서의 수행 결과가 상호 다르면 상기 명령어를 상기 제 3 프로세서 코어에서 수행시키는 단계; 및 상기 실행 오류 제어부가, 상기 세 개의 프로세서 코어중에서 두 개의 프로세서 코어의 실행 결과는 동일하고 다른 하나의 프로세서 코어의 실행 결과가 상기 두 개의 프로세서의 실행 결과와는 다르면 상기 하나의 프로세서 코어를 상기 오류가 발생한 프로세서 코어로 판별하는 단계;를 포함한다.
바람직하게, 상기 실행 오류 제어부가, 상기 실행 결과가 다른 상기 하나의 프로세서 코어에서 실행한 상기 명령어에 의해 파생된 모든 명령어를 취소시키는 명령 및 정상적인 명령어를 상기 페치 오류 제어부 및 상기 디코딩 오류 제어부에게로 보내는 단계;를 추가로 포함하여도 된다.
바람직하게, 상기 페치 오류 제어부가, 상기 실행 오류 제어부로부터의 명령 및 정상적인 명령어를 근거로 상기 하나의 프로세서 코어에서 해당 명령어를 취소하고 상기 정상적인 명령어로 정정하는 단계를 추가로 포함하여도 된다.
바람직하게, 상기 디코딩 오류 제어부가, 상기 실행 오류 제어부로부터의 명령 및 정상적인 명령어를 근거로 상기 하나의 프로세서 코어에서 해당 명령어를 취소하고 상기 정상적인 명령어로 정정하는 단계를 추가로 포함하여도 된다.
이러한 구성의 본 발명에 따르면, 프로세서의 내부 블록별로 오류 검출장치를 구비함으로써 오류에 더욱 강하게 하였으며 이를 통해 프로세서 내부에서의 오류 검출도 가능해졌다.
또한, 오류에 의한 프로세서의 잘못된 결과를 막을 수 있다.
도 1은 본 발명의 실시예에 따른 프로세서의 오류를 검출하는 장치의 구성도이다.
도 2는 본 발명의 실시예에 따른 프로세서의 오류를 검출하는 장치의 동작을 설명하는 플로우차트이다.
본 발명은 프로세서의 내부 유닛별로 오류 검출 장치를 구비하여 유닛별 오류를 검출 및 정정할 수 있게 함을 기술적 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예에 따른 프로세서의 오류를 검출하는 장치에 대하여 설명하면 다음과 같다. 본 발명의 상세한 설명에 앞서, 이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니된다. 따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
도 1은 본 발명의 실시예에 따른 프로세서의 오류를 검출하는 장치의 구성도이다.
본 발명의 실시예에 따른 프로세서의 오류를 검출하는 장치는 메모리(10)에 상호 동일한 구조로 된 다수의 프로세서 코어(20, 30, 40)가 접속된 멀티 프로세서 구조에 적용될 수 있다. 여기서, 각각의 프로세서 코어(20, 30, 40)는 페치 유닛, 디코딩 유닛, 실행 유닛, 및 레지스터 파일을 포함한다.
기본적으로, 각각의 프로세서 코어(20, 30, 40)는 어느 한 명령어를 수행(실행)하게 되면 동일한 결과를 출력해야 된다. 그런데, 각각의 프로세서 코어(20, 30, 40)중 적어도 어느 한 프로세서 코어가 다른 프로세서 코어들과는 다른 결과를 출력하기도 하여, 본 발명의 실시예에 따른 프로세의 오류를 검출하는 장치가 필요한 것이다.
각각의 프로세서 코어(20, 30, 40)에 구비된 페치 유닛들(22, 32, 42)은 페치 오류 제어부(50)와 오류정정을 위한 통신을 한다.
여기서, 페치 유닛(22, 32, 42)은 메모리(10)로부터 수행할 명령어(Instruction)을 읽어와서 대응되는 디코딩 유닛(24, 34, 44)에게로 보낸다. 이때, 페치 오류 제어부(50)는 동시에 읽어 들인 명령어를 3개의 프로세서 코어(20, 30, 40)에 분배를 한다. 페치 오류 제어부(50)는 그 분배하는 중에 레지스터(register) 의존도를 검토하여 동일 레지스터 연산을 포함하는 명령어를 같은 프로세서 코어에 배치하도록 한다. 만약, 그렇지 못할 경우 페치 오류 제어부(50)는 디코딩 오류 제어부(60) 및 실행 오류 제어부(70)에게로 그 정보를 알려준다.
한편, 각각의 프로세서 코어(20, 30, 40)에 구비된 디코딩 유닛들(24, 34, 44)은 디코딩 오류 제어부(60)와 오류정정을 위한 통신을 한다.
여기서, 디코딩 유닛(24, 34, 44)은 해당하는 페치 유닛(22, 32, 42)으로부터 입력받은 명령어를 분석하여 대응되는 실행 유닛(26, 36, 46)내의 필요한 연산기를 동작시키고, 그 연산기의 입력을 대응되는 레지스터 파일(28, 38, 48)에서 읽어오도록 한다. 이때, 디코딩 오류 제어부(60)는 페치 오류 제어부(50)에서 받은 정보를 근거로 레지스터 리네임(register rename)을 해준다. 이와 같이 레지스터 개명을 하는 이유는 동일한 명령어가 같은 프로세서 코어에서 수행될 경우, 및 다른 프로세서 코어에서 수행되는 명령어와 의존도가 있는 레지스터값을 연산하는 명령어를 수행할 경우에 있어서 기존의 레지스터값에 영향을 미치지 않도록 하기 위함이다.
한편, 각각의 프로세서 코어(20, 30, 40)에 구비된 실행 유닛들(26, 36, 46) 및 레지스터 유닛들(28, 38, 48)은 실행 오류 제어부(70)와 오류정정을 위한 통신을 한다.
여기서, 실행 유닛(26, 36, 46)은 레지스터 파일(28, 38, 48)에서 읽어온 피연산자를 해당 실행 유닛의 내부의 연산기에 보내고, 그 연산기에서의 연산 결과를 메모리(10) 또는 레지스터 파일(28, 38, 48)에 저장한다. 레지스터 파일(28, 38, 48)은 메모리(10)로부터 데이터를 읽어오거나 쓰고, 대응되는 디코딩 유닛(24, 34, 44)으로부터 받은 정보로 저장한 피연산자를 읽어 해당 프로세서 코어내의 실행 유닛(26, 36, 46)에게로 보낸다. 이때, 실행 오류 제어부(70)는 서로 다른 프로세서 코어에서 의존도가 있는 명령어가 수행될 경우 연산 결과를 서로 다른 프로세서 코어의 레지스터 파일(28, 38, 48)로 옮겨 주는 역할을 한다. 그리고, 실행 오류 제어부(70)는 명령어 A1, A2, A3의 수행 결과를 비교하여 오류(fault)가 발생했는지, 오류가 발생했지만 어떤 명령어가 오류가 없는지, 및 오류가 발생했지만 오류 정정을 할 수 있는지 없는지 등을 판단할 수 있다. 예를 들어, 3개의 명령어 A1, A2, A3 중에서 1개가 오류이면 나머지 2개의 명령어는 정상이므로, 오류인 명령어에 의해 파생된 모든 명령어를 취소하고 오류인 명령어에 대해서는 정상인 2개의 명령어를 근거로 정정할 수 있다.
상기와 같은 페치 오류 제어부(50), 디코딩 오류 제어부(60), 및 실행 오류 제어부(70)는 다음과 같은 오류 검출 알고리즘을 수행한다.
메모리(10)에 저장된 하나의 명령어 A는 프로세서 코어(20)와 프로세서 코어(30)에서 각각 수행된다. 여기서, 프로세서 코어(20)에서 수행되는 명령어 A는 A1이라고 가정하고, 프로세서 코어(30)에서 수행되는 명령어 A는 명령어 A2라고 가정한다.
1 클럭 사이클에서, 페치 오류 제어부(50)는 프로세서 코어(20)의 페치 유닛(22)과 프로세서 코어(30)의 페치 유닛(32)을 활성화시킨다. 그에 따라, 페치 유닛(22)은 명령어 A1을 메모리(10)로부터 읽어 들이고, 페치 유닛(32)은 메모리(10)로부터 명령어 A2를 읽어 들인다. 여기서, 명령어 A1 과 A2는 동일한 명령어이다. 이때, 페치 오류 제어부(50)는 페치 유닛(22)이 명령어 A1를 읽어 들이고, 페치 유닛(32)이 명령어 A2를 읽어 들이고 있음을 디코딩 오류 제어부(60)에게로 알린다. 그리고, 페치 오류 제어부(50)는 페치 유닛(22)이 현재 명령어 A1을 읽어 들이고, 페치 유닛(32)이 현재 명령어 A2를 읽어 들이고 있음을 기억한다.
2 클럭 사이클에서, 페치 유닛(22, 32)에서 읽어 들인 명령어 A1과 A2는 디코딩 유닛(24, 34)에게로 입력된다. 즉, 명령어 A1은 디코딩 유닛(24)에게로 입력되고, 명령어 A2는 디코딩 유닛(34)에게로 입력된다. 그에 따라, 디코딩 유닛(24)은 명령어 A1을 분석하여 실행 유닛(26)내의 필요한 연산기를 동작시키고 연산기의 입력을 레지스터 파일(28)에서 읽어온다. 디코딩 유닛(34)은 명령어 A2를 분석하여 실행 유닛(36)내의 필요한 연산기를 동작시키고 연산기의 입력을 레지스터 파일(38)에서 읽어온다. 이때, 디코딩 오류 제어부(60)는 각각의 디코딩 유닛(24, 34)에서 읽어오는 레지스터값을 자신의 내부에 저장할 수 있다.
이와 함께, 2 클럭 사이클에서, 프로세서 코어(20)의 페치 유닛(22)은 명령어 B1-1을 읽어 들이고, 프로세서 코어(30)의 페치 유닛(32)은 명령어 B2-1을 읽어 들인다. 이때, 페치 오류 제어부(50)는 페치 유닛(22)이 현재 명령어 B1-1을 읽어 들이고, 페치 유닛(32)이 현재 명령어 B2-1을 읽어 들이고 있음을 기억한다.
3 클럭 사이클에서, 명령어 A1과 A2는 실행 유닛(26, 36)에서 수행된다. 즉, 실행 유닛(26)은 명령어 A1에 근거하여 레지스터 파일(28)에서 읽어 온 피연산자를 실행한다. 그리고, 실행 유닛(36)은 명령어 A2에 근거하여 레지스터 파일(38)에서 읽어 온 피연산자를 실행한다. 실행 유닛(26, 36)에서의 실행 결과, 즉 명령어 A1과 A2에 의한 결과는 각각의 레지스터 파일(28, 38)에 저장되고 그 수행 결과는 실행 오류 제어부(70)에게로 보내질 수 있다. 이때, 실행 오류 제어부(70)는 명령어 A1과 A2의 수행 결과가 서로 같지 않다면 이는 프로세서 코어(20)와 프로세서 코어(30)의 어느 유닛에서 오류가 발생하였다고 판단할 수 있다. 이와 같이 오류가 발생하였다고 판단하게 되면 명령어 A를 다시 수행하여 세 개의 명령어 A의 수행 결과 중 동일 결과를 내는 두 개의 명령어 A의 수행 결과를 오류가 없는 결과로 결정해야 한다. 그래서 A3이라는 명령어(즉, 명령어 A1, A2와는 동일한 명령어)를 프로세서 코어(40)에서 다시 수행한다. 그리고, 명령어 A1과 A2의 결과가 다르므로 각각의 결과에 따르는 명령어 B를 하나씩 더 수행한다. 여기서, 명령어 A1의 결과를 따르는 명령어를 명령어 B1-2라고 하고, 명령어 A2의 결과를 따르는 명령어를 명령어 B2-2라고 하자. 또한 명령어 B1-1, B1-2과 명령어 B2-1, B2-2의 각각의 결과를 따르는 명령어 C인 C1-1, C1-2, C2-1, C2-2를 수행한다. 그래서, 3 클럭 사이클에서 페치 유닛(22, 32, 42)에서는 명령어 A3, B1-2, B2-2, C1-1, C1-2, C2-1, C2-2의 총 7개의 명령어를 읽어 들어야 하며, 제한된 세 개의 프로세서 코어(20, 30, 40)에서는 순차적으로 수행을 한다.
4 클럭 사이클에서는, 명령어 B1-1, B2-1을 실행 유닛에서 수행한다. 즉, 실행 유닛(26)은 명령어 B1-1에 근거하여 레지스터 파일(28)에서 읽어 온 피연산자를 실행한다. 그리고, 실행 유닛(36)은 명령어 B2-1에 근거하여 레지스터 파일(38)에서 읽어 온 피연산자를 실행한다. 실행 유닛(26, 36)에서의 실행 결과, 즉 명령어 B1-1, B2-1에 의한 결과는 각각의 레지스터 파일(28, 38)에 저장되고 그 수행 결과는 실행 오류 제어부(70)에게로 보내질 수 있다. 명령어 A3, B1-2, B2-2, C1-1, C1-2, C2-1, C2-2는 디코딩 유닛에서 수행된다. 즉, 명령어 A3은 프로세서 코어(40)의 디코딩 유닛(44)에 입력되어 수행되고, 명령어 B1-2, C1-1, 및 C1-2는 프로세서 코어(20)의 디코딩 유닛(24)에 순차적으로 입력되어 수행되고, 명령어 B2-2, C2-1, 및 C2-2는 프로세서 코어(30)의 디코딩 유닛(34)에 순차적으로 입력되어 수행된다. 그리고, 명령어 B1-1 및 B2-1의 실행 유닛(26, 36)에서의 수행 결과에 따라 페치 유닛(22, 32)에서는 명령어 D인 D1-1, D1-2, D2-1, D2-2를 읽어 들인다.
5 클럭 사이클에서는, 명령어 A3이 프로세서 코어(40)의 실행 유닛(46)에서 수행되어 그 결과가 나온다. 여기서, 명령어 A3에 의한 결과는 레지스터 파일(48)에 저장되고 그 수행 결과는 실행 오류 제어부(70)에게로 보내질 수 있다. 이때, 예를 들어, 실행 오류 제어부(70)는 명령어 A3의 결과가 명령어 A1의 결과와 같다면 이미 수행 중인 명령어 A2에 의해서 파생된 모든 명령어를 취소한다. 실행 유닛(26)에서 수행되는 명령어 A1에 의해 파생된 명령어 B1-1, B1-2의 결과 또한 나온다. 그 결과가 같고 명령어 C1-1, C1-2 결과도 같다면 다음 명령어인 E의 E1-1, E1-2를 페치 유닛에서 읽어 들이도록 한다. 여기서, 명령어 취소가 있는 경우, 실행 오류 제어부(70)는 그와 같은 사실 및 정상적인 명령어가 무엇인지를 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)에게로 알린다. 그에 따라, 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)에서도 취소된 명령어가 어떤 명령어인지를 알 수 있고 취소된 명령어가 어느 프로세서 코어에서 수행된 명령어인지를 알 수 있게 된다. 여기서, 취소의 의미는 실행 결과에 따른 해당 레지스터값을 취소하는 것과 함께 정상적인 명령어로 정정한다는 의미도 포함한다. 즉, 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)는 명령어 A2에 의해서 파생된 모든 명령어를 취소하라는 명령 및 정상적인 명령어가 어떠한 것인지를 알려주는 메시지에 근거하여 해당 명령어를 취소하고 정상적인 명령어로 정정할 수 있다.
이와 같이, 상술한 본 발명의 실시예는 명령어 N1, N2의 수행결과가 서로 상이할 경우 명령어 N3을 추가로 수행시켜서 명령어 N1 과 N2 결과 중에 명령어 N3의 결과와 같은 Nx를 선택하고, 선택되지 않은 Nx에 의해 파생된 명령어는 취소하는 방식으로 전개된다. 이에 의해, 오류 검출 장치의 분산 배치 및 프로세서의 내부 유닛별 오류 검출 및 정정으로 오류 검출 및 정정율을 높일 수 있다.
이번에는, 도 2의 플로우차트를 참조하여 본 발명의 실시예에 따른 프로세서의 오류를 검출하는 장치의 동작을 설명한다.
S10에서, 메모리(10)에 저장된 하나의 명령어 A를 프로세서 코어(20)와 프로세서 코어(30)에서 각각 수행한다. 이때, 프로세서 코어(20)와 프로세서 코어(30)내의 페치 유닛(22, 32)과 디코딩 유닛(24, 34) 및 실행 유닛(26, 36)은 페치 오류 제어부(50)와 디코딩 오류 제어부(60) 및 실행 오류 제어부(70)와 연동하여 동작한다.
S12에서, 실행 오류 제어부(70)는 프로세서 코어(20)에서의 수행 결과와 프로세서 코어(30)에서의 수행 결과가 서로 동일한지를 비교한다.
S14에서, S12의 비교 결과 서로 동일한 것으로 판단되면 실행 오류 제어부(70)는 명령어 A에 의한 수행 결과를 오류가 없는 결과로 결정한다. 이때, 실행 오류 제어부(70)는 이러한 사실을 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)에게로 알릴 수 있다.
S16에서, S12의 비교 결과 서로 상이한 것으로 판단되면 실행 오류 제어부(70)는 프로세서 코어(20)와 프로세서 코어(30) 중에서 어느 코어에서 오류가 발생하였는지를 정확히 판단할 수 없으므로, 명령어 A를 프로세서 코어(40)에서 수행하도록 명령한다.
S18에서, 실행 오류 제어부(70)는 프로세서 코어(40)에서의 수행 결과와 프로세서 코어(20)에서의 수행 결과가 서로 동일한지를 비교한다.
S20에서, S18의 비교 결과 서로 동일하면 실행 오류 제어부(70)는 프로세서 코어(30)에서 오류가 발생한 것으로 판단한다.
그래서, S22에서, 실행 오류 제어부(70)는 프로세서 코어(30)에서 수행된 명령어 A에 의해 파생된 모든 명령어를 취소한다. 이때, 실행 오류 제어부(70)는 명령어 취소를 함에 있어서 프로세서 코어(30)에서 오류가 발생하였음을 의미하는 정보 및 정상적인 명령어가 무엇인지를 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)에게로 보낸다. 그에 따라, 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)에서는 프로세서 코어(30)에서 오류가 발생하였고 취소된 명령어가 어떤 명령어인지를 알 수 있게 된다. 여기서, 취소의 의미는 프로세서 코어(30)에서의 실행 결과에 따른 해당 레지스터값을 취소하는 것과 함께 정상적인 명령어로 정정함을 포함한다. 즉, 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)는 프로세서 코어(30)에서 명령어 A를 근거로 수행하여 파생된 명령어를 취소하고 이를 정상적인 명령어로 정정할 수 있다.
한편, S18에서, 프로세서 코어(40)에서의 수행 결과와 프로세서 코어(20)에서의 수행 결과가 상이할 경우에는 S24로 이동하여 실행 오류 제어부(70)는 프로세서 코어(40)에서의 수행 결과와 프로세서 코어(30)에서의 수행 결과가 서로 동일한지를 비교한다.
S24에서, 프로세서 코어(40)에서의 수행 결과와 프로세서 코어(30)에서의 수행 결과가 서로 동일할 경우에는, S26에서 실행 오류 제어부(70)는 프로세서 코어(20)에서 오류가 발생한 것으로 판단한다.
그래서, S28에서, 실행 오류 제어부(70)는 프로세서 코어(20)에서 수행된 명령어 A에 의해 파생된 모든 명령어를 취소한다. 이때, 실행 오류 제어부(70)는 명령어 취소를 함에 있어서 프로세서 코어(20)에서 오류가 발생하였음을 의미하는 정보 및 정상적인 명령어가 무엇인지를 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)에게로 보낸다. 그에 따라, 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)에서는 프로세서 코어(20)에서 오류가 발생하였고 취소된 명령어가 어떤 명령어인지를 알 수 있게 된다. 여기서, 취소의 의미는 프로세서 코어(20)에서의 실행 결과에 따른 해당 레지스터값을 취소하는 것과 함께 정상적인 명령어로 정정함을 포함한다. 즉, 페치 오류 제어부(50) 및 디코딩 오류 제어부(60)는 프로세서 코어(20)에서 명령어 A를 근거로 수행하여 파생된 명령어를 취소하고 이를 정상적인 명령어로 정정할 수 있다.
한편, 상술한 본 발명의 실시예 설명에서는 3개의 프로세서 코어(20, 30, 40)가 접속된 멀티 프로세서 구조에 제시하였으나, 프로세서 코어의 수를 4개 이상으로 하여도 무방하다.
물론, 프로세서 코어의 수를 1개로 하여도 된다. 만약, 본 발명이 하나의 프로세서 코어에 적용될 경우에는 어느 유닛에서 오류가 발생하였는지를 판별하기 위해서 하나의 명령어를 각각의 유닛에서 최소한 3번 정도는 순차적으로 실행시켜 보아야 한다. 본 발명을 하나의 프로세서 코어에 적용시킬 경우에는 상술한 바와 같이 멀티 프로세서 구조에 적용시킨 것에 비해서는 처리 속도에서 떨어지지만 구성면에서는 보다 간단하게 된다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 메모리 20, 30, 40 : 프로세서 코어
22 32, 42 : 페치 유닛 24, 34, 44 : 디코딩 유닛
26, 36, 46 : 실행 유닛 28, 38, 48 : 레지스터 파일
50 : 페치 오류 제어부 60 : 디코딩 오류 제어부
70 : 실행 오류 제어부

Claims (10)

  1. 메모리에 접속된 다수의 프로세서 코어내의 각각의 페치 유닛의 오류를 검출하는 페치 오류 제어부;
    상기 메모리에 접속된 상기 다수의 프로세서 코어내의 각각의 디코딩 유닛의 오류를 검출하는 디코딩 오류 제어부; 및
    상기 메모리에 접속된 상기 다수의 프로세서 코어내의 각각의 실행 유닛의 오류를 검출하고, 동일한 명령어를 상기 다수의 프로세서 코어에서 실행시켜 오류를 발생한 프로세서 코어를 판별하여 이를 상기 페치 오류 제어부 및 상기 디코딩 오류 제어부에게로 알리는 실행 오류 제어부;를 포함하는 것을 특징으로 하는 프로세서의 오류를 검출하는 장치.
  2. 청구항 1에 있어서,
    상기 다수의 프로세서 코어는 세 개이고,
    상기 실행 오류 제어부는 상기 세 개의 프로세서 코어중에서 두 개의 프로세서 코어의 실행 결과는 동일하고 다른 하나의 프로세서 코어의 실행 결과가 상기 두 개의 프로세서의 실행 결과와는 다르면 상기 하나의 프로세서 코어를 상기 오류가 발생한 프로세서 코어로 판별하는 것을 특징으로 하는 프로세서의 오류를 검출하는 장치.
  3. 청구항 2에 있어서,
    상기 실행 오류 제어부는,
    상기 실행 결과가 다른 상기 하나의 프로세서 코어에서 실행한 상기 명령어에 의해 파생된 모든 명령어를 취소시키는 명령 및 정상적인 명령어를 상기 페치 오류 제어부 및 상기 디코딩 오류 제어부에게로 보내는 것을 특징으로 하는 프로세서의 오류를 검출하는 장치.
  4. 청구항 3에 있어서,
    상기 페치 오류 제어부는,
    상기 실행 오류 제어부로부터의 명령 및 정상적인 명령어를 근거로, 상기 하나의 프로세서 코어에서 해당 명령어를 취소하고 상기 정상적인 명령어로 정정하는 것을 특징으로 하는 프로세서의 오류를 검출하는 장치.
  5. 청구항 3에 있어서,
    상기 디코딩 오류 제어부는,
    상기 실행 오류 제어부로부터의 명령 및 정상적인 명령어를 근거로, 상기 하나의 프로세서 코어에서 해당 명령어를 취소하고 상기 정상적인 명령어로 정정하는 것을 특징으로 하는 프로세서의 오류를 검출하는 장치.
  6. 청구항 1에 있어서,
    상기 다수의 프로세서 코어는 네 개 이상인 것을 특징으로 하는 프로세서의 오류를 검출하는 장치.
  7. 각각의 페치 유닛이 페치 오류 제어부와 접속되고 각각의 디코딩 유닛이 디코딩 오류 제어부와 접속되고 각각의 실행 유닛이 실행 오류 제어부와 접속된 제 1 내지 제 3 프로세서 코어가 메모리와 연결된 멀티 프로세서에서 상기 실행 오류 제어부가, 동일한 명령어를 상기 제 1 및 제 2 프로세서 코어에서 수행시키는 단계;
    상기 실행 오류 제어부가, 상기 제 1 및 제 2 프로세서 코어에서의 수행 결과를 비교하는 단계;
    상기 실행 오류 제어부가, 상기 제 1 및 제 2 프로세서 코어에서의 수행 결과가 상호 다르면 상기 명령어를 상기 제 3 프로세서 코어에서 수행시키는 단계; 및
    상기 실행 오류 제어부가, 상기 세 개의 프로세서 코어중에서 두 개의 프로세서 코어의 실행 결과는 동일하고 다른 하나의 프로세서 코어의 실행 결과가 상기 두 개의 프로세서의 실행 결과와는 다르면 상기 하나의 프로세서 코어를 상기 오류가 발생한 프로세서 코어로 판별하는 단계;를 포함하는 것을 특징으로 하는 프로세서의 오류를 검출하는 방법.
  8. 청구항 7에 있어서,
    상기 실행 오류 제어부가, 상기 실행 결과가 다른 상기 하나의 프로세서 코어에서 실행한 상기 명령어에 의해 파생된 모든 명령어를 취소시키는 명령 및 정상적인 명령어를 상기 페치 오류 제어부 및 상기 디코딩 오류 제어부에게로 보내는 단계;를 추가로 포함하는 것을 특징으로 하는 프로세서의 오류를 검출하는 방법.
  9. 청구항 8에 있어서,
    상기 페치 오류 제어부가, 상기 실행 오류 제어부로부터의 명령 및 정상적인 명령어를 근거로 상기 하나의 프로세서 코어에서 해당 명령어를 취소하고 상기 정상적인 명령어로 정정하는 단계를 추가로 포함하는 것을 특징으로 하는 프로세서의 오류를 검출하는 방법.
  10. 청구항 8에 있어서,
    상기 디코딩 오류 제어부가, 상기 실행 오류 제어부로부터의 명령 및 정상적인 명령어를 근거로 상기 하나의 프로세서 코어에서 해당 명령어를 취소하고 상기 정상적인 명령어로 정정하는 단계를 추가로 포함하는 것을 특징으로 하는 프로세서의 오류를 검출하는 방법.
KR1020130054079A 2013-05-14 2013-05-14 프로세서의 오류를 검출하는 장치 및 방법 KR101978984B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130054079A KR101978984B1 (ko) 2013-05-14 2013-05-14 프로세서의 오류를 검출하는 장치 및 방법
US14/255,481 US9348681B2 (en) 2013-05-14 2014-04-17 Apparatus and method for detecting fault of processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130054079A KR101978984B1 (ko) 2013-05-14 2013-05-14 프로세서의 오류를 검출하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140134371A KR20140134371A (ko) 2014-11-24
KR101978984B1 true KR101978984B1 (ko) 2019-05-17

Family

ID=51896801

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130054079A KR101978984B1 (ko) 2013-05-14 2013-05-14 프로세서의 오류를 검출하는 장치 및 방법

Country Status (2)

Country Link
US (1) US9348681B2 (ko)
KR (1) KR101978984B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101658828B1 (ko) 2015-03-23 2016-09-22 한국전자통신연구원 씨피유 코어의 기능복구를 위한 장치 및 방법
KR102515417B1 (ko) 2016-03-02 2023-03-30 한국전자통신연구원 캐시 메모리 장치 및 그것의 동작 방법
CN107679620B (zh) * 2017-04-19 2020-05-26 赛灵思公司 人工神经网络处理装置
CN107679621B (zh) 2017-04-19 2020-12-08 赛灵思公司 人工神经网络处理装置
CN107704922B (zh) * 2017-04-19 2020-12-08 赛灵思公司 人工神经网络处理装置
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US11783026B2 (en) * 2021-01-05 2023-10-10 Nuvoton Technology Corporation Processor with in-band fault-injection detection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161630A1 (en) 2009-12-28 2011-06-30 Raasch Steven E General purpose hardware to replace faulty core components that may also provide additional processor functionality

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4985825A (en) * 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US5923830A (en) * 1997-05-07 1999-07-13 General Dynamics Information Systems, Inc. Non-interrupting power control for fault tolerant computer systems
US6732300B1 (en) * 2000-02-18 2004-05-04 Lev Freydel Hybrid triple redundant computer system
US7370243B1 (en) * 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7366948B2 (en) * 2004-10-25 2008-04-29 Hewlett-Packard Development Company, L.P. System and method for maintaining in a multi-processor system a spare processor that is in lockstep for use in recovering from loss of lockstep for another processor
US20060168485A1 (en) * 2005-01-26 2006-07-27 Via Technologies, Inc Updating instruction fault status register
US7966514B2 (en) 2005-09-19 2011-06-21 Millennium It (Usa), Inc. Scalable fault tolerant system
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
DE102005054587A1 (de) * 2005-11-16 2007-05-24 Robert Bosch Gmbh Programmgesteuerte Einheit und Verfahren zum Betreiben derselbigen
DE102005055067A1 (de) * 2005-11-18 2007-05-24 Robert Bosch Gmbh Vorrichtung und Verfahren zum Beheben von Fehlern bei einem wenigstens zwei Ausführungseinheiten mit Registern aufweisenden System
US20080177990A1 (en) * 2007-01-19 2008-07-24 Mips Technologies, Inc. Synthesized assertions in a self-correcting processor and applications thereof
JP4433006B2 (ja) 2007-07-04 2010-03-17 株式会社デンソー マルチコアの異常監視装置
US20090183035A1 (en) * 2008-01-10 2009-07-16 Butler Michael G Processor including hybrid redundancy for logic error protection
US8095821B2 (en) * 2009-03-17 2012-01-10 International Business Machines Corporation Debugging for multiple errors in a microprocessor environment
US8051323B2 (en) 2010-01-21 2011-11-01 Arm Limited Auxiliary circuit structure in a split-lock dual processor system
US9262292B2 (en) * 2012-06-11 2016-02-16 New York University Test access system, method and computer-accessible medium for chips with spare identical cores
US9529654B2 (en) * 2013-11-27 2016-12-27 Electronics And Telecommunications Research Institute Recoverable and fault-tolerant CPU core and control method thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161630A1 (en) 2009-12-28 2011-06-30 Raasch Steven E General purpose hardware to replace faulty core components that may also provide additional processor functionality

Also Published As

Publication number Publication date
KR20140134371A (ko) 2014-11-24
US20140344623A1 (en) 2014-11-20
US9348681B2 (en) 2016-05-24

Similar Documents

Publication Publication Date Title
KR101978984B1 (ko) 프로세서의 오류를 검출하는 장치 및 방법
US10379989B2 (en) Processing apparatus, trace unit and diagnostic apparatus
JP6266239B2 (ja) マイクロコンピュータ
US10296312B2 (en) Methods, apparatuses, and systems for zero silent data corruption (ZDC) compiler technique
TW201737066A (zh) 程式迴圈控制
TW201737060A (zh) 程式迴圈控制
TW201734768A (zh) 分支指令
US20140149800A1 (en) Test method and test control apparatus
JP6341795B2 (ja) マイクロコンピュータ及びマイクロコンピュータシステム
JP2015115727A (ja) プログラマブルロジックデバイス
TWI710955B (zh) 偶發載入的抑制
KR102131230B1 (ko) 파워트레인 제어기의 램 에러 감지 로직의 자가진단 방법 및 장치
JP4359632B2 (ja) プロセッサ動作検査システム及び動作検査回路
JP2018067047A (ja) 制御装置
US8423834B2 (en) Computer system and memory system
KR101478907B1 (ko) 신호 처리 회로 및 이를 사용한 시험 장치
KR20050121729A (ko) 프로그램 제어식 유닛 및 방법
JP2014132384A (ja) マイクコンピュータ及びその制御方法
CN107423029B (zh) 计算单元
KR102603835B1 (ko) 프로세서 시스템의 프로그램 카운터 구조를 보호하고 인터럽트 요청의 처리를 모니터링하기 위한 방법 및 장치
JP6332134B2 (ja) メモリ診断回路
JP2011154459A (ja) コンピュータシステムのプログラム異常動作検出装置
US20160062862A1 (en) Data processing system with debug control
JP2011232910A (ja) メモリ診断方式
JP6891789B2 (ja) 演算装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right