KR20050121729A - 프로그램 제어식 유닛 및 방법 - Google Patents

프로그램 제어식 유닛 및 방법 Download PDF

Info

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
Application number
KR1020057019528A
Other languages
English (en)
Inventor
라인하르트 바이베를레
에버하르트 뵐
토마스 코트케
Original Assignee
로베르트 보쉬 게엠베하
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 로베르트 보쉬 게엠베하 filed Critical 로베르트 보쉬 게엠베하
Publication of KR20050121729A publication Critical patent/KR20050121729A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/3885Concurrent 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

프로그램 제어식 유닛 및 방법 {PROGRAM-CONTROLLED UNIT AND METHOD}
본 발명은 프로그램 제어식 유닛 및 이러한 프로그램 제어식 유닛을 작동하기 위한 방법에 관한 것이다.
이러한 종류의 프로그램 제어식 유닛은 예를 들어 마이크로 프로세서, 마이크로 제어기, 신호 프로세서 등으로서 형성된다. 마이크로 제어기는 소위 코어인 마이크로 제어기 코어, 하나 이상의 메모리(프로그램 메모리, 데이터 메모리 등), 주변 요소(오실레이터, 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. 제1 실행 유닛 및 적어도 하나의 제2 실행 유닛(1, 2)을 갖는 하나의 제어기 코어(코어)를 포함하며, 상기 실행 유닛은 제1 작동 모드에서 서로 독립적으로 작동 가능하고 제2 작동 모드에서 동일한 명령을 병렬로 실행하는 프로그램 제어식 유닛.
  2. 제1항에 있어서, 제2 작동 모드에서 오류 처리 루틴을 따라 오류 검출 및/또는 오류 정정을 실행하는 오류 검출 장치(5, 6, 10, 11, 14)가 제공되는 것을 특징으로 하는 프로그램 제어식 유닛.
  3. 제2항에 있어서, 오류 검출 장치(5, 6, 10', 11', 13', 14)는 코더(10', 11', 13')를 포함하며, 상기 코더는 실행 유닛(1, 2)에 입력측에서 공급된 입력 데이터 및/또는 각각의 실행 유닛에 의해 연산된 출력 신호에 오류 검출 코드 및/또는 오류 정정 코드를 제공하는 것을 특징으로 하는 프로그램 제어식 유닛.
  4. 제2항 또는 제3항에 있어서, 오류 검출 장치(5, 6, 10, 11, 14)는 두 개의 실행 유닛에 출력측에서 하류에 연결된 비교 유닛(14)을 포함하며, 상기 비교 유닛은 실행 유닛(1, 2)에 의해 연산된 결과 데이터 및/또는 그 오류 정정 코드값을 오류 처리 루틴에 따라 오류의 존재를 기초로 하여 비교하고 오류의 존재시에 오류 신호를 출력하는 것을 특징으로 하는 프로그램 제어식 유닛.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서, 오류 검출 장치(5, 6, 10, 11, 14)는 적어도 하나의 실행 유닛(1, 2)에 입력측에서 상류에 연결된 적어도 하나의 제2 비교 유닛을 포함하며, 상기 비교 유닛은 각각의 실행 유닛 중 하나에 입력측에서 공급된 입력 데이터와 검사 합계(예를 들어, 패리티, CRC, ECC)에 의해 제공된 입력 데이터를 오류 검출 루틴에 따라 오류의 존재를 기초로 하여 비교하고 오류의 존재시에 오류 신호를 출력하는 것을 특징으로 하는 프로그램 제어식 유닛.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 적어도 하나의 데이터 레지스터(8, 9)가 제공되며, 상기 데이터 레지스터는 적어도 하나의 실행 유닛(1, 2)에 배치되며, 출력측에서 실행 유닛(1, 2)의 입력부 및 상류에 연결된 이러한 비교 유닛(5, 6)에 연결되며 실행 유닛(1, 2)을 위한 입력 데이터를 저장할 수 있는 것을 특징으로 하는 프로그램 제어식 유닛.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 실행 유닛 내에서의 연산 전에 최후에 공급된 입력 데이터가 실행 유닛(1, 2)에 저장되는 쉐도우 레지스터가 제공되는 것을 특징으로 하는 프로그램 제어식 유닛.
  8. 제7항에 있어서, 쉐도우 레지스터는 FIFO로서 형성되는 것을 특징으로 하는 프로그램 제어식 유닛.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 입력측에 오류 검출 장치(5, 6, 10, 11, 14)가, 출력측에 쉐도우 레지스터가 접속된 제어 장치가 제공되며, 상기 제어 장치는 해제 신호를 생성하여, 오류 검출 장치(5, 6, 10, 11, 14)에 의해 오류가 검출되지 않으면 비로소 쉐도우 레지스터를 해제하는 것을 특징으로 하는 프로그램 제어식 유닛.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 프로그램 제어식 유닛은 마이크로 제어기 또는 마이크로 프로세서로서 형성되는 것을 특징으로 하는 프로그램 제어식 유닛.
  11. 제1항 내지 제10항 중 어느 한 항에 따른 프로그램 제어식 유닛을 작동하기 위한 방법에 있어서,
    입력 데이터 및/또는 연산된 결과 데이터 및/또는 그 오류 코딩값이 서로 비교되고 비교 결과의 불일치시에 오류 신호가 생성되는 것을 특징으로 하는 방법.
  12. 제11항에 있어서, 각각의 오류 종류에 대해 특정 오류 신호가 출력되는 것을 특징으로 하는 방법.
  13. 제11항 또는 제12항에 있어서, 입력 데이터가 먼저 두 개의 실행 유닛(1, 2)에 공급되고 거기에 접속시에 입력 데이터로부터 오류 정정 코드가 형성되는 것을 특징으로 하는 방법.
  14. 제11항 내지 제13항 중 어느 한 항에 있어서, 이러한 입력 데이터 또는 이러한 입력 데이터로부터 연산된 결과 데이터의 비교가 오류 신호를 나타내지 않으면, 최후 연산의 저장된 입력 데이터는 먼저 다시 새롭게 기록되는 것을 특징으로 하는 방법.
  15. 제11항 내지 제14항 중 어느 한 항에 있어서, 결과 데이터는 오류 신호가 존재하지 않을 때 비로소 버스 상에 놓이는 것을 특징으로 하는 방법.
KR1020057019528A 2003-04-17 2004-04-07 프로그램 제어식 유닛 및 방법 KR20050121729A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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