KR100736963B1 - 에러에 중립적인 명령을 추적하여 마이크로프로세서에서의폴스 에러 검출을 줄이는 장치 및 방법 - Google Patents
에러에 중립적인 명령을 추적하여 마이크로프로세서에서의폴스 에러 검출을 줄이는 장치 및 방법 Download PDFInfo
- Publication number
- KR100736963B1 KR100736963B1 KR1020050051806A KR20050051806A KR100736963B1 KR 100736963 B1 KR100736963 B1 KR 100736963B1 KR 1020050051806 A KR1020050051806 A KR 1020050051806A KR 20050051806 A KR20050051806 A KR 20050051806A KR 100736963 B1 KR100736963 B1 KR 100736963B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- instruction
- processor
- command
- entry
- Prior art date
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 24
- 230000007935 neutral effect Effects 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims abstract description 18
- 230000001902 propagating effect Effects 0.000 claims 3
- 230000004044 response Effects 0.000 claims 1
- 230000001052 transient effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 239000002245 particle Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- JJWKPURADFRFRB-UHFFFAOYSA-N carbonyl sulfide Chemical compound O=C=S JJWKPURADFRFRB-UHFFFAOYSA-N 0.000 description 1
- 230000002498 deadly effect Effects 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0721—Error 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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/1052—Bypassing or disabling error detection or correction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/1407—Checkpointing the instruction stream
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, 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)
- Detection And Correction Of Errors (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
에러들에 중립적인 명령들을 추적함으로써 폴스 에러 검출을 줄이는 기술이 개시되었다. 명령이 디코딩 됨에 따라, 앤티 pi 비트는 디코딩된 명령에 태그된다. 패리티 에러가 검출되었을 때 명령 큐는 먼저 앤티 pi 비트가 세트되었는지를 체크한다. 만일 앤티 pi 비트가 세트되었다면 명령은 에러들에 대해 중립적이고 pi비트는 세트될 필요가 없다. 프리페치, 브랜치 및 NOP는 에러들에 대해 중립적인 명령의 유형에 속한다.
마이크로프로세서, 과도 폴트, 소프트 에러, 폴스 에러 검출, 앤티 pi 비트
Description
도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), 이는 양호한 폴트(benign fault)로 취급되며 따라서 어떤 에러도 없다. 만일 폴트 비트가 판독되었다면, 프로세서는 다음으로 비트가 에러 보호를 갖는지를 판정한다(115). 폴트 비트가 판독될 때 적어도 세개의 가능한 결과가 있다. 먼저, 에러 보호가 그 비트에 대해 검출되었고 이후 정정되었다면, 폴트는 정정된 것으로 취급된다(120).
둘째로, 만일 비트가 에러 보호를 갖지 않는다면, 이후 프로세서는 명령이 프로그램의 결과에 영향을 끼칠지 판정한다(125). 만일 명령이 프로그램의 결과에 영향을 끼치지 않는다면, 이후 폴트 비트는 양호한 폴트로 취급된다(130). 폴트(110, 120 및 130)는 모두 이 폴트가 어떤 영향도 없고 또는 검출되어 정정되었으므로 비 에러 조건을 표시한다.
만일 명령이 프로그램의 결과에 영향을 미친다면, 침묵 데이터 손상(SDC; silent data corruption)(135)으로 취급된다. SDC(135)는 가장 교활한 형태의 에러인데, 이 폴트는 시스템이 에러 출력을 발생시키도록 한다. SDC(135)를 피하기 위해, 설계자는 패리티와 같은 기초 에러 검출 메커니즘을 채택할 수 있다.
비트가 에러 보호를 가질 때의 세번째 가능한 결과는 에러가 검출되는 이 상황에 적용된다(140). 폴트를 검출하기는 하나 이를 정정하지는 않는 능력에 따라서 시스템은 유효하지 않은 출력의 발생을 피할 수 있지만, 에러가 발생했을 때 복구할 수는 없다. 따라서, 단순 에러 검출은 에러율을 감소시키지 않으나, 페일 정지(fail-stop) 행동을 제공하여 임의의 데이터 손상을 감소시킨다. 이런 유형의 에러들은 검출된 복구 불가능 에러(DUE; detected unrecoverable errors)로서 알려져 있다.
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 비트 메커니즘은 패리티와 같은, 폴트 검출 메커니즘으로부터 폴스 양의 매칭(false positive matches)을 회피하는 것을 도운다. 구체적으로 명령에 대해, 명령이 디코딩되었을 때 pi 비트는 명령에 부가되고 제로 값으로 초기화되어 명령이 임의의 에러에 직면하지 않았다는 것을 표시한다. 명령이 파이프라인을 통해서 흐르기 때문에, 기계에 어댑트되고 많은 다른 저장 구조들에 기록되고 저장 구조들로부터 판독되도록 여러번 변환될 것이다. 만일 저장 구조가 패리티와 같은 몇몇 형태의 폴트 검출을 가지고, 명령이 단일 비트 바뀌기(upset)를 축적한다면, 패리티 에러는 플래그될 것이다. 보통은, 이는 기계 체크 예외를 제기하여 전형적으로는 기계 고장을 일으킨다. 여기서, 기계 고장 대신에, 프로세서는 pi 비트 값을 1 로 변화시킴으로써 이 에러를 pi 비트에 개재한다.
에러 체킹 및 pi 비트의 갱신은 명령 실행 도중에 파이프라인에서 및/또는 여러 구조들 중의 다수에서 복수 단계에서 사용될 수도 있다. 에러 체킹 로직은 공지되거나 그 외에 쓸 수 있는 패리티 체커 또는 여러 그 외의 에러 검출 기술들의 형태를 취할 수 있다. 더 나아가, 에러 검출 및 정정 기술들은 pi 비트가 복구가능하지 않은 에러의 경우에 세트되면서, 이런 여러 스테이지들에서 또는 여러 구조들에서 사용될 수 있다.
파이프라인의 커미트 스테이지(commit stage)에서, 커미트 하드웨어는 명령이 오경로 명령, 잘못 기술된 명령 또는 NOP 명령인지를 결정하는 정보를 충분히 갖는다. 이런 경우, 프로세서는 기계 체크 예외를 제기하지 않으며 기계가 통상적으로 진행하도록 할 것이다. 그러나, 그 밖의 경우에, 이는 트루 에러이었을 수 있으며 기계 체크 예외를 제기해야만 한다.
pi 비트는 하드웨어 구조들 간에서 (잠재적인) 에러 정보를 전파할 수 있어서, 기계가 절대적으로 에러를 선언해야만 하는 경우가 발생할 때까지 기계 체크 예외를 지연시킨다. 그러나, pi 비트는 그 자체로 특정 구조가 폴트에 직면했는지와 이 폴트를 사용자가 볼 수 있을지 여부를 알려줄 수 없다.
도2는 앤티 pi 비트(anti-pi bit)가 에러들에 중립인 명령(instructions neutral to errors)을 표시하기 위해 명령 흐름 경로를 따라 사용될 때의 일 실시예를 예시하였다. 특정 명령 유형 상에서의 폴트가 사용자가 볼 수 있는 에러로 귀결되지 않아서 프로그램의 최종 결과에 영향 주지 않는 많은 경우들이 마이크로프로세서에서 발생한다. 예를 들어, 메모리로부터의 데이터 블록들을 캐시 내로 프리페치하는 프리페치 명령은 프로그램의 정확도(correctness)를 위해서는 요구되지 않는 반면 프로그램의 성능을 위해서 요구된다. 유사하게, 아키텍쳐의 브랜치 예상 힌트 명령(branch predict hint instruction)은 프로그램이 프로그램의 제어 흐름 경로에 관한 마이크로프로세서 힌트들을 제공함으로써 그 성능을 향상시키도록 허용한다. NOP와 같이, 마이크로프로세서의 정확도에 어떤 영향도 끼치지 않지만 프로그램 내의 엠프티 정적 명령 슬롯(empty static instruction slot)을 채우는 데에 요구될 수 있는 그 밖의 명령 유형이 있다. 이런 유형의 명령들은 에러에 중립적인 것으로 알려져 있다. 이런 명령들의 대부분의 비트는 비트 플립(flip)을 야기하는 알파 또는 중성자 입자들과 부딪혔을 때에 사용자가 볼 수 있는 에러를 야기하지 않는다. 따라서, 하드웨어는 이런 명령들의 비연산 코드(non-opcode) 상의 에러를 제기할 필요가 없다.
에러에 대해 중립적인 것을 포함하는 명령이 파이프라인(205)을 통해 흐름에 따라, 이들은 다양한 구조, 버퍼 및 래치에 소재한다. 그러한 하나의 구조는 명령 큐(210) 인데, 여기서 명령들은 이들이 실행부로 발행될 때까지 소재한다. 그러나, 명령들이 이런 서로 다른 구조들을 통과함에 따라 이 구조 내의 이들의 표현은 특정 구조에 맞추어 변화할 수 있다.
앤티 pi 비트가 없는 상황에서, 하드웨어가 명령 큐(210) 내의 명령을 액세스하고 패리티 에러를 검출하였을 때, 이는 단순히 pi 비트를 세트할 것이다. 그러나 앞서 논의한 대로, 에러에 중립적인 명령들은 이런 에러가 사용자에게 보이지 않을 것이기 때문에 이들의 pi 비트 세트를 가질 필요가 없다.
대신에, 명령이 파이프라인(205)에서의 초기에 디코딩되고 있다면(200), 앤티 pi 비트로 알려진 또 다른 비트는 디코딩된 명령에 태그될 수 있다. 그러면, 명령 큐(210)가 중립적 명령의 비연산 코드 비트들 상의 패리티 에러를 검출한 때, 명령 큐(210)는 먼저 앤티 pi 비트를 체크한다. 만일, 명령이 에러에 중립적이라는 것을 의미하는 앤티 pi 비트가 세트되었다면, 이는 pi 비트를 세트하지 않는다. 그렇지 않은 경우에는, 이는 파이프라인에서의 이후의 추가 처리를 위한 pi 비트를 세트한다.
결국, 명령은 커미트(commit)할 것이다(215). 커미트 단계에서, 커미트 하드웨어는 이 명령이 오 경로 명령인지와 이것이 에러에 중립적인 명령인지를 판정하기에 충분한 정보를 갖는다. 즉, 앤티 pi 비트는 중립적인 명령 유형에 대해 pi 비트를 중립화한다. 더욱이, pi 비트와 결합되어, 앤티 pi 비트는 폴스 에러 검출율을 추가로 감소시키는 것을 돕는다.
에러에 중립적인 명령에서의 특정 제어 비트들은 특별한 주의를 요한다. 예를 들어, 만일 에러에 중립적인 명령의 opcode 비트들이 스트라이크하였다면, 시스템은 이것이 명령 유형을 정확하게 식별할 수 있기 때문에 기계 체크 예외를 제기해야만 할 것이다. 그러나, 데이터 및 제어 비트들과는 개별적으로 앤티 pi 비트를 보호하는 것은 이 구조가 폴트 상에 pi 비트를 에러에 중립적인 제어 비트에 세트하는 것을 회피하도록 허용해 준다. 만일 앤티 pi 비트가 (패리티 또는 회로 기술을 통해서) 에러 검출만을 가진다면, 앤티 pi 비트상의 패리티 에러에 대해 하드웨어는 기계 체크를 제기해야만 할 것이다. 그러나, 만일 앤티 pi 비트가 (ECC 를 통해 또는 회로 기술을 통해) 에러 복구를 가진다면, 하드웨어는 앤티 pi 비트에서의 폴트 뿐만이 아니라 엔트리의 제어 및 데이터 비트들의 폴트로부터도 심지어 복구될 수 있다.
대안으로, 또 다른 가능한 설계가 앤티 pi 비트에 의해 존재한다. 이미 설명한 설계에서, 개별 구조는 앤티 pi 비트를 조사하여 pi 비트를 세트한다. 대신에, 개별 구조는 pi 비트를 세트할 때 앤티 pi 비트를 무시할 수 있다. 그러면, 커미트 단계(215)에서, 은퇴부(retire unit)는 앤티 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)
- 명령을 디코딩하기 위한 디코딩 모듈;상기 디코딩된 명령과 연관되고 상기 명령이 에러에 중립적(neutral)이라는 것을 식별하기 위한 제1 비트;상기 디코딩된 명령과 연관되고 상기 명령 상의 폴트(fault)를 식별하기 위한 제2 비트; 및상기 디코딩 모듈에 결합되고, 상기 명령 상의 폴트 검출을 검출하기 위한 저장 구조 -상기 저장 구조는 상기 폴트 검출에 기초해 상기 명령의 제1 비트를 체크하고 만일 상기 제1 비트가 세트되었다면 상기 제2 비트는 세트되지 않음-를 포함하는 프로세서.
- 제1항에 있어서, 만일 상기 제1 비트가 세트되지 않으면 상기 제2 비트가 세트되는 프로세서.
- 제1항에 있어서, 상기 저장 구조에 결합되고, 상기 디코딩된 명령을 처리하기 위한 복수의 스테이지로 구성되는 명령 처리부를 더 포함하는 프로세서.
- 제1항에 있어서, 상기 저장 구조는 상기 디코딩된 명령의 비연산 코드(non-opcode) 비트들 상의 폴트 검출을 검출하는 프로세서.
- 제1항에 있어서, 상기 제1 비트는 앤티 pi 비트(anti-Possibly Incorrect bit)인 프로세서.
- 제1항에 있어서, 상기 제2 비트는 pi 비트(Possibly Incorrect bit)인 프로세서.
- 제1항에 있어서, 상기 폴트 검출은 패리티 에러인 프로세서.
- 제4항에 있어서, 상기 제1 비트는 상기 명령 유형에 기초해 세트되는 프로세서.
- 제8항에 있어서, 상기 명령은 NOP 명령인 프로세서.
- 제8항에 있어서, 상기 명령은 프리페치(prefetch) 명령인 프로세서.
- 제8항에 있어서, 상기 명령은 브랜치 예상 힌트 명령((branch predict hint instruction)인 프로세서.
- 제1항에 있어서, 상기 저장 구조는 명령 큐인 프로세서.
- 제3항에 있어서, 상기 명령은 상기 복수의 스테이지를 통해 발행되고 흐르는 프로세서.
- 명령을 디코딩하는 단계와,상기 명령과 함께 상기 명령이 에러에 중립적이라는 것을 식별하기 위한 제1 비트를 로딩하는 단계;상기 명령과 함께 상기 명령 상의 폴트를 식별하기 위한 제2 비트를 로딩하는 단계;폴트를 검출하는 단계;폴트를 검출하는 것에 기초하여 상기 제1 비트가 세트되었는지를 판정하기 위해 상기 제1 비트를 체크하는 단계, 및상기 제1 비트가 세트되지 않은 경우에만 상기 제2 비트를 세트하는 단계를 포함하는 방법.
- 제14항에 있어서, 상기 제1 비트는 명령의 타입과 관련되는 방법.
- 제14항에 있어서,상기 명령을 큐잉(queuing)하는 단계;상기 명령을 처리하기 위해 파이프라인의 스테이지들을 통해 상기 명령을 전파시키는 단계;상기 명령이 오 경로 명령(wrong path instruction)인지를 판정하는 단계를 더 포함하는 방법.
- 제15항에 있어서, 폴트를 검출하는 단계는 상기 명령의 비 연산 코드 비트들 상의 상기 폴트를 검출하는 것인 방법.
- 엔트리를 검출하기 위한 디코딩 모듈; 및상기 디코딩 모듈에 결합되고, 비트 상태 변화가 일어나서 상기 엔트리를 손상시켰는지를 식별하기 위해 상기 엔트리와 관련된 제1 검출 비트를 저장하고 상기 엔트리와 관련된 제2 검출 비트를 저장하는 저장 소자 -상기 제2 검출 비트는 상기 제1 검출 비트가 상기 비트 상태 변화에 의해 세트되지 않은 경우에만 세트됨-를 포함하는 장치.
- 제18항에 있어서,상기 엔트리를 처리하기 위한 명령 큐; 및복수의 스테이지를 통해 상기 엔트리의 흐름을 전파시키기 위한 명령 흐름 경로를 더 포함하는 장치.
- 제19항에 있어서, 엔트리가 오 경로에 있는지를 판정하는 커미트 모듈(commit module)을 더 포함하는 장치.
- 제18항에 있어서, 상기 비트 상태 변화는 상기 엔트리의 비 연산 코드 상에서 일어나는 장치.
- 삭제
- 삭제
- 삭제
- 삭제
- 제19항에 있어서, 상기 제2 검출 비트는 pi 비트인 장치.
- 제19항에 있어서, 상기 제1 검출 비트는 앤티 pi 비트인 장치.
- 제19항에 있어서, 상기 제1 검출 비트는 에러들에 중립적인 엔트리들에 대해 세트되는 장치.
- 페칭(fetching) 전에 엔트리를 저장하는 오프 칩 메모리와,상기 오프 칩 메모리에 결합된 프로세서를 포함하고,상기 프로세서는엔트리를 검출하기 위한 디코딩 모듈과,상기 엔트리와 관련된 제1 비트와 제2 비트를 저장하는 저장 소자 -상기 제1 비트는 비트 상태 변화가 일어나서 상기 엔트리를 손상시켰는지를 식별하고 상기 제2 비트는 상기 제1 비트가 상기 비트 상태 변화에 의해 세트되지 않은 경우에만 세트됨-를 포함하는시스템.
- 제29항에 있어서,상기 엔트리를 처리하기 위한 명령 큐와,복수의 스테이지를 통해 상기 엔트리의 흐름을 전파시키기 위한 명령 흐름 경로와,엔트리가 오 경로에 있는지를 판정하는 커미트 모듈를 더 포함하는 시스템.
- 제29항에 있어서,온 칩 메모리와,상기 온 칩 메모리에 결합된 오디오 인터페이스를 더 포함하는 시스템.
- 제29항에 있어서, 상기 오프 칩 메모리에 결합된 오디오 인터페이스를 더 포함하는 시스템.
- 제29항에 있어서, 상기 제1 비트는 앤티 pi 비트인 시스템.
- 제29항에 있어서, 상기 제2 비트는 pi 비트인 시스템.
- 제29항에 있어서, 상기 비트 상태 변화는 상기 엔트리의 비 연산 코드 비트들 상에서 일어나는 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/871,429 US7386756B2 (en) | 2004-06-17 | 2004-06-17 | Reducing false error detection in a microprocessor by tracking instructions neutral to errors |
US10/871,429 | 2004-06-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060049614A KR20060049614A (ko) | 2006-05-19 |
KR100736963B1 true 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)
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 |
WO2014006693A1 (ja) * | 2012-07-03 | 2014-01-09 | 株式会社日立製作所 | 故障影響評価システム及び評価方法 |
CN103294169B (zh) * | 2013-05-31 | 2015-10-28 | 上海交通大学 | 一种功耗优化的众核***的冗余保护***及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010002479A (ko) * | 1999-06-15 | 2001-01-15 | 윤종용 | 고속 명령 수행을 위한 명령어 프리디코더 |
Family Cites Families (32)
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 |
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 |
-
2004
- 2004-06-17 US US10/871,429 patent/US7386756B2/en not_active Expired - Fee Related
-
2005
- 2005-05-20 TW TW094116575A patent/TWI293429B/zh not_active IP Right Cessation
- 2005-06-01 EP EP05253361A patent/EP1612676A3/en not_active Withdrawn
- 2005-06-16 KR KR1020050051806A patent/KR100736963B1/ko not_active IP Right Cessation
- 2005-06-17 CN CN2005100768286A patent/CN100407135C/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010002479A (ko) * | 1999-06-15 | 2001-01-15 | 윤종용 | 고속 명령 수행을 위한 명령어 프리디코더 |
Also Published As
Publication number | Publication date |
---|---|
TWI293429B (en) | 2008-02-11 |
CN1710532A (zh) | 2005-12-21 |
KR20060049614A (ko) | 2006-05-19 |
CN100407135C (zh) | 2008-07-30 |
TW200604944A (en) | 2006-02-01 |
EP1612676A2 (en) | 2006-01-04 |
US7386756B2 (en) | 2008-06-10 |
EP1612676A3 (en) | 2009-04-22 |
US20050283685A1 (en) | 2005-12-22 |
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 | |
US7373548B2 (en) | Hardware recovery in a multi-threaded architecture | |
US7506217B2 (en) | Apparatus and method for software-based control flow checking for soft error detection to improve microprocessor reliability | |
US7747932B2 (en) | Reducing the uncorrectable error rate in a lockstepped dual-modular redundancy system | |
US6802039B1 (en) | Using hardware or firmware for cache tag and data ECC soft error correction | |
KR100898650B1 (ko) | 애플리케이션 프로그램에의 프로세스 킬 오류 벡터링 | |
JP4294626B2 (ja) | マージバッファのシステムキルエラーのプロセスキルエラーへの変換技術 | |
US6543028B1 (en) | Silent data corruption prevention due to instruction corruption by soft errors | |
US6571363B1 (en) | Single event upset tolerant microprocessor architecture | |
US20070044003A1 (en) | Method and apparatus of detecting and correcting soft error | |
US9594648B2 (en) | Controlling non-redundant execution in a redundant multithreading (RMT) processor | |
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 | |
US20090150653A1 (en) | Mechanism for soft error detection and recovery in issue queues | |
Kim et al. | On-line integrity monitoring of microprocessor control logic | |
US20090240977A1 (en) | Method, system and computer program product for hard error detection | |
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 | |
Kalappurakkal | Reducing the soft error rates of a high-performance microprocessor using front-end throttling |
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 |