KR20060049614A - 에러에 중립적인 명령을 추적하여 마이크로프로세서에서의폴스 에러 검출을 줄이는 장치 및 방법 - Google Patents

에러에 중립적인 명령을 추적하여 마이크로프로세서에서의폴스 에러 검출을 줄이는 장치 및 방법 Download PDF

Info

Publication number
KR20060049614A
KR20060049614A KR1020050051806A KR20050051806A KR20060049614A KR 20060049614 A KR20060049614 A KR 20060049614A KR 1020050051806 A KR1020050051806 A KR 1020050051806A KR 20050051806 A KR20050051806 A KR 20050051806A KR 20060049614 A KR20060049614 A KR 20060049614A
Authority
KR
South Korea
Prior art keywords
bit
instruction
processor
entry
command
Prior art date
Application number
KR1020050051806A
Other languages
English (en)
Other versions
KR100736963B1 (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 인텔 코오퍼레이션
Publication of KR20060049614A publication Critical patent/KR20060049614A/ko
Application granted granted Critical
Publication of KR100736963B1 publication Critical patent/KR100736963B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/1052Bypassing or disabling error detection or correction
    • 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/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30181Instruction operation extension or modification
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

에러들에 중립적인 명령들을 추적함으로써 폴스 에러 검출을 줄이는 기술이 개시되었다. 명령이 디코딩 됨에 따라, 앤티 pi 비트는 디코딩된 명령에 태그된다. 패리티 에러가 검출되었을 때 명령 큐는 먼저 앤티 pi 비트가 세트되었는지를 체크한다. 만일 앤티 pi 비트가 세트되었다면 명령은 에러들에 대해 중립적이고 pi비트는 세트될 필요가 없다. 프리페치, 브랜치 및 NOP는 에러들에 대해 중립적인 명령의 유형에 속한다.
마이크로프로세서, 과도 폴트, 소프트 에러, 폴스 에러 검출, 앤티 pi 비트

Description

에러에 중립적인 명령을 추적하여 마이크로프로세서에서의 폴스 에러 검출을 줄이는 장치 및 방법{REDUCING FALSE ERROR DETECTION IN A MICROPROCESSOR BY TRACKING INSTRUCTIONS NEUTRAL TO ERRORS}
도1은 마이크로프로세서의 가능한 폴스 비트 결과를 도시한 블록도.
도2는 에러에 중립적인 명령을 표시하는 명령 흐름 경로를 따라 앤티 pi 비트가 사용될 때의 본 발명의 일 실시예를 도시한 블록도.
도3은 본 발명의 일 실시예에 따른 동작들을 예시한 흐름도.
도4는 소프트 에러를 검출하기 위해 본 발명을 구현하는 예시적 컴퓨터 시스템을 도시한 블록도.
<도면의 주요 부분에 대한 부호의 설명>
200: 파이프라인
410: 실행 코어
415: 명령 처리부
420: 온 칩 메모리
425: 오프 칩 메모리
430: 오디오 인터페이스 드라이브
[관련 출원]
본 출원은, 이하의 공통적으로 양도되고 2004년 6월 17일 출원되고, 제목이 '마이크로프로세서에서 폴스 에러 검출을 줄이기 위한 방법 및 장치'(일련번호 제 호)인 출원과 '동적으로 데드 명령을 추적함으로써 마이크로프로세서에서 폴스 에러 검출을 줄이기'(일련번호 제 호)인 출원과 관계된다.
중성자 및 알파 입자 충돌에 기인한 과도 폴트(transient fault)는 미래의 프로세스 기술에 주요 방해로 부상하고 있다. 개별 트랜지스터의 장애율은 상당한 정도로 상승하지는 않을 수 있지만, 더 많은 트랜지스터를 장치에 통합시키면 이 장치는 장애에 직면하기 쉽게 된다. 그 결과, 프로세서 에러율을 수용할만한 레벨에 유지하고자 하면 설계 부담이 증가할 것으로 예상된다.
과도 폴트로 인한 단일 비트의 뒤바뀜(upset)은 오늘날의 마이크로프로세서 설계에 있어서 주요 도전으로 떠오르고 있다. 이런 장애들은 우주선(cosmic ray)으로부터의 중성자 및 패키징 재료로부터의 알파 입자와 같은 강력한 입자로 인해 발생한다. 트랜지스터 소스 및 확산 노드들은 이런 하전 입자들을 결집할 수 있다. 충분한 양의 축적 전하들은 SRAM 셀, 래치, 또는 게이트와 같은 로직 장치의 상태를 반전시킬 수 있어서, 회로의 동작에 로직 장애를 도입하게 된다. 이런 유형의 장애는 장치의 영구적 장애(failure)를 반영하지는 않기 때문에, 소프트 또는 과도적 에러로 알려져 있다.
소프트 에러는, 온 칩 트랜지스터의 수가 지수 함수적으로 증가하기를 계속하고 있어서, 마이크로프로세서 설계자에게 점점 더 무거운 짐이 되고 있다. 래치 또는 SRAM 비트 당 원 에러율(raw error rate)은 다음 세대의 몇가지 기술로 인해 거의 일정하게 남아 있거나 약간 감소할 것이라 예상하고 있다. 따라서, 추가의 에러 방지 메커니즘 또는 더 강력한 기술(예로 fully-depleted SOI)을 사용하지 않는다면, 마이크로프로세서의 에러율은 각각의 후계 세대에서 프로세서에 추가되는 장치의 개수에 정 비례하여 증가할 것이다.
본 발명의 여러 특징들이 첨부 도면에서 예시된 대로의 양호한 실시예들에 대한 이하의 설명으로부터 명백해질 것인데, 이 도면에서는 유사 참조 부호들은 일반적으로 도면 전체를 통해서 동일부를 가리킨다. 도면들은 반드시 축적에 맞추어져 있는 것은 아니고, 그 강조점은 본 발명의 원리를 예시하는 데에 두고 있다.
이하의 설명에서, 예시를 위한 것이고 제한하는 것은 아닌 것으로서, 본 발명의 여러 특징들의 철저한 이해를 도모하기 위해서, 특정 구조들, 아키텍쳐들, 인터페이스들, 기술들과 같은 특정 상세 사항들이 제시되었다. 그러나, 본 개시의 수혜를 입는 당업자에게 있어서, 본 발명의 여러 특징들이 이런 특정 상세 사항으로부터 벗어나는 그 밖의 예들에서 실시될 수 있다. 어떤 경우에는, 불필요한 상세 사항으로 인해 본 발명의 요점을 흐려 놓지 않기 위해서, 공지된 장치들, 회로들 및 방법들에 대한 설명은 생략된다.
도1은 마이크로프로세서의 단일 비트 폴트의 가능한 결과를 예시하였다. 초기에, 마이크로프로세서는 폴트 있는 비트가 판독되었는지를 판정한다(100). 만일 폴트 있는 비트가 판독되지 않았다면(110), 이는 양호한 폴트로 취급되며 따라서 어떤 에러도 없다. 만일 폴트 비트가 판독되었다면, 프로세서는 다음으로 비트가 에러 보호를 갖는지를 판정한다(115). 폴트 비트가 그에 대해 판독될 때 적어도 세개의 가능한 결과가 있다. 먼저, 에러 보호가 그 비트에 대해 검출되었고 이후 정정되었다면, 폴트는 정정된 것으로 취급된다(102).
둘째로, 만일 비트가 에러 보호를 갖지 않는다면, 이후 프로세서는 명령이 프로그램의 결과에 영향을 끼쳤는지를 판정한다(125). 만일 명령이 프로그램의 결과에 영향을 끼치지 않았다면, 이후 폴트 비트는 양호한 폴트로 취급된다(130). 폴트(110, 120 및 130)는 모두 이 폴트가 어떤 영향도 없고 또는 검출되어 정정되었으므로 비 에러 조건을 표시한다.
만일 명령이 프로그램의 결과에 영향을 미쳤다면, 침묵 데이터 손상(SDC)으로 취급된다. SDC(135)는 가장 교활한 형태의 에러인데, 이 폴트는 시스템이 에러 출력을 발생시키도록 한다. SDC(135)를 피하기 위해, 설계자는 패리티와 같은 기초 에러 검출 메커니즘을 채택할 수 있다.
비트가 에러 보호를 가질 때의 세번째 가능한 결과는 에러가 검출되는 이 상황에 적용된다(140). 폴트를 검출하기는 하나 이를 정정하지는 않는 능력에 따라서 시스템은 비 유효 출력의 발생을 회피하지만, 에러가 발생했을 때 복구할 수는 없다. 따라서, 단순 에러 검출은 에러율을 감소시키지 않으나, 페일 정지 행동을 제공하여 임의의 데이터 손상을 감소시킨다. 이런 유형의 에러들은 검출된 복구 불가능 에러(DUE)로서 알려져 있다.
DUE 이벤트는 검출된 에러들이 실행의 최종 결과에 영향을 줄 지의 여부에 따라서 추가로 하위 분할된다. 양호한 검출된 에러들은 폴스(false) DUE 이벤트(145)로서 알려져 있고, 그 밖의 것은 참 DUE 이벤트(150)로서 알려져 있다. 마이크로프로세서에서, 폴스 DUE 이벤트는 오 경로(wrong-path) 명령들, 잘못 기술된(falsely predicated) 명령들에 대한, 및 노 옵스(no-ops), 프리페치(prefetches) 및 동적인 데드(dynamicaly dead) 명령들을 포함하는 최종 프로그램 상태에 영향 주지 않는 정확한 경로에 대한 스트라이크로부터 발생할 수 있다.
폴스 DUE 이벤트들을 추적하기 위해서, 마이크로프로세서는 Possibly Incorrect에 대한 pi 비트로서 알려진 비트를 매 명령마다 및 잠재적으로는 여러가지의 하드웨어 구조들(관련 애플리케이션에서 상세히 논의됨)에 부가할 수 있다. 에러가 검출되었을 때, 하드웨어는 에러를 신호하는 대신에 영향받은 명령의 pi 비트를 세트할 수 있다. 후에, pi 비트를 조사하고 명령의 속성을 식별함으로써, 하드웨어는 가시적 에러가 정말 발생하였는지를 결정할 수 있다.
폴스 에러를 참 에러로부터 구별하는 것은 복잡한 일이다. 프로세서는 그것이 에러를 검출한 지점에서 이 구별을 하기 위한 충분한 정보를 갖지 않을 수 있다. 예를 들어, 명령 큐가 명령 상의 에러를 검출하였을 때, 이 명령이 잘못된 경로 명령인지의 여부를 분간하지 못할 수 있다. 결과적으로, 프로세서는 파이프라인을 따라서 에러 정보를 전파시키고 이것이 이 구별을 하기에 충분한 정보를 가졌을 때 에러를 제기할 필요가 있다.
마이크로프로세서의 다른 부분들 간에서 에러 정보를 전파시키기 위해서는, 시스템은 pi 비트를 활용한다. pi 비트는 이것이 디코딩부터 은퇴(retirement)까지 파이프라인을 따라 흐르기 때문에 각각의 명령과 논리적으로 연관된다.
pi 비트 메커니즘은 패리티와 같은, 폴트 검출 메커니즘으로부터 폴스 양의 매칭을 회피하는 것을 도운다. 특정하게는, 명령에 대해, 명령이 디코딩되었을 때, pi 비트는 명령에 부가되고 제로 값에 초기화되어 명령이 임의의 에러에 직면하지 않았다는 것을 표시한다. 명령이 파이프라인을 통해서 흐르기 때문에, 기계에 어댑트되고 및 많은 다른 저장 구조들에 기입되고 그것으로부터 판독되도록 여러번 변환될 것이다. 만일 저장 구조가 패리티와 같은 몇몇 형태의 폴트 검출을 가지고, 명령이 단일 비트 바뀌기를 축적한다면, 패리티 에러는 플래그될 것이다. 보통은, 이는 기계 체크 예외를 제기하여 전형적으로는 기계 고장을 일으킨다. 여기서, 기계 고장 대신에, 프로세서는 그 값을 1 로 변화시킴으로써 이 에러를 pi 비트에 개재한다.
에러 체킹 및 pi 비트의 갱신은 명령 실행 도중에 파이프라인에서 및/또는 여러 구조들 중의 다수에서 복수 단계에서 채택될 수도 있다. 에러 체킹 로직은 공지되거나 그 외에 쓸 수 있는 패리티 체커 또는 여러 그 외의 에러 검출 기술들의 형태를 취할 수 있다. 더 나아가, 에러 검출 및 정정 기술들은 pi 비트가 복구가능하지 않은 에러의 경우에 세트되면서, 이런 여러 스테이지들에서 또는 여러 구조들에서 사용될 수 있다.
파이프라인의 커미트 스테이지(commit stage)에서, 커미트 하드웨어는 명령이 오경로 명령, 잘못 기술된 명령 또는 NOP 명령인지를 결정하는 정보를 충분히 갖는다. 이런 겨우들에서, 프로세서는 기계 체크 예외를 제기하지 않으며 기계가 통상적으로 진행하도록 할 것이다. 그러나, 그 밖의 경우에, 이는 참 에러이었을 수 있으며 기계 체크 예외를 제기해만 한다.
pi 비트는 하드웨어 구조들 간에서 (잠재적인) 에러 정보를 전파할 수 있어서 기계가 절대적으로 에러를 선언해야만 하는 경우가 발생할 때까지는 기계 체크 예외를 지연시킨다. 그러나, pi 비트는 그 자체로 특정 구조가 폴트에 직면했는지와 이 폴트가 사용자에게 결국 보여질 것인지의 여부를 분간할 수 없다.
도2는 앤티 pi 비트(anti-pi bit)가 에러들에 중립인 명령(instructions neutral to errors)을 표시하기 위해 명령 흐름 경로를 따라 사용될 때의 일 실시예를 예시하였다. 특정 명령 유형 상에서의 폴트가 사용자가 볼 수 있는 에러로 귀결되지 않고 따라서 프로그램의 최종 결과에 영향 주지 않는 많은 경우들이 마이크로프로세서에서 발생한다. 예를 들어, 메모리로부터의 데이터 블록들을 캐시 내로 프리페치하는 프리페치 명령은 프로그램의 정확도(correctness)를 위해서는 요구되지 않으나 반면에 프로그램의 성능을 위해서는 요구된다. 유사하게, 아키텍쳐의 브랜치 예상 힌트 명령은 프로그램이 프로그램의 제어 흐름 경로에 관한 마이크로프로세서 힌트들을 제공함으로써 그 성능을 향상시키도록 허용한다. NOP와 같이, 마이크로프로세서의 정확도에 어떤 영향도 끼치지 않지만 프로그램 내의 엠프티 정적 명령 슬롯(empty static instruction slot)을 채우는 데에 요구될 수 있는 그 밖의 명령 유형이 있다. 이런 유형의 명령들은 에러에 중립적인 것으로 공지되었다. 이런 명령들의 대부분의 비트는 비트 플립(flip)을 야기하는 알파 또는 중성자 입자들과 부딪혔을 때에 사용자가 볼 수 있는 에러를 낳지 않는다. 따라서, 하드웨어는 이런 명령들의 비연산 코드(non-opcode) 상의 에러를 제기할 필요가 없다.
에러에 대해 중립적인 것을 포함하는 명령이 파이프라인(205)을 통해 흐름에 따라, 이들은 다양한 구조, 버퍼 및 래치에 소재한다. 하나의 그런 구조는 명령 큐(210) 인데, 여기서 명령들은 이들이 실행부로 발행될 때까지 소재한다. 그러나, 명령들이 이런 다른 구조들을 통과함에 따라 이 구조 내의 이들의 표현은 특정 구조에 맞추어 변화할 수 있다.
하드웨어가 명령 큐(210) 내의 명령을 액세스하고 패리티 에러를 검출하였을 때, 앤티 pi 비트가 없을 때, 이는 단순히 pi 비트를 세트할 것이다. 그러나 앞서 논의한 대로, 에러에 중립적인 명령들은 이런 에러가 사용자에게 보이지 않을 것이기 때문에 이들의 pi 비트 세트를 기질 필요가 없다.
대신에, 명령이 파이프라인(205)에서의 초기에 디코딩되고 있다면(200), 앤티 pi 비트로 알려진 또 다른 비트는 디코딩된 명령에 태그될 수 있다. 그러면, 명령 큐(210)가 중립적 명령의 비연산 코드 비트들 상의 패리티 에러를 검출하였을 때, 명령 큐(210)는 먼저 앤티 pi 비트를 체크한다. 만일, 명령이 에러에 중립적이라는 것을 의미하는 앤티 pi 비트가 세트되었다면, 이는 pi 비트를 세트하지 않는다. 그렇지 않은 경우에는, 이는 파이프라인에서의 이후의 추가 처리를 위한 pi 비트를 세트한다.
결국, 명령은 커미트할 것이다(215). 커미트 단계에서, 커미트 하드웨어는 이 명령이 오 경로 명령인지와 이것이 에러에 중립적인 명령인지를 판정하기에 충분한 정보를 갖는다. 환언하면, 앤티 pi 비트는 중립적인 명령 유형에 대해 pi 비트를 중립화한다. 더욱이, pi 비트와 결합되어, 앤티 pi 비트는 폴스 에러 검출율을 추가로 감소시키는 것을 돕는다.
에러에 중립적인 명령에서의 특정 제어 비트들은 특별한 주의를 요한다. 예를 들어, 만일 에러에 중립적인 명령의 opcode 비트들이 스트라이크하였다면, 시스템은 이것이 명령 유형을 정확하게 식별할 수 있기 때문에 기계 체크 예외를 제기해야만 할 것이다. 그러나, 데이터 및 제어 비트들과는 개별적으로 앤티 pi 비트를 보호하는 것은 이 구조가 폴트 상에 pi 비트를 에러에 중립적인 제어 비트에 세트하는 것을 회피하도록 허용해 준다. 만일 앤티 pi 비트가 (패리티 또는 회로 기술을 통해서) 에러 검출만을 가진다면, 앤티 pi 비트상의 패리티 에러에 대해 하드웨어는 기계 체크를 제기해야만 할 것이다. 그러나, 만일 앤티 pi 비트가 (ECC 를 통해 또는 회뢰 기술을 통해) 에러 복구를 가진다면, 하드웨어는 앤티 pi 비트에서의 폴트 뿐만이 아니라 엔트리의 제어 및 데이터 비트들의 폴트로부터도 심지어 복구될 수 있다.
대안으로, 또 다른 가능한 설계가 앤티 pi 비트에 의해 존재한다. 이미 설명한 성계에서, 개별 구조는 앤티 pi 비트를 조사하여 pi 비트를 세트한다. 대신에, 개별 구조는 pi 비트를 세트할 때 앤티 pi 비트를 무시할 수 있다. 그러면, 커미트 단계(215)에서, 은퇴부는 앤티 pi 비트와 pi 비트 모두를 체크하여 이것이 기계 체크 예외를 제기해야 하는지를 판정한다.
앤티 pi 메커니즘은 또한 에러에 중립적인 그 밖의 하드웨어 활동들에 대해서도 일반화될 수 있다. 예를 들어, 하드웨어 프리페치에 의해 발생된 어드레스 상의에러는 에러에 중립적일 수 있고 앤티 pi 비트에 의해 표식된다.
도3은 소프트 에러를 검출하는 방법의 일 실시예를 도시한 흐름도이다. 이 특정 실시예에서, 플로우 차트(300)는 프로세서가 에러에 중립적인 명형 상에서 에러가 생겼는지를 판정하는 경우를 예시하였다. 초기에, 명령이 디코딩되었을 때(305), 앤티 pi 비트(307) 및 pi 비트(310)는 명령과 연관된다. 다음으로, 이 명령은 이것의 앤티 pi 비트 및 pi 비트와 함께, 파이프라인에 큐잉된다(315). 명령이 파이프라인을 통해 흐름에 따라, 기계에 어댑트하기 위해 여러번 변환되고 많은 다른 저장 소자들에 기입되고 그로부터 판독될 것이다.
명령이 파이프라인을 통해 흐르는 동안에 명령은 단일 비트 바뀌기를 축적할 것이고 패리티 에러가 이 명령에 대해 플래그될 것이다(320). 만일 에러가 이 명령에 대해 검출되었다면, 파이프라인은, 만일 이 명령이 에러에 중립적인 것이 되기로 판정되었다면, 영향받은 명령의 앤티 pi 비트를 에러에 중립적인 것에 세트할 것이다(322). 만일 명령이 에러에 중립적인 것이 아니라면, 앤티 pi 비트는 세트되지 않는다. pi 비트는 만일 앤티 pi 비트가 1에 세트되지 않으면, pi 비트는 또한 1에만 세트될 수 있을 것이다. pi 비트는 기계 체크 예외를 제기하는 대신에 세트된다. 만일 에러가 검출되지 않는다면, 이 명령은 이것이 커미트할 때까지 파 이프라인을 통해서 계속할 것이다(330). 커미트 하드웨어는 이후 이 명령이 오경로 명령인지를 판정할 것이다(335). 만일 이 명령이 오경로 명령이라고 판정되면, 이후 pi 비트는 무시되고(340), 그렇지 않다면 프로세서는 기계 체크 에러와 같이 에러를 제거하는 옵션을 갖는다(345).
도4는 소프트 에러를 검출하기 위한 하나의 전형적인 시스템 구현을 예시하였다. 컴퓨터(400)는, 프로세서(405)가 컴퓨터(400)의 중앙처리부(CPU) 또는 중앙처리부들을 포함하는 단일 프로세서 또는 복수의 프로세서 중의 하나로서 기능하는 것으로 도시되었다. 전형적으로는, 프로세서(405)는 단일 집적 회로 칩 내에 구현된다. 프로세서(405)는 하나 또는 그 이상의 실행부를 갖는 실행(처리) 코어(410)을 포함할 수 있다. 프로세서부(405)의 일부는 명령 처리 장치(415)를 포함하는데에 전용된다. 명령 처리 장치(415)는 코어(410)에 결합된 것으로 도시되었다.
본 발명은 이상 설명에 따라 실시되어 코어(410) 내에서 명령을 실행한다. 메모리는 (온 칩 메모리 420 으로 도시한 것처럼) 온 칩으로 위치되거나 또는 (오프 칩 메모리 425 로 도시한 것처럼) 오프 칩으로 위치될 수 있다. 전형적으로는, 온 칩 메모리는 캐시 메모리 또는 주 메모리(RAM)의 일부분일 수 있다. 온 칩 메모리는 전형적으로는 주 메모리(뿐만 아니라 만일 존재한다면 오프 칩 캐시) 와 디스크 저장 장치와 같은 그 밖의 메모리로 구성된다. 온 칩 메모리(420)와 오프 칩 메모리(425) 모두는 개별적으로든 또는 분리해서든, 오디오 인터페이스 장치(430)와 같은 여러 장치에 접속될 수 있다. 그러나, 본 발명은 그밖의 식으로 구성되어 코어(410)에 의한 실행에 의해 명령을 처리할 수 있다.
이상 설명에서, 예시를 위한 것이면 제한적인 의미는 아닌 것으로서, 본 발명의 여러 특징들을 철저히 이해시키기 위해서 특정 구조들, 아키텍쳐들, 인터페이스들, 기술들 등과 같은 특정 상세 사항들이 제시되었다. 그러나, 본 발명이 개시를 안 당업자는 본 발명의 여러 특징들이 이런 특정 상세 사항들을 벗어나는 그 밖의 예에서 실시될 수 있음을 알 것이다. 어떤 경우에, 공지된 장치들, 회로들 및 방법에 대한 설명은 불필요한 상세 사항으로 인해 본 발명의 설명을 흐려놓지 않기 위해서 생략되었다.
본 발명의 구성에 따라서, 예를 들어, 마이크로프로세서의 소프트 에러율이 프로세서에 추가되는 장치의 개수가 늘어나더라도 그에 비례하여 증가하지 않는 효과를 획득하였다.

Claims (39)

  1. 명령을 디코딩하기 위한 디코딩 모듈과,
    상기 디코딩된 명령과 관련된 제1 비트와,
    상기 디코딩된 명령과 관련된 제2 비트 -상기 제2 비트는 상기 명령 상의 폴트(fault)를 식별함- 와,
    상기 디코딩 모듈에 결합되고, 상기 명령 상의 폴트 검출을 검출하기 위한 저장 구조 -상기 저장 구조는 상기 폴트 검출에 기초해 상기 명령의 제1 비트를 체크하고 만일 상기 제1 비트가 세트되었다면 상기 제2 비트는 세트되지 않음-
    를 포함하는 프로세서.
  2. 제1항에 있어서, 만일 상기 제1 비트가 세트되지 않았다면 상기 제2 비트가 세트되는 프로세서.
  3. 제1항에 있어서, 상기 저장 구조에 결합되고, 상기 디코딩된 명령을 처리하기 위한 복수의 스테이지로 구성되는 명령 처리부를 더 포함하는 프로세서.
  4. 제1항에 있어서, 상기 저장 구조는 상기 디코딩된 명령의 비연산 코드(non-opcode) 비트들 상의 폴트 검출을 검출하는 프로세서.
  5. 제1항에 있어서, 상기 제1 비트는 앤티 pi 비트(anti-pi bit)인 프로세서.
  6. 제1항에 있어서, 상기 제2 비트는 pi 비트인 프로세서.
  7. 제1항에 있어서, 상기 폴트 검출은 패리티 에러인 프로세서.
  8. 제4항에 있어서, 상기 제1 비트는 상기 명령 유형에 기초해 세트되는 프로세서.
  9. 제8항에 있어서, 상기 명령은 NOP 명령인 프로세서.
  10. 제8항에 있어서, 상기 명령은 프리페치(prefetch) 명령인 프로세서.
  11. 제8항에 있어서, 상기 명령은 브랜치 예상 힌트 명령((branch predict hint instruction)인 프로세서.
  12. 제1항에 있어서, 상기 저장 구조는 명령 큐인 프로세서.
  13. 제3항에 있어서, 상기 명령은 상기 복수의 스테이지를 통해 발행되고 흐르는 프로세서.
  14. 명령을 디코딩하는 단계와,
    상기 명령과 함께 제1 비트를 로딩하는 단계와,
    상기 명령과 함께 제2 비트를 로딩하는 단계와,
    폴트를 검출하는 단계와,
    폴트를 검출한 것에 기초하여 상기 제1 비트가 세트되었는지를 판정하기 위해 상기 제1 비트를 체크하는 단계와,
    상기 제1 비트가 세트되지 않은 경우에만 상기 제2 비트를 세트하는 단계
    를 포함하는 방법.
  15. 제14항에 있어서, 상기 제1 비트는 명령의 타입과 관련되는 방법.
  16. 제14항에 있어서,
    상기 명령을 큐잉(queuing)하는 단계와,
    상기 명령을 처리하기 위해 파이프라인의 스테이지들을 통해 상기 명령을 전파시키는 단계와,
    상기 명령이 오 경로 명령인지를 판정하는 단계
    를 더 포함하는 방법.
  17. 제15항에 있어서, 폴트를 검출하는 단계는 상기 명령의 비 연산 코드 비트들 상의 상기 폴트를 검출하는 것인 방법.
  18. 엔트리를 검출하기 위한 디코딩 모듈과,
    상기 디코딩 모듈에 결합되고, 비트 상태 변화가 일어나서 상기 엔트리를 손상시켰는지를 식별하기 위해 상기 엔트리와 관련된 제1 검출 비트를 저장하고 상기 엔트리와 관련된 제2 검출 비트를 저장하는 저장 소자 -상기 제2 검출 비트는 상기 제1 검출 비트가 상기 비트 상태 변화에 의해 세트되지 않은 경우에만 세트됨-
    를 포함하는 장치.
  19. 제18항에 있어서,
    상기 엔트리를 처리하기 위한 명령과,
    복수의 스테이지를 통해 상기 엔트리의 흐름을 전파시키기 위한 명령 흐름 경로
    를 더 포함하는 장치.
  20. 제19항에 있어서, 엔트리가 오 경로에 있는지를 판정하는 커미트 모듈(commit module)을 더 포함하는 장치.
  21. 제18항에 있어서, 상기 비트 상태 변화는 상기 엔트리의 비 연산 코드 상에서 일어나는 장치.
  22. 제21항에 있어서, 상기 제1 검출 비트는 NOP 명령들에 대해 세트되는 장치.
  23. 제21항에 있어서, 상기 제1 검출 비트는 프리페치 명령들에 대해 세트되는 장치.
  24. 제21항에 있어서, 상기 제1 검출 비트는 브랜치 예상 힌트 명령들에 대해 세트되는 장치.
  25. 제19항에 있어서, 상기 엔트리는 상기 명령 흐름 경로의 복수의 스테이지들을 통해 발행되고 흐르는 장치.
  26. 제19항에 있어서, 상기 제2 검출 비트는 pi 비트인 장치.
  27. 제19항에 있어서, 상기 제1 검출 비트는 앤티 pi 비트인 장치.
  28. 제19항에 있어서, 상기 제1 검출 비트는 에러들에 중립적인 엔트리들에 대해 세트되는 장치.
  29. 페칭(fetching) 전에 엔트리를 저장하는 오프 칩 메모리와,
    상기 오프 칩 메모리에 결합된 프로세서
    를 포함하고,
    상기 프로세서는
    엔트리를 검출하기 위한 디코딩 모듈과,
    상기 엔트리와 관련된 제1 비트와 제2 비트를 저장하는 저장 소자 -상기 제1 비트는 비트 상태 변화가 일어나서 상기 엔트리를 손상시켰는지를 식별하고 상기 제2 비트는 상기 제1 비트가 상기 비트 상태 변화에 의해 세트되지 않은 경우에만 세트됨-
    를 포함하는
    시스템.
  30. 제29항에 있어서,
    상기 엔트리를 처리하기 위한 명령 큐와,
    복수의 스테이지를 통해 상기 엔트리의 흐름을 전파시키기 위한 명령 흐름 경로와,
    엔트리가 오 경로에 있는지를 판정하는 커미트 모듈
    를 더 포함하는 시스템.
  31. 제29항에 있어서,
    온 칩 메모리와,
    상기 온 칩 메모리에 결합된 오디오 인터페이스
    를 더 포함하는 시스템.
  32. 제29항에 있어서, 상기 오프 칩 메모리에 결합된 오디오 인터페이스를 더 포함하는 시스템.
  33. 제29항에 있어서, 상기 제1 비트는 앤티 pi 비트인 시스템.
  34. 제29항에 있어서, 상기 제2 비트는 pi 비트인 시스템.
  35. 제29항에 있어서, 상기 비트 상태 변화는 상기 엔트리의 비 연산 코드 비트들 상에서 일어나는 시스템.
  36. 제29항에 있어서, 상기 제1 비트는 NOP 엔트리들에 대해 세트되는 시스템.
  37. 제29항에 있어서, 상기 제1 비트는 프리페치 엔트리에 대해 세트되는 시스템.
  38. 제29항에 있어서, 상기 제1 비트는 브랜치 예상 힌트 엔트리들에 대해 세트되는 시스템.
  39. 제29항에 있어서, 상기 제1 비트는 에러들에 중립적인 엔트리들에 대해 세트되는 시스템.
KR1020050051806A 2004-06-17 2005-06-16 에러에 중립적인 명령을 추적하여 마이크로프로세서에서의폴스 에러 검출을 줄이는 장치 및 방법 KR100736963B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/871,429 2004-06-17
US10/871,429 US7386756B2 (en) 2004-06-17 2004-06-17 Reducing false error detection in a microprocessor by tracking instructions neutral to errors

Publications (2)

Publication Number Publication Date
KR20060049614A true KR20060049614A (ko) 2006-05-19
KR100736963B1 KR100736963B1 (ko) 2007-07-09

Family

ID=35056837

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050051806A KR100736963B1 (ko) 2004-06-17 2005-06-16 에러에 중립적인 명령을 추적하여 마이크로프로세서에서의폴스 에러 검출을 줄이는 장치 및 방법

Country Status (5)

Country Link
US (1) US7386756B2 (ko)
EP (1) EP1612676A3 (ko)
KR (1) KR100736963B1 (ko)
CN (1) CN100407135C (ko)
TW (1) TWI293429B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283590A1 (en) * 2004-06-17 2005-12-22 Weaver Christopher T Reducing false error detection in a microprocessor by tracking dynamically dead instructions
US7581152B2 (en) * 2004-12-22 2009-08-25 Intel Corporation Fault free store data path for software implementation of redundant multithreading environments
US7849387B2 (en) * 2008-04-23 2010-12-07 Intel Corporation Detecting architectural vulnerability of processor resources
US7921280B2 (en) * 2008-06-27 2011-04-05 Intel Corporation Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array
CN101853151B (zh) * 2009-05-19 2013-06-26 威盛电子股份有限公司 适用于微处理器的装置及方法
US8327249B2 (en) * 2009-08-20 2012-12-04 Broadcom Corporation Soft error rate protection for memories
CN101866281B (zh) * 2010-06-13 2013-05-22 清华大学 一种多周期指令执行方法和装置
US9063836B2 (en) * 2010-07-26 2015-06-23 Intel Corporation Methods and apparatus to protect segments of memory
JP5937209B2 (ja) * 2012-07-03 2016-06-22 株式会社日立製作所 故障影響評価システム及び評価方法
CN103294169B (zh) * 2013-05-31 2015-10-28 上海交通大学 一种功耗优化的众核系统的冗余保护系统及方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3531631A (en) 1967-01-11 1970-09-29 Ibm Parity checking system
US4224681A (en) * 1978-12-15 1980-09-23 Digital Equipment Corporation Parity processing in arithmetic operations
US4604750A (en) * 1983-11-07 1986-08-05 Digital Equipment Corporation Pipeline error correction
US4794517A (en) 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
US5761413A (en) * 1987-12-22 1998-06-02 Sun Microsystems, Inc. Fault containment system for multiprocessor with shared memory
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
JP2618958B2 (ja) 1988-03-28 1997-06-11 株式会社東芝 パリティチェック制御装置
US5649090A (en) * 1991-05-31 1997-07-15 Bull Hn Information Systems Inc. Fault tolerant multiprocessor computer system
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
EP0596144A1 (en) 1992-10-07 1994-05-11 International Business Machines Corporation Hierarchical memory system for microcode and means for correcting errors in the microcode
US5535226A (en) 1994-05-31 1996-07-09 International Business Machines Corporation On-chip ECC status
US5813027A (en) * 1996-03-08 1998-09-22 Vlsi Technology, Inc. Method for storing and transferring wave table audio samples using a DSP cache, a link list structure, and compression
US5781722A (en) * 1996-05-10 1998-07-14 Symantec Corporation Method for diagnosis and repair of compressed volumes utilizing a bitmap
US5872910A (en) 1996-12-27 1999-02-16 Unisys Corporation Parity-error injection system for an instruction processor
US6247118B1 (en) 1998-06-05 2001-06-12 Mcdonnell Douglas Corporation Systems and methods for transient error recovery in reduced instruction set computer processors via instruction retry
US6253306B1 (en) * 1998-07-29 2001-06-26 Advanced Micro Devices, Inc. Prefetch instruction mechanism for processor
KR20010002479A (ko) * 1999-06-15 2001-01-15 윤종용 고속 명령 수행을 위한 명령어 프리디코더
US6457119B1 (en) 1999-07-23 2002-09-24 Intel Corporation Processor instruction pipeline with error detection scheme
US6738892B1 (en) 1999-10-20 2004-05-18 Transmeta Corporation Use of enable bits to control execution of selected instructions
US6675341B1 (en) 1999-11-17 2004-01-06 International Business Machines Corporation Extended error correction for SEC-DED codes with package error detection ability
US6862677B1 (en) 2000-02-16 2005-03-01 Koninklijke Philips Electronics N.V. System and method for eliminating write back to register using dead field indicator
KR20010087046A (ko) 2000-03-06 2001-09-15 서평원 컴퓨터 시스템
US6543028B1 (en) 2000-03-31 2003-04-01 Intel Corporation Silent data corruption prevention due to instruction corruption by soft errors
US6654909B1 (en) 2000-06-30 2003-11-25 Intel Corporation Apparatus and method for protecting critical resources against soft errors in high performance microprocessors
US6662319B1 (en) * 2000-08-31 2003-12-09 Hewlett-Packard Development Company, L.P. Special encoding of known bad data
US6895527B1 (en) * 2000-09-30 2005-05-17 Intel Corporation Error recovery for speculative memory accesses
US6823448B2 (en) 2000-12-15 2004-11-23 Intel Corporation Exception handling using an exception pipeline in a pipelined processor
US6704890B1 (en) 2000-12-22 2004-03-09 Nortel Networks Limited Skew compensating interface for operation with arbitrary data
US6804799B2 (en) 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7318169B2 (en) 2002-05-15 2008-01-08 David Czajkowski Fault tolerant computer
US6944791B2 (en) * 2002-07-18 2005-09-13 Lsi Logic Corporation Method of handling unreadable blocks during write of a RAID device
US7222270B2 (en) 2003-01-10 2007-05-22 International Business Machines Corporation Method for tagging uncorrectable errors for symmetric multiprocessors
US20050138478A1 (en) 2003-11-14 2005-06-23 Safford Kevin D. Error detection method and system for processors that employ alternating threads

Also Published As

Publication number Publication date
CN1710532A (zh) 2005-12-21
EP1612676A3 (en) 2009-04-22
KR100736963B1 (ko) 2007-07-09
EP1612676A2 (en) 2006-01-04
US20050283685A1 (en) 2005-12-22
TWI293429B (en) 2008-02-11
TW200604944A (en) 2006-02-01
US7386756B2 (en) 2008-06-10
CN100407135C (zh) 2008-07-30

Similar Documents

Publication Publication Date Title
KR100736963B1 (ko) 에러에 중립적인 명령을 추적하여 마이크로프로세서에서의폴스 에러 검출을 줄이는 장치 및 방법
JP4448539B2 (ja) マイクロプロセッサにおける偽エラーを低減する方法及び装置
US7243262B2 (en) Incremental checkpointing in a multi-threaded architecture
US7308607B2 (en) Periodic checkpointing in a redundantly multi-threaded architecture
Mukherjee et al. The soft error problem: An architectural perspective
US7747932B2 (en) Reducing the uncorrectable error rate in a lockstepped dual-modular redundancy system
US7506217B2 (en) Apparatus and method for software-based control flow checking for soft error detection to improve microprocessor reliability
US7373548B2 (en) Hardware recovery in a multi-threaded architecture
Kim et al. Soft error sensitivity characterization for microprocessor dependability enhancement strategy
US7512772B2 (en) Soft error handling in microprocessors
KR100898650B1 (ko) 애플리케이션 프로그램에의 프로세스 킬 오류 벡터링
US6543028B1 (en) Silent data corruption prevention due to instruction corruption by soft errors
US7380169B2 (en) Converting merge buffer system-kill errors to process-kill errors
US20040205385A1 (en) Method and apparatus for improving reliability in microprocessors
US6571363B1 (en) Single event upset tolerant microprocessor architecture
US20070044003A1 (en) Method and apparatus of detecting and correcting soft error
US20230115158A1 (en) Method for detecting and recovery from soft errors in a computing device
US6658621B1 (en) System and method for silent data corruption prevention due to next instruction pointer corruption by soft errors
Weaver et al. Reducing the soft-error rate of a high-performance microprocessor
US20160065243A1 (en) Radiation hardening architectural extensions for a radiation hardened by design microprocessor
Kim et al. On-line integrity monitoring of microprocessor control logic
US20090150653A1 (en) Mechanism for soft error detection and recovery in issue queues
US20060156123A1 (en) Fault free store data path for software implementation of redundant multithreading environments
US20050283590A1 (en) Reducing false error detection in a microprocessor by tracking dynamically dead instructions
US20020087842A1 (en) Method and apparatus for performing architectural comparisons

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20100630

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee