KR20050121729A - 프로그램 제어식 유닛 및 방법 - Google Patents
프로그램 제어식 유닛 및 방법 Download PDFInfo
- Publication number
- KR20050121729A KR20050121729A KR1020057019528A KR20057019528A KR20050121729A KR 20050121729 A KR20050121729 A KR 20050121729A KR 1020057019528 A KR1020057019528 A KR 1020057019528A KR 20057019528 A KR20057019528 A KR 20057019528A KR 20050121729 A KR20050121729 A KR 20050121729A
- Authority
- KR
- South Korea
- Prior art keywords
- error
- unit
- data
- input data
- program
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 15
- 238000001514 detection method Methods 0.000 claims description 35
- 238000012937 correction Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 10
- 238000011144 upstream manufacturing Methods 0.000 claims description 4
- 238000012360 testing method Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000015654 memory Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000002411 adverse Effects 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/16—Error detection or correction of the data by redundancy in hardware
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Hardware Redundancy (AREA)
- Detection And Correction Of Errors (AREA)
- Programmable Controllers (AREA)
- Microcomputers (AREA)
- Safety Devices In Control Systems (AREA)
Abstract
본 발명은 제1 실행 유닛 및 적어도 하나의 제2 실행 유닛을 갖는 하나의 제어기 코어(코어)를 포함하는 프로그램 제어식 유닛에 관한 것으로, 실행 유닛은 제1 작동 모드에서 서로 독립적으로 작동 가능하고 제2 작동 모드에서 동일한 명령을 병렬로 실행한다.
Description
본 발명은 프로그램 제어식 유닛 및 이러한 프로그램 제어식 유닛을 작동하기 위한 방법에 관한 것이다.
이러한 종류의 프로그램 제어식 유닛은 예를 들어 마이크로 프로세서, 마이크로 제어기, 신호 프로세서 등으로서 형성된다. 마이크로 제어기는 소위 코어인 마이크로 제어기 코어, 하나 이상의 메모리(프로그램 메모리, 데이터 메모리 등), 주변 요소(오실레이터, I/O 포트, 타이머, AD-컨버터, DA-컨버터, 통신 인터페이스), 및 공통으로 하나의 칩 상에 통합되고 하나 이상의 버스(내부, 외부 데이터 버스/주소 버스)를 통해 서로 접속된 인터럽트-시스템을 포함한다. 이러한 프로그램 제어식 유닛의 구성 및 작동 방식은 잘 공지되어 있으므로, 이에 대해서는 상세히 설명하지 않는다.
마이크로 제어기 코어는 모듈 마이크로 제어기 개념의 관점에서 칩 상에 통합된 중앙 제어 유닛(CPU)이다. 이는 대체로 다소 복잡한 제어 기구, 복수의 레지스터(데이터 레지스터, 주소 레지스터), 버스 제어 유닛, 및 원래의 데이터를 처리하는 기능을 하는 연산 유닛(ALU = 산술 논리 유닛)을 포함한다. 이러한 ALU-연산 유닛은 최대 두 개로 분배된 입력 데이터(연산자)에 의해 대부분 간단한 요소 작동만을 실행할 수 있다. 이러한 연산자 및 연산 결과는 처리 전 또는 후에 특히 이를 위해 제공된 레지스터 장소 또는 메모리 장소에 포함된다. 연산자의 처리 시에 물론 결과에 악영향을 주는 오류가 발생할 수 있다. 이러한 오류는 적어도 입력측에서 ALU-유닛에 입력된 연산자가 왜곡됨으로써 발생할 수 있다. 이는 예를 들어 각각의 입력 데이터를 나타내는 포텐셜이 예상보다 높거나 또는 낮음으로써 발생할 수 있다. 이러한 부하 변화가 충분히 크다면, 일 논리 상태를 나타내는 포텐셜이 다른 논리 상태를 나타내는 포텐셜로 변경될 수 있다. 예를 들어 "1"을 나타내는 논리 포텐셜이 "0"을 나타내는 논리 포텐셜로 그리고 역으로 변경될 수 있어, 결과가 상당히 왜곡된다.
치수가 작아지고 작동 전압이 낮아지는 반도체 프로세서 기술의 발전에 의해 이러한 오류의 가능성이 증가한다. 이러한 이유로 현대식 마이크로 프로세서 시스템에는, 발생된 오류가 식별되고 통지될 수 있거나(고장 식별) 또는 시스템의 기능에 따라 오류가 발생된 경우에 경고를 발생할 수 있는 오류 검출 또는 오류 제거를 위한 시스템이 설치된다. 이러한 종류의 오류 정정 시스템에는 예를 들어 중요한 데이터의 보호에 기여하는 ECC-오류 정정부(에러 체크 및 정정부)가 설치될 수 있다. 오류에 응답할 수 있도록, 현대식 마이크로 제어기 시스템에는 보통 중복된 시스템 기능을 기초로 하여 오류 검출 시스템이 설치된다. 시스템 중복은 예를 들어 시간적으로 오프셋된 여러 번의 연산(일시 중복) 또는 추가적인 절환 회로(하드웨어 중복)를 통해 구현될 수 있다. 그러나, 응용 프로그램이 시간적으로 여러 번 연속적으로 실행되는 첫 번째 경우에, 작동 중에 발생하는 우발적이거나 또는 통계적인 오류가 검출될 수 있다. 물론, 이러한 방식의 중복은 오류 검출 및 제한된 장애시 안전(Fail-Safe) 기능만을 허용하는데, 이는 또한 매우 시간 소모적이며, 전체 시스템의 효율에 악영향을 준다. 여기서, 오류 제거는 가능하지 않다.
이러한 이유로 오류 검출 시스템은 주로 하드웨어 중복을 기초로 하여 사용되는데, 여기에서는 중복된, 즉 이중으로 제공된 하드웨어가 응용 프로그램을 병렬로 실행한다. 독일 특허 제100 85 324 T1호에 대응하는 국제 특허 공개공보 WO 01/46806호에는 "소프트 에러를 정정하기 위한 펌웨어 매커니즘"이 개시되어 있는데, 하드웨어 중복 오류 검출부를 포함하는 컴퓨터 시스템이 설명되어 있다. WO 01/46806호에 설명된 컴퓨터 시스템은 두 개의 서로 독립적으로 작동 가능한 마이크로 프로세서 코어(코어)와 두 개의 코어 하류에 연결된 비교 유닛으로 구성된다. 두 개의 코어에서는 제1 작동 모드(통상적인 작동)에서 서로 독립적으로 명령과 데이터가 처리될 수 있다. 소위 표준화(Lock-Step) 작동 모드(테스트 작동)인 제2 작동 모드에서, 두 개의 코어는 중복하여 작동된다. 즉, 두 개의 코어에서 동일한 명령이 처리된다. 중복된 작동 모드에서 작동된 코어의 결과는 오류 처리 루틴에 따라 비교 유닛에서 서로 비교되고 일치하지 않으면 오류 신호가 생성된다. 이러한 방식으로 코어의 레지스터 내용이 보호된다. 이렇게 보호된 데이터로부터 마이크로 프로세서의 상태는 오류 발생 전에 다시 형성될 수 있다.
WO 01/46806호에서 설명된 해결책에서의 단점은 특히 전체 코어가 이중으로 제공되기 때문에 중복 시스템의 제공을 위해 추가적인 소모가 필요하다는 것이다. 따라서, 특히 복잡한 제어 기구와 복잡한 버스 제어 유닛을 갖는 매우 복잡한 마이크로 제어기에서는 중복을 위해 필요한 추가적인 칩 면적 소모가 매우 크다. 칩 면적이 중요한 마이크로 제어기 시스템에서, 이러한 칩 면적을 사용하는 유닛의 제공은 비생산적이며 소비자에 의해 점차 더 이상 수용되지 않는다. 따라서, 이러한 이유만으로 칩 면적의 감소 및 이에 따른 생산 비용의 감소를 통해 대체로 기능이 동일한 시장의 경쟁 생산품으로부터 구별하려는 요구가 있다. 이는 상당한 경쟁 우위를 나타낸다.
또한, WO 01/46806호에 설명된 배열에 의해 오류 특성화가 수행되지 않아서, 오류가 실제로 발생하는 곳이 확인될 수 없다. 오류 검출만이 행해진다. 그러나, 오류는 시스템의 다양한 위치에서 발생될 수 있다. 예를 들어, 오류는 버스 라인 상에서 또는 오류가 있는 연산자에 의해 연산 유닛 또는 비교 유닛 내부에서 발생할 수 있다. 이에 따라, 오류를 특성화할 필요가 있다.
본 발명은 이하 도면에 지시된 실시예에 의해 상세히 설명된다.
도1은 본 발명에 따른 프로그램 제어식 유닛 및 그 작동을 설명하는 제1 기능 회로도이다.
도2는 본 발명에 따른 프로그램 제어식 유닛 및 그 작동을 상세히 설명하는 제2 기능 회로도이다.
청구항 제1항의 장점을 갖는 본 발명에 따른 프로그램 제어식 유닛과 청구항 제11항의 장점을 갖는 본 발명에 따른 방법은 상기 공지된 해결책에 비해 특히 칩 면적 요구에 대해 최적화되고 간소화된 오류 정정을 제공하는 장점을 갖는다.
본 발명은 오류 검출을 위해 전체 마이크로 제어기 코어가 중복되지 않아야 한다는 인식을 기초로 하고 있다. 최후에 연산 작동이 실행되는 실행 유닛만이 중복되는 것이 오히려 완전히 충분하다. 이에 따라, 마이크로 제어기 코어 내부에서 가장 큰 칩 면적을 수용하는 레지스터, 버스 제어 유닛 및 제어 기구를 이중으로 제공하지 않을 수 있기 때문에, 오류 검출부를 갖는 이러한 프로그램 제어식 유닛은 상기 공지된 시스템과 비교하여 훨씬 작은 칩 면적에 의해 달성될 수 있다.
따라서, 본 발명은 마이크로 제어기 코어의 실행 유닛만을 중복하는 아이디어를 기초로 하고 있다. 이에 따라, 완전히 기능적인 오류 검출이 가능하며, 예를 들어 제어 기구 및 버스 제어 유닛과 같은 마이크로 제어기 코어의 잉여 구성 요소는 다른 오류 검출 매커니즘을 통해 오류 검출 코드 또는 오류 정정 코드를 기초로 하여 보호된다. 이에 따라, 종래의 프로그램 제어식 유닛보다 명백히 작은 칩 면적으로 달성되며 오류 검출을 위해 두 개의 마이크로 제어기 코어가 설치된 소위 이중-코어-마이크로 제어기를 포함하는 오류 검출 장치를 갖는 프로그램 제어식 유닛이 제공된다. 그러나, 본 발명에 따른 프로그램 제어식 유닛 및 그 오류 검출 장치의 칩 면적은 하나의 마이크로 제어기 코어만을 포함하며 이에 따라 오류 검출 장치를 포함하지 않는 소위 단일-코어 프로그램 제어식 유닛의 칩 면적보다 크다. 그러나, 본 발명에 따른 프로그램 제어식 유닛 및 그 오류 검출 장치의 칩 면적은 이중-코어-마이크로 제어기에 비해 상당히 감소된다.
본 발명에 따른 방법 또는 본 발명에 따른 장치의 특별한 장점은 클록 사이클 내에서 오류가 검출될 수 있고 이에 따라 매우 빠른 대응 정정 조치가 도입될 수 있다는 것이다. 이러한 방식으로 전체 시스템의 효율이 거의 악영향을 받지 않는다.
본 발명의 다른 장점은 오류의 검출 외에도 오류 특성화가 가능하다는 것이다. 즉 프로그램 제어식 유닛의 내부의 어느 오류 위치에서 오류가 발생되는 것인지가 결정될 수 있다.
본 발명의 바람직한 실시예 및 다른 실시예는 도면과 관련하여 종속 청구항 및 상세한 설명으로부터 알 수 있다.
본 발명에 따른 프로그램 제어식 유닛은 이하 통상적인 작동이라 하는 제1 작동 모드와, 이하 테스트 작동이라 하는 제2 작동 모드를 포함한다. 프로그램 제어식 유닛은 하나의 마이크로 제어기 코어를 포함하지만, 두 개의 실행 유닛이 설치된다. 하나의 실행 유닛은 예를 들어 원래의 데이터 처리 기능이 실행되는 산술 논리 유닛(ALU)일 수 있다. 실행 유닛은 종종 연산 기구 또는 연산 유닛으로 표시된다. 그러나, 통상적인 작동에서, 두 개의 실행 유닛은 명령을 병렬로 처리할 필요가 없다. 테스트 작동에서 오류가 검출된다. 테스트 작동에서, 동일한 명령이 병렬로 두 개의 실행 유닛 내에 입력된다. 따라서, 두 개의 결과를 비교함으로써 오류의 존재가 검출될 수 있다.
이를 위해, 테스트 작동에서 오류 검출 및/또는 오류 정정을 실행하는 오류 검출 장치가 제공된다. 오류 처리 루틴(오류 정정 방법)에 따라 대응 명령을 반복함으로써 실행 유닛 내에서 발견된 오류 중 하나가 정정된다. 이를 위해, 각각 코어의 상태에 따라 쉐도우 레지스터는 입력 레지스터를 필요로 한다.
오류 정정을 위해, 오류 검출 장치는 데이터에 오류 검출 코드 및/또는 오류 정정 코드가 제공되는 코더를 포함한다. 여기서, 연산 후에 출력측에서 실행 유닛으로 추출될 수 있는 결과 데이터에는 대응 오류 검출 코드 또는 오류 정정 코드가 제공된다.
입력측에서 실행 유닛 내에 입력된 데이터에는 전형적으로 오류 검출 코드 및/또는 오류 정정 코드가 제공되지 않는다. 여기서, 입력된 데이터의 검사 합계만이 형성된다. 이러한 검사 합계는 레지스터 내에 저장된 검사 합계와 비교되고 왜곡시에는 데이터가 정정되지만 검사 합계를 제외하고 다시 실행 유닛에 입력된다.
제1 실시예에서, 오류 검출 장치는 두 개의 실행 유닛에 출력측에서 하류에 연결된 제1 비교 유닛을 포함한다. 이러한 비교 유닛은 연산 유닛에서 연산된 결과 데이터 또는 그 오류 정정 코딩값을 오류 처리 루틴에 따라 비교한다. 알려진 오류의 경우, 즉 결과 데이터 또는 오류 정정 코딩값이 일치하지 않는 경우, 이는 오류로서 검출되고 오류 신호가 출력된다.
다른 실시예에서, 오류 검출 장치는 실행 유닛 중 적어도 하나에 입력측에서 상류에 연결된 제2 비교 유닛을 포함한다. 이러한 비교 유닛은 각각의 실행 유닛 중 하나에서 공급된 연산자 또는 그 오류 정정 코딩값을 오류 처리 루틴에 따라 비교한다. 오류의 존재시, 즉 비교 유닛에서 서로 비교된 입력 데이터 또는 오류 정정 코딩값에 편차가 있을 때, 이는 오류로서 해석되고, 그로부터 오류 신호가 출력된다.
다른 실시예에서, 테스트 작동 모드에서 두 개의 실행 유닛에 배치된 공통 데이터 레지스터가 제공된다. 이러한 공통 데이터 레지스터에서, 예를 들어 버스를 통해 실행 유닛에 공급되어야 하는 데이터가 저장된다.
다른 실시예에서, 테스트 작동 모드에서 최후 연산 전에 각각의 실행 유닛에 공급된 입력 데이터가 저장되는 쉐도우 레지스터가 제공될 수 있다. 매우 간단한 실시예에서 이러한 쉐도우 레지스터는 간단한 FIFO로서 형성된다. 비교 유닛 내에서의 비교시 오류가 존재하지 않으면, FIFO는 비로소 더욱 절환되고 이에 따라 다시 기록될 수 있다.
따라서, 바람직하게는 입력측에는 오류 검출 장치가, 출력측에는 쉐도우 레지스터가 접속된 제어 장치가 제공된다. 오류 검출 장치가 오류가 존재하지 않는 것을 검출하면, 쉐도우 레지스터를 갱신하여 기록하기 위해 다시 해제된 해제 신호가 제어 장치에 의해 생성된다.
본 발명에 따른 프로그램 제어식 유닛은 예를 들어 마이크로 제어기, 마이크로 프로세서, 신호 프로세서 또는 항상 구성된 제어 유닛으로서 구현될 수 있다.
본 발명에 따른 매우 바람직한 방법에서, 입력 데이터 또는 연산된 결과 데이터 또는 그 오류 코딩값은 서로 비교된다. 이러한 비교시 데이터 또는 코드가 서로 일치하지 않으면, 이는 오류로서 해석되고 오류 신호가 생성된다.
특히 바람직한 실시예에서, 각각의 이러한 오류에 대해 특정 오류 신호가 출력되어, 오류 신호로부터 오류 위치의 로컬화가 가능하다. 이에 따라, 다양한 오류 종류가 서로 구별된다. 예를 들어 오류가 있는 코딩값을 통해 발생한 오류는 버스 라인을 통해 입력된 오류가 있는 데이터를 기초로 하여 발생한 오류 또는 연산 유닛의 내부에서 발생된 오류와 구별된다. 이에 따라, 매우 바람직한 방식으로 오류 수량화외에도 오류 특성화가 가능하다.
특히 바람직한 실시예에서, 입력측에서 연산 유닛 내에 입력된 연산자가 먼저 두 개의 실행 유닛에 공급된다. 그 다음, 이러한 입력 데이터로부터 검사 합계(예를 들어, 패리티, CRC, ECC)가 형성되고, 입력측에서 비교된다. 이에 따라, 데이터 처리 시스템은 입력측의 오류 정정을 통해 효율에 상당한 악영향을 주지 않는다.
본 발명에 따른 방법의 다른 실시예에서, 오류 검출 장치 내에서의 비교시 오류가 존재하지 않으면, 최후 연산의 저장된 입력 데이터는 먼저 다시 새롭게 기록된다. 이러한 방식으로 실행 유닛 중 하나에서의 오류가 있는 연산시 또는 코딩값 오류시 최초로 입력된 데이터 또는 그 코딩값이 상실되지 않는 것이 보장된다.
도면에는 동일하거나 또는 기능이 동일한 요소가 다르게 지시되지 않는 한 동일한 도면부호로 표시된다. 본 발명에 따른 프로그램 제어식 유닛과, 마이크로 제어기 코어(CPU), 메모리 유닛, 주변 유닛 등의 그 구성 요소는 명확성을 위해 도1 및 도2에 도시되지 않는다.
도1 및 도2에는 각각의 산술 논리 유닛(ALU)이 도면부호 1 및 2로 표시된다. 각각의 ALU-유닛(1, 2)은 두 개의 입력부와 하나의 출력부를 포함한다. 테스트 작동에서 실행을 위해 제공된 연산자는 버스(3)에 의해 직접적으로 (도시되지 않은) ALU-유닛(1, 2)의 입력부에 입력되거나 또는 특히 이를 위해 제공된 연산자 레지스터(8, 9)에 미리 저장된다. 이러한 연산자 레지스터(8, 9)는 데이터 버스(3)에 의해 직접 접속된다. 두 개의 ALU-유닛(1, 2)은 동일한 연산자 레지스터(8, 9)로부터 공급된다. 또한, 각각의 연산자가 버스를 통해 이미 레지스터 영역(8', 9')에 저장된 ECC-코딩값에 제공될 수 있다.
각각의 연산자를 ALU-유닛(1, 2)에 입력할 때 특정 값을 정확히 데이터 입력하여야 한다. 예를 들어 동일하게 오류가 있는 연산자가 두 개의 ALU-유닛(1, 2)에 입력되면, ALU-유닛(1, 2)의 출력부에서 오류를 검출할 수 없다. 이에 따라, ALU-유닛(1, 2) 중 적어도 하나가 정확한 데이터 입력값을 포함하거나 또는 두 개의 ALU-유닛(1, 2)이 정확하지는 않지만 상이한 데이터 입력값을 포함하는 것이 보장되어야 한다. 이는 ALU-유닛(1, 2)의 적어도 하나의 입력값에 의해 검사 합계(예를 들어, 패리티, CRC, ECC)가 형성됨으로써 보장된다. 특히 제공된 비교 유닛(5, 6)에서 이러한 추가 데이터 레지스터(10, 11)로부터의 ECC-코딩값(10', 11')은 최초 소스 레지스터(8, 9)로부터의 ECC-코딩값(8', 9')과 비교된다. 선택적으로, 레지스터(10, 11)로부터의 입력 데이터도 (도시되지 않은) 소스 레지스터(8, 9)로부터의 입력 데이터와 비교될 수 있다. ECC-코딩값 또는 연산자에서 차이가 발생하면, 이는 오류로서 해석되고 오류 신호가 출력된다.
바람직하게는 ALU-유닛(1, 2)에서 연산자를 처리하는 동안 이러한 비교가 되어, 성능 손실이 거의 없이 이러한 입력측의 오류 검출 및 오류 정정이 수반된다. 비교 유닛(5, 6) 중 하나가 오류를 검출하면, 다음 사이클 내에서 연산이 반복될 수 있다. 여기서, 항상 최후 연산의 연산자를 보호하기 위해 쉐도우 레지스터의 사용이 추천될 수 있어, 오류의 경우 신속히 다시 이용 가능하다. 각각의 연산자 레지스터(10, 11)가 오류가 존재하지 않는 것을 기초로 하여 먼저 다시 해제 신호를 통해 갱신하여 기록된다면, 물론 쉐도우 레지스터를 제공하지 않을 수 있다. 오류의 경우에, 비교 유닛(5, 6)이 오류 신호를 제공하여, 연산자 레지스터(10, 11)가 갱신되어 기록되지 않는다.
ALU-유닛(1, 2)은 출력측에서 각각 결과를 생성한다. ALU-유닛(1, 2)에 의해 제공된 결과 데이터 또는 그 ECC-코딩값은 결과 레지스터(12, 13, 12', 13') 내에 저장된다. 이러한 결과 데이터 및/또는 그 코딩값은 비교 유닛(14) 내에서 서로 비교된다. 오류가 없는 경우 해제 신호(16)가 생성된다. 해제 신호(16)는 버스(4) 상에 결과 데이터를 기록하게 하는 해제 장치(15) 내로 입력된다. 그 다음, 버스(4)를 통해 결과 데이터가 더욱 처리될 수 있다.
또한, 해제 신호(16)는 레지스터(8 내지 11)가 다시 해제되도록 사용될 수 있어, 다음 연산자가 버스(3)에 의해 선별될 수 있고 ALU-유닛(1, 2) 내에서 처리될 수 있다.
도1의 배열에 의해 결과가 검사되지 않는다. 여기서, 비교 유닛(14) 내의 결과 데이터만이 서로 비교된다. 결과 데이터의 ECC-코딩값의 검사는 결과 데이터뿐만 아니라 그 ECC-코딩값도 비교 유닛(14) 내에서 서로 비교될 수 있는 도2의 배열에 의해 가능하다.
도1 및 도2에서 지시된 오류 검출 배열에 의해 모든 과도 오류, 영구 오류 및 진행 오류가 검출된다. 결과가 도달하지 않거나 또는 너무 늦게 비교 유닛(12)에 도달하여 부분 결과와 비교된다면, 진행 오류는 ALU-유닛(1, 2) 내에서 검출된다. 오류 검출 코드 및 오류 정정 코드 및 최종 결과의 비교에 의해 연산자 레지스터(8, 9, 10, 11)를 보호함으로써 각각의 오류 위치 및 오류 시점이 정확히 로컬화된다. 이에 따라 과도 장애에 매우 빨리 응답될 수 있다.
이에 따라 이하의 오류 로컬화의 가능성이 있다.
- 비교 유닛(14) 내에서의 결과 데이터의 비교가 상이하다면, ALU-유닛(1, 2) 내에서의 오류가 추정될 수 있다.
- 비교 유닛(5, 6) 내에서의 ECC-코딩값의 비교가 상이하다면, 버스(3) 또는 상류에 연결된 구성 요소로부터의 오류가 있는 신호가 추정될 수 있다.
- 비교 유닛(14) 내에서의 ECC-코딩값의 비교가 상이하다면, 결과의 오류가 있는 코딩값이 추정될 수 있다.
본 발명이 바람직한 실시예에 의해 전술되었더라도, 이에 제한되지 않으며 오히려 당업자는 공지된 방법 및 방식으로 다양하게 변형할 수 있다.
Claims (15)
- 제1 실행 유닛 및 적어도 하나의 제2 실행 유닛(1, 2)을 갖는 하나의 제어기 코어(코어)를 포함하며, 상기 실행 유닛은 제1 작동 모드에서 서로 독립적으로 작동 가능하고 제2 작동 모드에서 동일한 명령을 병렬로 실행하는 프로그램 제어식 유닛.
- 제1항에 있어서, 제2 작동 모드에서 오류 처리 루틴을 따라 오류 검출 및/또는 오류 정정을 실행하는 오류 검출 장치(5, 6, 10, 11, 14)가 제공되는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제2항에 있어서, 오류 검출 장치(5, 6, 10', 11', 13', 14)는 코더(10', 11', 13')를 포함하며, 상기 코더는 실행 유닛(1, 2)에 입력측에서 공급된 입력 데이터 및/또는 각각의 실행 유닛에 의해 연산된 출력 신호에 오류 검출 코드 및/또는 오류 정정 코드를 제공하는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제2항 또는 제3항에 있어서, 오류 검출 장치(5, 6, 10, 11, 14)는 두 개의 실행 유닛에 출력측에서 하류에 연결된 비교 유닛(14)을 포함하며, 상기 비교 유닛은 실행 유닛(1, 2)에 의해 연산된 결과 데이터 및/또는 그 오류 정정 코드값을 오류 처리 루틴에 따라 오류의 존재를 기초로 하여 비교하고 오류의 존재시에 오류 신호를 출력하는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제2항 내지 제4항 중 어느 한 항에 있어서, 오류 검출 장치(5, 6, 10, 11, 14)는 적어도 하나의 실행 유닛(1, 2)에 입력측에서 상류에 연결된 적어도 하나의 제2 비교 유닛을 포함하며, 상기 비교 유닛은 각각의 실행 유닛 중 하나에 입력측에서 공급된 입력 데이터와 검사 합계(예를 들어, 패리티, CRC, ECC)에 의해 제공된 입력 데이터를 오류 검출 루틴에 따라 오류의 존재를 기초로 하여 비교하고 오류의 존재시에 오류 신호를 출력하는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 적어도 하나의 데이터 레지스터(8, 9)가 제공되며, 상기 데이터 레지스터는 적어도 하나의 실행 유닛(1, 2)에 배치되며, 출력측에서 실행 유닛(1, 2)의 입력부 및 상류에 연결된 이러한 비교 유닛(5, 6)에 연결되며 실행 유닛(1, 2)을 위한 입력 데이터를 저장할 수 있는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제1항 내지 제6항 중 어느 한 항에 있어서, 실행 유닛 내에서의 연산 전에 최후에 공급된 입력 데이터가 실행 유닛(1, 2)에 저장되는 쉐도우 레지스터가 제공되는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제7항에 있어서, 쉐도우 레지스터는 FIFO로서 형성되는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제1항 내지 제8항 중 어느 한 항에 있어서, 입력측에 오류 검출 장치(5, 6, 10, 11, 14)가, 출력측에 쉐도우 레지스터가 접속된 제어 장치가 제공되며, 상기 제어 장치는 해제 신호를 생성하여, 오류 검출 장치(5, 6, 10, 11, 14)에 의해 오류가 검출되지 않으면 비로소 쉐도우 레지스터를 해제하는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제1항 내지 제9항 중 어느 한 항에 있어서, 프로그램 제어식 유닛은 마이크로 제어기 또는 마이크로 프로세서로서 형성되는 것을 특징으로 하는 프로그램 제어식 유닛.
- 제1항 내지 제10항 중 어느 한 항에 따른 프로그램 제어식 유닛을 작동하기 위한 방법에 있어서,입력 데이터 및/또는 연산된 결과 데이터 및/또는 그 오류 코딩값이 서로 비교되고 비교 결과의 불일치시에 오류 신호가 생성되는 것을 특징으로 하는 방법.
- 제11항에 있어서, 각각의 오류 종류에 대해 특정 오류 신호가 출력되는 것을 특징으로 하는 방법.
- 제11항 또는 제12항에 있어서, 입력 데이터가 먼저 두 개의 실행 유닛(1, 2)에 공급되고 거기에 접속시에 입력 데이터로부터 오류 정정 코드가 형성되는 것을 특징으로 하는 방법.
- 제11항 내지 제13항 중 어느 한 항에 있어서, 이러한 입력 데이터 또는 이러한 입력 데이터로부터 연산된 결과 데이터의 비교가 오류 신호를 나타내지 않으면, 최후 연산의 저장된 입력 데이터는 먼저 다시 새롭게 기록되는 것을 특징으로 하는 방법.
- 제11항 내지 제14항 중 어느 한 항에 있어서, 결과 데이터는 오류 신호가 존재하지 않을 때 비로소 버스 상에 놓이는 것을 특징으로 하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10317650A DE10317650A1 (de) | 2003-04-17 | 2003-04-17 | Programmgesteuerte Einheit und Verfahren |
DE10317650.0 | 2003-04-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20050121729A true KR20050121729A (ko) | 2005-12-27 |
Family
ID=33103475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057019528A KR20050121729A (ko) | 2003-04-17 | 2004-04-07 | 프로그램 제어식 유닛 및 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20070067677A1 (ko) |
EP (1) | EP1618476A2 (ko) |
JP (1) | JP2006523868A (ko) |
KR (1) | KR20050121729A (ko) |
CN (1) | CN1774702A (ko) |
DE (1) | DE10317650A1 (ko) |
WO (1) | WO2004092972A2 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1496435A1 (en) * | 2003-07-11 | 2005-01-12 | Yogitech Spa | Dependable microcontroller, method for designing a dependable microcontroller and computer program product therefor |
DE10349581A1 (de) * | 2003-10-24 | 2005-05-25 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit |
JP2008282178A (ja) * | 2007-05-09 | 2008-11-20 | Toshiba Corp | 産業用コントローラ |
KR101543245B1 (ko) * | 2009-03-18 | 2015-08-11 | 삼성전자주식회사 | 에러 교정 장치와 이를 포함하는 메모리 장치와 데이터 처리 시스템 |
US8583866B2 (en) | 2010-02-22 | 2013-11-12 | International Business Machines Corporation | Full-stripe-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US8103903B2 (en) * | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US8103904B2 (en) * | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US8156368B2 (en) | 2010-02-22 | 2012-04-10 | International Business Machines Corporation | Rebuilding lost data in a distributed redundancy data storage system |
JP5699057B2 (ja) * | 2011-08-24 | 2015-04-08 | 株式会社日立製作所 | プログラマブルデバイス、プログラマブルデバイスのリコンフィグ方法および電子デバイス |
DE102013224694A1 (de) * | 2013-12-03 | 2015-06-03 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Ermitteln eines Gradienten eines datenbasierten Funktionsmodells |
JP2020061124A (ja) * | 2018-10-05 | 2020-04-16 | 富士通株式会社 | 並列処理装置及び演算処理方法 |
CN114063592A (zh) * | 2020-08-05 | 2022-02-18 | 中国科学院沈阳自动化研究所 | 一种基于时间冗余的安全仪表控制单元故障诊断方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59212955A (ja) * | 1983-05-18 | 1984-12-01 | Fujitsu Ltd | 情報処理装置 |
JPS63214856A (ja) * | 1987-03-03 | 1988-09-07 | Fujitsu Ltd | デ−タ処理装置のデ−タ保護制御方式 |
JPH0833842B2 (ja) * | 1987-05-01 | 1996-03-29 | 株式会社日立製作所 | 論理演算装置 |
JP3135543B2 (ja) * | 1987-12-04 | 2001-02-19 | 株式会社日立製作所 | 半導体集積回路装置 |
US5043990A (en) * | 1987-12-04 | 1991-08-27 | Hitachi, Ltd. | Semiconductor integrated circuit device |
JPH07129426A (ja) * | 1993-10-29 | 1995-05-19 | Hitachi Ltd | 障害処理方式 |
JPH07129427A (ja) * | 1993-11-01 | 1995-05-19 | Fujitsu Ltd | Eccコードによるデータの比較チェック方法 |
US5504859A (en) * | 1993-11-09 | 1996-04-02 | International Business Machines Corporation | Data processor with enhanced error recovery |
JPH07262148A (ja) * | 1994-03-22 | 1995-10-13 | Nec Corp | コンピュータシステム |
US5633710A (en) * | 1995-10-04 | 1997-05-27 | Egs Inc. | System for self-aligning vehicle headlamps |
US5915082A (en) * | 1996-06-07 | 1999-06-22 | Lockheed Martin Corporation | Error detection and fault isolation for lockstep processor systems |
US6625756B1 (en) * | 1997-12-19 | 2003-09-23 | Intel Corporation | Replay mechanism for soft error recovery |
JP2001134769A (ja) * | 1999-11-04 | 2001-05-18 | Honda Motor Co Ltd | 対象物認識装置 |
US6625749B1 (en) * | 1999-12-21 | 2003-09-23 | Intel Corporation | Firmware mechanism for correcting soft errors |
US6640313B1 (en) * | 1999-12-21 | 2003-10-28 | Intel Corporation | Microprocessor with high-reliability operating mode |
JP2001297038A (ja) * | 2000-04-11 | 2001-10-26 | Toshiba Corp | データ記憶装置および記録媒体並びに記録媒体制御方法 |
US6820213B1 (en) * | 2000-04-13 | 2004-11-16 | Stratus Technologies Bermuda, Ltd. | Fault-tolerant computer system with voter delay buffer |
US20020067413A1 (en) * | 2000-12-04 | 2002-06-06 | Mcnamara Dennis Patrick | Vehicle night vision system |
GB2399913B (en) * | 2002-03-19 | 2004-12-15 | Sun Microsystems Inc | Fault tolerant computer system |
US7003691B2 (en) * | 2002-06-28 | 2006-02-21 | Hewlett-Packard Development Company, L.P. | Method and apparatus for seeding differences in lock-stepped processors |
-
2003
- 2003-04-17 DE DE10317650A patent/DE10317650A1/de not_active Withdrawn
-
2004
- 2004-04-07 US US10/553,506 patent/US20070067677A1/en not_active Abandoned
- 2004-04-07 EP EP04741455A patent/EP1618476A2/de not_active Withdrawn
- 2004-04-07 CN CNA2004800102781A patent/CN1774702A/zh active Pending
- 2004-04-07 WO PCT/EP2004/050465 patent/WO2004092972A2/de active Application Filing
- 2004-04-07 KR KR1020057019528A patent/KR20050121729A/ko not_active Application Discontinuation
- 2004-04-07 JP JP2006500122A patent/JP2006523868A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE10317650A1 (de) | 2004-11-04 |
CN1774702A (zh) | 2006-05-17 |
JP2006523868A (ja) | 2006-10-19 |
US20070067677A1 (en) | 2007-03-22 |
WO2004092972A3 (de) | 2005-01-13 |
EP1618476A2 (de) | 2006-01-25 |
WO2004092972A2 (de) | 2004-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109872150B (zh) | 具有时钟同步操作的数据处理系统 | |
JP5014899B2 (ja) | 再構成可能デバイス | |
US20090217092A1 (en) | Method and Device for Controlling a Computer System Having At Least Two Execution Units and One Comparator Unit | |
CN100520730C (zh) | 在具有至少两个执行单元的计算机系统中对程序代码的执行进行分离的方法和设备 | |
US20160283314A1 (en) | Multi-Channel Network-on-a-Chip | |
US20080270660A1 (en) | Method and Device for Switching Over in a Computer System Having at Least Two Execution Units | |
CN100538654C (zh) | 在具有多个组件的计算机系统中产生模式信号的方法和设备 | |
KR20130119452A (ko) | 오류 허용 아키텍쳐를 갖는 마이크로프로세서 시스템 | |
JP2008518308A (ja) | マルチプロセッサシステム内のデータを分配するための方法およびデータ分配ユニット | |
US20070245133A1 (en) | Method and Device for Switching Between at Least Two Operating Modes of a Processor Unit | |
US20070255875A1 (en) | Method and Device for Switching Over in a Computer System Having at Least Two Execution Units | |
KR20050121729A (ko) | 프로그램 제어식 유닛 및 방법 | |
GB2278697A (en) | A majority circuit, a controller and a majority LSI | |
US20100017579A1 (en) | Program-Controlled Unit and Method for Operating Same | |
US6212134B1 (en) | Watch dog timer system | |
US8255769B2 (en) | Control apparatus and control method | |
US10345801B2 (en) | Ensuring a correct program sequence in a dual-processor architecture | |
US20080288758A1 (en) | Method and Device for Switching Over in a Computer System Having at Least Two Execution Units | |
US20080052494A1 (en) | Method And Device For Operand Processing In A Processing Unit | |
Süßkraut et al. | Safe program execution with diversified encoding | |
Maghsoudloo et al. | CCDA: Correcting control-flow and data errors automatically | |
JP5563700B2 (ja) | 制御装置 | |
JP2002229811A (ja) | 論理分割システムの制御方法 | |
US20240241780A1 (en) | Central processing unit system and method with improved self-checking | |
KR19990057809A (ko) | 오류 방지 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |