KR20070083758A - 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서전환을 위한 방법 및 장치 - Google Patents

적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서전환을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20070083758A
KR20070083758A KR1020077009143A KR20077009143A KR20070083758A KR 20070083758 A KR20070083758 A KR 20070083758A KR 1020077009143 A KR1020077009143 A KR 1020077009143A KR 20077009143 A KR20077009143 A KR 20077009143A KR 20070083758 A KR20070083758 A KR 20070083758A
Authority
KR
South Korea
Prior art keywords
mode
execution
switching
allocated
unit
Prior art date
Application number
KR1020077009143A
Other languages
English (en)
Other versions
KR101052994B1 (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
Priority claimed from DE200410051937 external-priority patent/DE102004051937A1/de
Priority claimed from DE200410051950 external-priority patent/DE102004051950A1/de
Priority claimed from DE200410051964 external-priority patent/DE102004051964A1/de
Priority claimed from DE200410051952 external-priority patent/DE102004051952A1/de
Priority claimed from DE200410051992 external-priority patent/DE102004051992A1/de
Priority claimed from DE200510037220 external-priority patent/DE102005037220A1/de
Application filed by 로베르트 보쉬 게엠베하 filed Critical 로베르트 보쉬 게엠베하
Publication of KR20070083758A publication Critical patent/KR20070083758A/ko
Application granted granted Critical
Publication of KR101052994B1 publication Critical patent/KR101052994B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/1695Error detection or correction of the data by redundancy in hardware which are operating with time diversity
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/845Systems in which the redundancy can be transformed in increased performance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템에서 전환을 위한 방법 및 장치에 관한 것이며, 적어도 2개의 작동 모드 사이를 전환시키도록 구성된 전환 수단이 포함되며, 제1 작동 모드는 비교 모드에 상응하고 제2 작동 모드는 실행 모드에 상응하는 방법 및 장치에 있어서, 하나의 인터럽트 컨트롤러가 배치되며, 또한 적어도 세 개의 메모리 영역이 제공되며, 적어도 하나의 제1 실행 유닛에는 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되고 적어도 두 개의 실행 유닛들에는 적어도 하나의 제3 메모리 영역이 할당되도록 메모리 영역에 대한 접근이 이루어지는 것을 특징으로 한다.
컴퓨터 시스템, 인터럽트 컨트롤러, 메모리 영역, 비교 모드, 실행 모드

Description

적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서 전환을 위한 방법 및 장치{METHOD AND DEVICE FOR SWITCHING IN A COMPUTER SYSTEM COMPRISING AT LEAST TWO EXECUTION UNITS}
알파 입자 혹은 우주 방사선에 의해 야기되는 과도 에러는 집적 반도체 회로에 대한 그 문제성을 점차 증가시키고 있다. 구조 폭이 작아지고, 전압은 감소하며, 클록 주파수는 더욱 높아짐에 따라, 알파 입자 혹은 우주 방사선에 의해 야기되는 전압 피크는 집적 회로 내의 논리 값을 왜곡하는 개연성이 증가하고 있다. 그 결과 잘못된 계산 결과가 발생할 수 있다. 그러므로 특히 자동차에서 안전 관련 시스템 내에서, 상기한 에러는 신뢰되는 방식으로 검출되어야 한다.
예컨대 자동차의 ABS 제어 시스템과 같이, 전자 장치의 오작동이 확실하게 검출되어야 하는 그런 안전 관련 시스템에서, 상기한 시스템의 대응하는 제어 장치들에서 에러 검출을 위한 통상적인 중복성이 적용된다. 그러므로 예컨대 공지된 ABS 시스템에서 마이크로 컨트롤러 어셈블리가 각각 중복되며, 전체 ABS 함수들은 중복되어 계산되고 그 일치성과 관련하여 검사된다. 그 결과의 불일치성이 발생하면, ABS 시스템은 작동 차단된다.
마이크로 컨트롤러의 본질적인 컴포넌트로는 일측에서는 메모리 모듈(예: RAM, ROM, 캐시), 코어, 그리고 이른바 주변장치(예: A/D 컨버터, CAN 인터페이스) 인 입/출력 인터페이스가 있다. 메모리 엘리먼트들은 검사 코드(패리티 혹은 ECC)를 이용하여 효과적으로 모니터링 될 수 있으며, 주변 장치는 종종 적용의 특수성에 따라 센서 혹은 액추에이터 신호 경로의 부분으로서 모니터링 되기 때문에, 마이크로 컨트롤러의 코어를 단독으로 중복시키는 것과 관련하여 추가로 중복성 접근이 제공된다.
2개의 통합된 코어를 구비한 상기한 마이크로 컨트롤러는 또한 이중 코어 아키텍처로서 공지되어 있다. 두 코어는 동일한 프로그램 세그먼트를 중복적이면서도 클록 동기화 방식(로크스텝 모드; Lockstep mode)으로 실행하며, 두 코어의 결과들이 비교되며, 그런 다음 일치성과 관련한 비교 시에 에러가 검출된다. 이와 같은 이중 코어 시스템의 구성은 비교 모드로서 지칭될 수 있다.
이중 코어 아키텍처들은 또 다른 적용에서 출력 향상, 다시 말해 성능 향상을 위해 이용된다. 두 코어는 서로 다른 프로그램들, 프로그램 세그먼트들 및 명령어들을 실행하며, 그럼으로써 출력 향상이 달성되는데, 그로 인해 이중 코어 시스템의 상기한 구성은 실행 모드로서 지칭될 수 있다. 이러한 시스템은 또한 대칭 다중 프로세서 시스템(SMP)으로서 지칭된다.
상기한 시스템들의 확장은, 특수 주소에 대한 접근 및 특수화된 하드웨어 장치들을 이용하여 상기한 두 모드 간에 소프트웨어를 통해 전환하는 것에 있다. 비교 모드에서, 코어들의 출력 신호들은 상호 간에 비교된다. 실행 모드에서 두 코어는 대칭 다중 프로세서 시스템(SMP)으로서 기능 하며, 서로 다른 프로그램들, 프로그램 세그먼트들 혹은 명령어들을 실행한다.
이러한 시스템을 사용하는 경우, 전환 시에 인터럽트 소스의 전환도 또한 이루어져야만 하는 문제가 발생한다.
따라서, 본 발명의 목적은 인터럽트 소스의 최적의 전환이 가능하게 되는 방법 및 장치를 제공하는 것이다.
바람직하게, 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템에서 전환을 위한 방법이 사용되며, 적어도 2개의 작동 모드 사이를 전환시키도록 구성된 전환 수단이 포함되며, 제1 작동 모드는 비교 모드에 상응하고 제2 작동 모드는 실행 모드에 상응하는 방법에 있어서, 하나의 인터럽트 컨트롤러가 배치되며, 또한 적어도 세 개의 메모리 영역이 제공되며, 적어도 하나의 제1 실행 유닛에는 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되고 적어도 두 개의 실행 유닛들에는 적어도 하나의 제3 메모리 영역이 할당될 수 있도록 메모리 영역에 대한 접근이 이루어지는 것을 특징으로 한다.
바람직하게, 실행 모드에서 각각의 실행 유닛에는 각각 하나의 메모리 영역이 할당되며, 상기 메모리 영역에는 정확히 하나의 인터럽트 컨트롤러가 할당되는 방법이 사용된다.
바람직하게, 실행 모드에서 각각의 실행 유닛에는 각각 하나의 메모리 영역이 할당되며, 모든 메모리 영역에는 정확히 하나의 인터럽트 컨트롤러가 할당되는 방법이 사용된다.
바람직하게, 모든 인터럽트 컨트롤러들이 인터럽트 컨트롤러에 할당되는 방법이 사용된다.
바람직하게, 실행 모드에서 적어도 하나의 제1 실행 유닛에는 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되는 방법이 사용된다.
바람직하게, 비교 모드에서 적어도 하나의 제3 메모리 영역이 적어도 두 개의 실행 유닛에 할당되는 방법이 사용된다.
바람직하게, 실행 모드에서 각각의 실행 유닛에 하나의 메모리 영역이 할당되는 할당만이 활성화되는 방법이 사용된다.
바람직하게, 비교 모드에서 적어도 두 개의 실행 유닛에 적어도 세 개의 메모리 영역이 할당되는 할당만이 활성화되는 방법이 사용된다.
바람직하게, 활성화된 할당들 중 하나에 의해 배치된 정확히 하나의 메모리 영역이 각각의 실행 유닛에 대해 존재하도록 각각의 모드에서 단지 정확히 하나의 스키마만이 활성화인 방법이 사용된다.
바람직하게, 비교 모드로부터 실행 모드로의 전환 시에 활성화된 할당들의 스키마가 변경되는 방법이 사용된다.
바람직하게, 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템에서 전환을 위한 장치가 사용되며, 적어도 2개의 작동 모드 사이를 전환시키도록 구성된 전환 수단이 포함되며, 제1 작동 모드는 비교 모드에 상응하고 제2 작동 모드는 실행 모드에 상응하는 전환 장치에 있어서, 적어도 세 개의 메모리 영역이 할당된 하나의 인터럽트 컨트롤러가 포함되며, 적어도 하나의 제1 실행 유닛에는 적어도 하나의 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되고 적어도 두 개의 실행 유닛들에는 적어도 하나의 제3 메모리 영역이 할당될 수 있는 것을 특징으로 한다.
바람직하게, 실행 모드에서 각각의 실행 유닛에는 각각 하나의 메모리 영역이 할당되며, 정확히 하나의 인터럽트 컨트롤러가 제공되는 장치가 사용된다.
바람직하게, 모든 메모리 영역들이 인터럽트 컨트롤러에 할당되는 장치가 사용된다.
바람직하게, 실행 모드에서 적어도 하나의 제1 실행 유닛에는 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되는 장치가 사용된다.
바람직하게, 비교 모드에서 적어도 하나의 제3 메모리 영역이 적어도 두 개의 실행 유닛에 할당되는 장치가 사용된다.
바람직하게, 메모리 영역이 인터럽트 컨트롤러 내에 배치되는 장치가 사용된다.
바람직하게, 실행 모드에서 각각의 실행 유닛에 하나의 메모리 영역이 할당되는 할당만이 활성화되는 장치가 사용된다.
바람직하게, 실행 모드에서 실행 유닛에 하나의 메모리 영역이 할당되는 할당만이 활성화되는 장치가 사용된다.
바람직하게, 비교 모드에서 적어도 두 개의 실행 유닛에 적어도 세 개의 메모리 영역이 할당되는 할당만이 활성화되는 장치가 사용된다.
바람직하게, 활성화된 할당들 중 하나에 의해 할당된 정확히 하나의 메모리 영역이 각각의 실행 유닛에 대해 존재하도록 각각의 모드에서 단지 정확히 하나의 스키마만이 활성화되는 장치가 사용된다.
바람직하게, 비교 모드로부터 실행 모드로의 전환 시에 활성화된 할당들의 스키마가 변경되는 장치가 사용된다.
바람직하게, 비교 모드로부터 실행 모드로의 전환 시에 활성화된 할당들의 변경이 전환기의 작동에 의해 이루어지는 장치가 사용된다.
바람직하게, 할당된 메모리 영역의 기록이 각각의 모드에서는 허용되지 않는 장치가 사용된다.
바람직하게, 할당된 메모리 영역의 기록은 할당이 활성화된 모드에서만 허용되는 장치가 사용된다.
추가의 장점들과 바람직한 구현예들은 청구항들의 특징부 및 실시예 설명으로부터 제시된다.
도1은 2개의 실행 유닛(G10a, G10b)과, 비교 유닛(G20)과, 전환 유닛(G50) 및 전환 요구 검출 유닛(G40)을 구비한 다중 프로세서 시스템(G60)을 도시한 개략도이다.
도2는 2개의 실행 유닛(G10a, G10b)과, 비교 유닛(G20) 및 전환 유닛(G50)으로 구성되어 조합된 비교 및 전환 유닛(G70) 및 전환 요구 검출 유닛(G40)을 구비한 다중 프로세서 시스템(G60)을 도시한 개략도이다.
도3은 2개의 실행 유닛(G10a, G10b)과 비교 유닛(G20), 전환 유닛(G50) 및 전환 요구 검출 유닛(G40)으로 구성되어 조합된 전환 요구 검출, 비교 및 전환 유닛(G80)을 구비한 다중 프로세서 시스템(G60)을 도시한 개략도이다.
도4는 2개의 실행 유닛(G210a, G210b)과 전환 및 비교 유닛(G260)을 구비한 다중 프로세서 시스템(G200)을 도시한 개략도이다.
도5는 특수 파이프라인 단계들(G230a, G230b) 내부에서 특수한 비정의된 비트 조합을 NOP 혹은 여타의 중립적 비트 조합과 교환하는 방법을 나타낸 흐름도이다.
도6은 2개의 실행 유닛(H210a, H210b)과 전환 및 비교 유닛(H260)을 구비한 다중 프로세서 시스템(H200)을 도시한 개략도이다.
도7은, 2개의 실행 유닛을 구비한 다중 프로세서 시스템에서 비교 모드에서 실행 모드로 전환할 시에 유닛-ID를 이용하여 프로그램 흐름이 분리될 수 있도록 하는 방법을 나타낸 흐름도이다.
도8은 3개의 실행 유닛을 구비한 다중 프로세서 시스템에서 비교 모드를 실행 모드로 전환할 시에 유닛-ID를 이용하여 프로그램 흐름이 분리될 수 있도록 하는 가능한 방법을 나타낸 흐름도이다.
도9는 실행 모드에서 비교 모드로 전환할 시에 실행 유닛들을 동기화하는 방법을 나타낸 흐름도이다.
도10은 실행 모드 및 비교 모드 사이의 전환을 나타내는 상태 자동화를 도시한 개략도이다.
도11은 2개의 실행 유닛뿐 아니라, 내부에 인터럽트 마스킹 레지스터들(G430a, G430b)을 포함하는 2개의 인터럽트 컨트롤러(G420a, G420b)와 다양한 인터럽트 소스들(G440a 내지 G440n)을 구비한 다중 프로세서 시스템(G400)을 도시한 개략도이다.
도12는 2개의 실행 유닛, 전환 및 비교 유닛 및 3개의 레지스터 세트를 포함하는 인터럽트 컨트롤러를 구비한 다중 프로세서 시스템을 도시한 개략도이다.
도13은 비교기를 도시한 개략도이다.
도14은 위상 변위를 보상하기 위한 유닛을 구비한 비교기를 도시한 개략도이다.
도15는 비교 모드에서 바람직한 컴포넌트(M700)(전환 및 비교 유닛)의 기본적인 거동을 도시한 개략도이다.
도16은 실행 모드에서 바람직한 컴포넌트(M700)(전환 및 비교 유닛)의 기본적인 거동을 도시한 개략도이다.
도17은 전환 및 비교 유닛의 일 실시예를 도시한 개략도이다.
도18은 전환 및 비교 유닛의 또 다른 실시예를 도시한 개략도이다.
도19는 모드 신호를 생성하는 전환 및 비교 유닛을 도시한 개략도이다.
도20은 전환 및 비교 유닛을 도시한 일반도이다.
도21은 일반 모드 및 일반 에러 신호를 생성하는 전환 및 비교 유닛을 도시한 일반도이다.
도22는 외부 유닛과 질의 응답 통신을 하는 상황을 도시한 개략도이다.
도23은 지능형 액추에이터와 통신하는 상황을 도시한 개략도이다.
실행 유닛으로서 지정되는 것으로 다음에서는 프로세서, 코어, CPU뿐 아니라, FPU(부동 소수점 처리 유닛), DSP(디지털 신호 프로세서), 코프로세서 혹은 ALU(산술 논리 연산 유닛)가 적용된다.
도1은 2개의 실행 유닛(G10a, G10b)과, 비교 유닛(G20)과, 전환 유닛(G50) 및 전환 요구 검출 유닛(G40)을 구비한 다중 프로세서 시스템(G60)을 도시하고 있다.
본 발명은 적어도 2개의 실행 유닛(G10a, G10b)과, 비교 유닛(G20)과, 전환 유닛(G50) 및 전환 요구 검출 유닛(G40)을 구비하고 도1, 도2 및 도3에 도시된 다중 프로세서 시스템(G60)에 관한 것이다. 전환 유닛(G50)은 적어도 2개의 시스템 인터페이스(G30a, G30b)로 향하는 적어도 2개의 출력장치를 구비하고 있다. 상기한 인터페이스들을 통해, 레지스터, 메모리, 혹은 디지털 출력장치, D/A 컨버터, 통신 컨트롤러와 같은 주변 장치들이 제어될 수 있다. 상기한 다중 프로세서 시스템은 적어도 2가지 작동 모드, 즉 비교 모드(VM) 및 실행 모드(PM)로 작동될 수 있다.
실행 모드에서, 서로 다른 실행 유닛들에서는 서로 다른 명령어들, 프로그램 세그먼트들 혹은 프로그램들이 병행하여 실행된다. 이런 작동 모드에서, 비교 유닛(G20)은 비활성화된다. 전환 유닛(G50)은 상기한 작동 모드에서, 각각의 실행 유닛(G10a, G10b)이 시스템 인터페이스(G30a, G30b)와 연결되는 방식으로 구성된 다. 이와 관련하여 실행 유닛(G10a)은 시스템 인터페이스(G30a)와 연결되고, 실행 유닛(G10b)은 시스템 인터페이스(G30b)와 연결된다.
비교 모드에서, 두 실행 유닛(G10a, G10b) 내에서는 동일하거나 유사한 명령어들, 프로그램 세그먼트들 혹은 프로그램들이 처리된다. 더욱 바람직하게는 상기 명령어들은 클록 동기화 방식으로 처리되지만, 비동기성 혹은 정의된 클록 펄스 오프셋을 이용한 처리도 생각해 볼 수 있다. 실행 유닛들(G10a, G10b)의 출력 신호들은 비교 유닛(G20) 내에서 비교된다. 출력 신호들이 서로 다를 시에, 에러가 검출되며, 대응하는 조치가 취해질 수 있다. 이러한 조치들은 에러 신호를 야기하고, 에러 치료를 유도하고, 스위치를 작동시키는 것일 수 있거나, 혹은 이런 조치들 및 추가로 생각할 수 있는 조치들을 조합한 것일 수 있다. 전환 유닛(G50)은 일 변형예에 따라 단지 신호만이 시스템 인터페이스들(G30a, G30b)에 접속되는 방식으로 구성될 수도 있다. 또 다른 구성에 따라, 전환 유닛은, 단지 비교되고 그에 따라 동일한 신호들이 시스템 인터페이스들(G30a, G30b)에 접속되게끔 한다.
전환 요구 검출 유닛(G40)은 바로 활성화된 모드와 무관하게 또 다른 모드로 전환하는 전환 요구를 검출한다.
도2는, 2개의 실행 유닛(G10a, G10b)과, 비교 유닛(G20) 및 전환 유닛(G50)으로 구성되어 조합된 비교 및 전환 유닛(G70) 및 전환 요구 검출 유닛(G40)을 구비한 다중 프로세서 시스템(G60)을 도시하고 있다.
전술한 특성의 실시예에 따라, 전환 유닛(G50)과 비교 유닛(G20)은 공통의 전환 및 비교 유닛(UVE)(G70)으로 통합될 수 있으며, 이는 도2에 도시된 바와 같 다. 이와 같은 공통의 컴포넌트(G70)는 개별 컴포넌트들(G50, G20)의 태스크를 수행한다. 도15, 도16, 도17, 도18 및 도19에는 UVE(G70)의 실시예가 도시되어 있다.
도3에 도시한 바와 같은 추가의 실시예에 따라, 전환 요구 검출 유닛(G40), 비교기(G20) 및 전환 유닛(G50)은 공통의 컴포넌트(G80)로 통합될 수 있다. 도에는 도시하지 않은 또 다른 실시예에 따라, 전환 요구 검출 유닛(G40) 및 비교기(G20)가 공통의 컴포넌트로 통합될 수 있다. 마찬가지로 공통의 컴포넌트에 전환기(G50)와 함께 전환 요구 검출 유닛(G40)을 통합하는 점도 생각해 볼 수 있다.
이하의 설명은, 다른 방식으로 지시되지 않은 점에 한해서, 전환 요구 검출 유닛(G40)과 조합된 전환 및 비교 유닛(G70)이 존재하는 점으로부터 개시된다.
2개 이상의 실행 유닛에 대한 용도로 이용되는 전환 및 비교 컴포넌트에 대한 일반적인 경우는 도20에 도시되어 있다. n개로 고려할 실행 유닛과 관련하여, n개의 신호(N140, ..., N14n)가 전환 및 비교 컴포넌트(N100)에 전달된다. 이 전환 및 비교 컴포넌트는 상기한 입력 신호들로부터 n개까지의 출력 신호(N160, ...,N16n)를 생성할 수 있다. 가장 간단한 경우, 즉 "순수 실행 모드"의 경우에, 모든 신호(N14i)는 대응하는 출력 신호들(N16i)로 유도된다. 그에 반대되는 한계의 경우, 즉 "순수 비교 모드"의 경우에, 모든 신호(N140, ..., N14n)는 출력 신호들(N16i) 중 정확하게 하나의 출력 신호로 유도된다.
상기한 도에서는, 생각할 수 있는 다양한 모드들이 어떻게 발생하는지 그 방법이 설명된다. 이를 위해, 상기한 도에는 전환 논리(N110)의 논리 컴포넌트가 포 함된다. 이런 컴포넌트는 자체 컴포넌트로서 존재할 필요는 없다. 중요한 점은 기술한 함수들이 시스템에서 실현된다는 것에 있다. 전환 논리(N110)는 우선 대체로 존재하는 출력 신호의 수를 결정한다. 또한, 전환 논리는, 입력 신호들 중 어느 입력 신호가 출력 신호들 중 어느 출력 신호를 제공할지를 결정한다. 이와 관련하여, 입력 신호는 정확하게 하나의 출력 신호를 제공할 수 있다. 다시 말해 또 다른 수학적 방식으로 전환 논리를 통해, 집합{N140, ..., N14n}의 각각의 요소에 집합{160, ..., N16n}의 요소를 할당하는 함수가 정의된다.
그런 다음 처리 논리(N120)는 출력값들(N16i) 각각에 대해 어떠한 방식으로 입력값들이 상기한 출력 신호를 제공할 것인지를 결정한다. 그에 따른 컴포넌트는 자체 컴포넌트로서 존재할 필요는 없다. 재차 중요한 점은 기술한 함수들이 시스템 내에서 실현된다는 것에 있다. 실시예에 따라, 다양한 변형예들을 기술하기 위해, 일반성을 잃지 않으면서, 출력값(N160)이 신호들(N141, ..., N14m)에 의해 생성되는 점을 가정할 수도 있다. m = 1이라면, 이는 단순히 신호의 관통 접속(through connection)에 상응하며, m = 2이라면, 예컨대 도13 및 도14에 따라 비교기와 관련하여 기술한 바와 같이, 신호들(N141, N142)이 비교된다. 이와 같은 비교는 동기화 혹은 비동기화 방식으로 실행될 수 있고, 비트로 혹은 단지 유효 비트로만, 혹은 허용오차 밴드를 이용하여서도 실행될 수도 있다.
m >=3 이라면, 다수의 가능한 방법이 제공된다.
첫 번째 가능한 방법은, 모든 신호를 비교하고, 적어도 2개의 상이한 값이 존재할 시에, 선택에 따라 신호화 할 수 있는 에러를 검출하는 것에 있다.
두 번째 가능한 방법은, m-선택으로 이루어진 k를 실행하는 것에 있다(k > m/2). 상기한 k는 비교기들을 이용함으로써 실현될 수 있다. 선택에 따라, 신호들 중 하나의 신호가 편차가 있는 것으로서 검출된다면, 에러 신호가 생성될 수 있다. 3개의 신호 모두가 서로 다르다면, 앞서 생성된 에러 신호와 상이한 에러 신호가 생성될 수 있다.
세 번째 가능한 방법은, 상기한 값들을 알고리즘에 따라 계산하는 것에 있다. 이는 예컨대 평균값 구하기, 즉 중앙값 구하기를 나타내거나, 혹은 무정지형(fault-tolerant) 알고리즘(FTA)의 이용을 나타낼 수 있다. 상기한 FTA는, 입력값들 중 극값들을 제거하고, 나머지 값들에 대한 일종의 평균화를 실행하는 점에 기인한다. 상기한 평균화는 나머지 값들의 전체 집합에 대해 실행되거나 혹은 바람직하게는 HW에서 용이하게 구해지는 부분집합에 대해 실행될 수 있다. 이러한 경우 실제로 값들을 언제나 비교할 필요는 없다. 평균값을 구할 시에, 예컨대 단지 가산 및 나눗셈으로 연산 되기만 하면 되고, FTM, FTA 혹은 중앙값은 부분적인 정렬(sorting)을 요구한다. 경우에 따라, 본 실시예에서 따라 극값들이 충분히 높을 시에도, 선택에 따라 에러 신호가 출력될 수 있다.
다수의 신호를 하나의 신호로 처리하는 상기한 다양한 가능한 방법들은 간소화 측면에서 비교 연산으로서 지칭된다. 다시 말해 처리 논리의 태스크는 각각의 출력 신호에 대해 (그에 따라 해당하는 입력 신호들에 대해) 비교 연산의 정확한 형태를 결정하는 것에 있다. 전환 논리(N110)(다시 말해 전술한 함수)와 처리 논리(다시 말해 출력 신호 당, 즉 함수값 당 처리 연산의 결정)의 조합된 정보는 모 드 정보이며, 이 모드 정보는 모드를 결정한다. 이런 정보는 일반적으로 자연스럽게 다중값으로 이루어지는데, 다시 말해 논리 비트에 대한 정보뿐 아니라 그 외의 정보도 나타낼 수 있다. 이론적으로 생각할 수 있는 모든 모드가 지정된 구현에서 중요한 것이 아니므로, 바람직하게는 허용되는 모드의 수가 제한된다. 중요한 사실은 단지 하나의 비교 모드만이 존재하는 단지 2개의 실행 유닛이 이용되는 경우, 전체 정보는 단지 하나의 논리 비트로 압축될 수 있다. 실행 모드에서 비교 모드로의 전환은 일반적으로, 다양한 출력값들을 목표로 사상(寫像; mapping)되는 실행 유닛들이 비교 모드에서는 동일한 출력값을 목표로 사상되는 것을 특징으로 한다. 이런 특징은 바람직하게는, 실행 유닛들의 부분 시스템이 존재함으로써 실현된다. 이와 관련하여 상기한 부분 시스템의 경우, 실행 모드에서는, 부분 시스템에서 고려되는 모든 입력 신호(N14i)가 직접적으로 대응하는 출력 신호들(N16i)로 전환되며, 그에 반해 비교 모드에서는 상기한 모든 입력 신호는 하나의 출력값을 목표로 사상된다. 대체되는 방법에 따라, 상기한 전환은, 페어링(pairing)이 변경됨으로써 실현될 수 있다. 이런 점에서, 비록 발명의 지정된 특성에 따라, 허용되는 모드의 집합이 본원의 경우에 해당 되도록 제한될 수 있다고 하더라도, 일반적으로 하나의 실행 모드와 하나의 비교 모드에 대해 진술하는 것은 불가능한 것으로 설명된다. 그러나 여하간 실행 모드로부터 비교 모드로(그리고 그 반대로) 전환하는 것에 대한 진술은 가능하다.
상기한 두 모드 간의 전환은 소프트웨어를 통한 제어 방식으로 작동 중에 동적으로 이루어질 수 있다. 이때 전환은, 특수 전환 명령어들, 특수 명령어 시퀀 스, 명확하게 식별되는 명령어들을 통해, 혹은 다중 프로세서 시스템의 실행 유닛들 중 적어도 하나의 실행 유닛이 소정의 주소에 접근함으로써 야기된다.
에러 전환 논리(N130)는 예컨대 비교기들에 의해 생성되는 에러 신호들을 수집하며, 예컨대 일측의 스위치를 통해 출력값들(N16i)을 차단하면서, 선택에 따라 상기한 출력값들을 수동적(passive)으로 전환할 수 있다.
그러나 하기의 실시예는 대부분의 컨셉이 더욱 간단하게 요약되는 2개의 실행 유닛에 관한 경우에 대체로 집중된다.
모드 간의 전환은 다양한 방법에 의해 암호화될 수 있다. 가능한 방법에 따라, 전환 요구 검출 유닛(G40)에 의해 검출되는 특수 전환 명령어들이 이용된다. 전환을 암호화하기 위한 또 다른 가능한 방법은 재차 전환 요구 검출 유닛(G40)에 의해 검출되는 특수 저장 영역에 대한 접근에 의해 정의된다. 추가의 방법은, 전환 요구 검출 유닛(G40)에서, 전환을 신호화 하는 외부 신호를 평가하는 것에 있다. 이하에서는, 프로세서의 존재하는 명령어 집합에서 이용되지 않는 비트 조합을 이용하는 방법이 기술된다. 이런 방법의 특별한 장점은, 기존의 개발 환경(어셈블러, 컴파일러, 링커, 디버거)이 계속해서 이용될 수 있다는 점에 있다.
도4는 2개의 실행 유닛(G210a, G210b)과 전환 및 비교 유닛(G260)을 구비한 다중 프로세서 시스템(G200)을 도시하고 있다. 비교 모드와 실행 모드 간에 (그리고 그 반대로) 전환을 하기 위해, 어셈블러 내에서는 적어도 2개의 실행 유닛(G210a, G210b)의 정의되지 않은 비트 조합들이 이용된다. 이와 같은 의미에서 정의되지 않거나 비정의된 비트 조합으로서 간주되는 것에는, 명령어 집합의 설명 에서 비정의된 것으로서, 혹은 잘못된 것으로서 명시되는 모든 비트 조합이 해당된다. 이에는 예컨대 잘못된 연산수(illegal operand), 잘못된 명령어, 잘못된 연산이 있다. 상기한 비정의된 비트 조합의 일반적인 식별표시는, 정상적인 실행 유닛이 상기한 비트 조합을 실행할 시에 에러 신호를 생성하거나 정의되지 않은 거동을 나타내는 것에 있다. 다시 말해, 상기한 비트 조합은 통상의 프로그램의 의미론을 나타내는데 필요하지 않다.
그러므로 소프트웨어 개발을 위해, 단일 프로세서 시스템용으로 존재하는 것과 같은 지금까지의 개발 환경이 이용될 수 있다. 이는 예컨대 매크로 "SWITCH MODE TO PM"과 매크로 "SWITCH MODE TO VM"를 정의함으로써 실현될 수 있다. 이때 상기한 매크로는 코드 내 적합한 위치에 전술한 의미에서 대응하는 비정의된 비트 조합을 삽입한다.
그런 후에 상기한 조합의 이용은 일반적인 "SWITCH" 매크로로서 정의된다. 그에 따라 상기한 매크로는 현재의 모드에 따라 이 모드를 각각 또 다른 모드로 전환시킨다. 시스템에 2개 이상의 서로 다른 모드가 존재할 경우, 상기한 방법을 이용하기 위해 상기한 조합이 다수가 존재해야하는데, 바람직하게는 모드 당 하나의 조합이 전환 식별을 위해 이용될 수 있다.
본 발명에 따라, 전환 요구는 명령어 집합에서 정의되지 않은 비트 조합에 의해 암호화된다. 이 비트 조합은 실행 유닛(G210a, G210b) 내에서 통상적인 방법으로 처리되어서는 안 된다. 이와 같은 이유에서, 대응하는 비트 조합을 검출하여, 이 검출된 비트 조합을 추가로 처리하기 위해, 중립적 비트 조합으로 대체하는 추가의 파이프라인 단계(REPLACE 단계)(G230a, G230b)가 제안된다. 이를 위해 더욱 바람직하게는 "NOP"(무연산) 명령어가 이용된다. NOP 명령어는, 실행 유닛의 내부 상태를 명령어 포인터로까지 변경하지 않는 것을 특징으로 한다. 이때 대체(REPLACE) 단계(G230a, G230b)는 통상적인 제1 단계, 즉 인출(FETCH) 단계(G220a, G22b) 이후에, 그리고 잔여 파이프라인 단계(G240a, G240b) 이전에 배치되며, 어셈블리 내에서는 본 실시예에 따라 유닛에 통합되어 있는 정의되지 않은 비트 조합들이 삽입된다.
본 발명에 따라, 전환을 위한 대응하는 비트 조합이 검출되었다면, 본 실시예에서는 파이프라인 유닛(G215a, G215b) 내의 특수 파이프라인 단계(G230a, G230b)로서 구현되는 전환 요구 검출 유닛(G40)이 추가의 신호(G250a, G250b)를 생성한다. 이 신호는 처리 모드의 전환이 실행되어야 하는 사실을 독립된 전환 및 비교 유닛(G260)에 신호화 한다.
REP 단계들(G230a, G230b)은 바람직하게는 실행 유닛들(G210a, G210b)의 파이프라인 유닛들(G215a, G215b) 내에서 FET 단계(G220a, G220b)와 잔여 파이프라인 단계(G240a, 240b) 사이에 각각 배치된다. 이때 REP 단계들(G230a, G230b)은 대응하는 비트 조합들을 검출하고, 그에 따라 NOP 명령어들을 잔여 단계들(G240a, G240b)에 전달한다. 동시에 각각의 신호(G250a 혹은 G250b)가 활성화된다. 모든 또 다른 경우에서는, REP 단계들(G230a, G230b)은 중립적으로 거동하는데, 다시 말해 모든 다른 명령어들은 변경됨이 없이 잔여 단계들(G240a, G240b)에 전달된다.
도5는 특수 파이프라인 단계(G230a, G230b) 내부에서 비정의된 특수 비트 조 합이 NOP 혹은 기타 중립적 비트 조합과 교환되는 방법을 흐름도로 도시하고 있다. 인출(FETCH) 단계(G300)에서, 명령어, 다시 말해 비트 조합은 메모리로부터 호출된다. 그런 후에 블록(G310)에서, 호출된 비트 조합이 전환을 암호화한 비정의된 특수 비트 조합에 상응하는지 여부가 구분된다. 만일 그에 상응하지 않는 경우라면, 다음 단계(G320)에서 비트 조합은 변경됨이 없이 추가의 처리를 위해 잔여 파이프라인 단계(G340)로 전달된다. 전환을 암호화하는 특수 비트 조합이 단계(G310)에서 검출되었다면, 단계(G330)에서 상기한 특수 비트 조합은 NOP 비트 조합으로 대체되고, 그런 다음 대체된 NOP 비트 조합은 추가의 처리를 위해 또 다른 파이프라인 단계(G340)로 전달된다. 바람직한 실시예에 따라, 블록들(G310, G320, G330)은 본 발명에 따른 대체(REPLACE) 단계(G230a, G230b)의 기능성을 나타내며, 상기한 블록들은 또한 또 다른 기능성을 포함할 수도 있다.
도6은 2개의 실행 유닛(H210a, H210b)과 전환 및 비교 유닛(H260)을 구비한 다중 프로세서 시스템(H200)을 도시하고 있다. 컴포넌트들(H220a, H220b, H240a, H240b)은 G220a, G220b, G240a, G240b)와 동일한 의미를 갖는다. 본 실시예에서는 특수 파이프라인 단계(H230a, H230b)로 기술되는 전환 요구 검출 유닛(G40)의 대체되는 실시예에 따라, 상기한 전환 요구 검출 유닛은 전환을 신호화 하는 신호들(H250a, H250b) 이외에도 또 다른 신호들을 갖는다. 실행 유닛들(H210a, H210b)이 실행 모드에서 비교 모드로 전환할 시에 동기화될 수 있도록 하기 위해, 실행 유닛들(H210a, H210b)의 파이프라인 유닛들(H215a, H215b)은 처리가 정지될 수 있도록 하는 각각의 입력 신호(H280a, H280b)를 갖는다. 이러한 신호는 전환 및 비 교 유닛(H260)에 의해, 우선 전환 명령어를 검출하고 그에 따라 신호(H250a 내지 H250b)를 활성화시키는 그런 파이프라인 유닛(H215a 혹은 H215b)용으로 설정된다. 실행 유닛들(H210a, H210b)의 두 파이프라인 유닛(H215a, H215b)이 전환 명령어를 검출하고, 소프트웨어 혹은 기타 하드웨어 조치에 의해 그 내부 상태들을 동기화했을 때 비로소, 상기한 신호(H280a, H280b)가 다시 취소된다. 비교 모드에서 실행 모드로 전환할 시에, 신호(H280a, H280b)는 필요하지않는데, 왜냐하면 동기화가 필요하지 않기 때문이다.
본 실시예에 기술한 제안을 위한 전제 조건은, 각각의 실행 유닛이 자체 개별 번호 혹은 유닛 ID를 결정할 수 있도록 하는 (ID 유닛으로서 지칭되는) 유닛이거나, 혹은 그 방법이다. 2개의 실행 유닛을 구비한 시스템의 경우, 예컨대 일측의 실행 유닛은 스스로 번호 0을 결정하고, 타측의 실행 유닛은 번호 1을 결정할 수 있다. 이와 같은 ID는 비교 모드와 실행 모드를 구분하는 것이 아니라, 실행 유닛을 일 대 일로 지시한다. ID 유닛은 각각의 실행 유닛 내에 포함될 수 있는데, 예컨대 프로세서 상태 레지스터 내에 비트 혹은 비트 조합으로서 구현되거나, 혹은 자체 레지스터로서, 혹은 개별 비트로서, 혹은 실행 유닛들에 대한 외부 유닛으로서 구현될 수 있으며, 외부 유닛은 질의 시에 대응하는 ID를 공급한다.
실행 유닛들이 전환 요구에 따라 실행 모드로 전환하는 것을 실행한 이후에, 비록 비교 유닛은 더 이상 활성화되지 않지만, 그러나 실행 유닛들은 동일한 명령어들을 실행한다. 그 이유는, 프로그램에서, 실행작업이 다음 단계에서 이루어지거나 현재 이루어지고 있는 위치를 식별표시하는 명령어 포인터가 전환에 의해 영 향을 받지 않기 때문이다. 이어서 실행 유닛들이 다양한 SW 모듈을 실행할 수 있도록 하기 위해, 실행 유닛들의 프로그램 흐름이 분리되어야 한다. 이런 상황에 상응하게, 물론 본 발명에 따라 독립된 명령어들, 프로그램 세그먼트들 혹은 프로그램들이 처리되기 때문에, 명령어 포인터는 실행 모드에서 대개 상이한 값들을 갖게 된다. 프로그램 흐름의 분리는 본 실시예에서 기술된 제안에 따라 각각의 실행 유닛 번호를 결정함으로써 이루어진다. 실행 유닛이 갖는 각각의 ID에 따라, 실행 유닛은 소정의 소프트웨어 모듈을 실행한다. 각각의 실행 유닛은 개별 번호 혹은 ID를 가지고 있기 때문에, 그렇게 함으로써 관여하는 실행 유닛들의 프로그램 흐름도 신뢰되는 방식으로 분리될 수 있다.
도7은 유닛 ID를 이용하여 2개의 실행 유닛을 구비한 다중 프로세서 시스템에서 비교 모드로부터 실행 모드로 전환할 시에 프로그램 흐름이 분리될 수 있도록 하는 방법을 흐름도로 도시하고 있다. 비교 모드로부터 실행 모드로 전환(G500)을 실행한 후에, 두 실행 유닛들을 통해 유닛 ID 혹은 실행 유닛 번호의 질의(G510)가 이루어진다. 이와 관련하여 실행 유닛 0은 본 발명에 따라 실행 유닛 번호 0을 획득하며, 실행 유닛 1은 실행 유닛 번호 1을 획득한다. G510 내에서는 번호 0과 결정된 실행 유닛 번호의 비교가 이루어진다. 그 비교 결과가 동일할 시에, 상기한 비교가 성공적으로 이루어진 실행 유닛은 실행 유닛 0에 대한 코드를 가지면서 단계(G520)로 계속해서 진행한다. 상기한 비교가 성공적으로 이루어지지 못한 실행 유닛은 번호 1과 비교되는 G530으로 계속 진행한다. G530에서 상기한 비교가 성공적인 경우라면, 실행 유닛 1에 대한 코드를 가지면서 G540으로 계속 진행된다. 만 일 상기한 비교가 성공적이지 못하다면, 그에 따라 대응하는 실행 유닛에 대해 0 및 1과 동일하지 않은 실행 유닛 번호가 결정된다. 이러한 점은 에러 사례를 나타내며, G550으로 계속해서 진행된다.
도8은 3개의 실행 유닛에 대한 가능한 방법을 흐름도로 도시하고 있다. 비교 모드로부터 실행 모드로 전환(H500)을 실행한 후에, 실행 유닛들을 통해 유닛 ID 혹은 실행 유닛 번호에 대한 질의(H510)가 이루어진다. 이때 본 발명에 따라 예컨대 실행 유닛 0은 실행 유닛 번호 0을 획득하며, 실행 유닛 1은 실행 유닛 번호 1을, 그리고 실행 유닛 2는 실행 유닛 번호 2를 획득한다. H510에서 번호 0과 결정된 실행 유닛 번호의 비교가 이루어진다. 실행 유닛 번호가 0과 동일하다면, 그 비교가 성공적으로 이루어진 실행 유닛은 실행 유닛 0에 대한 코드를 가지면서 단계(H520)로 계속해서 진행한다. 상기한 비교가 성공적이지 못한 실행 유닛들은 번호 1과 비교되는 H530으로 계속 진행한다. H530에서 그 비교가 성공적인 실행 유닛은 실행 유닛 1에 대한 코드를 가지면서 H540으로 계속해서 진행한다. 그러나 그 비교가 성공적이지 못한 실행 유닛들은 번호 2와 비교되는 H535로 계속 진행한다. H535에서 비교가 성공적인 실행 유닛은 실행 유닛 2에 대한 코드를 가지면서 H536으로 계속 진행한다. H535에서 비교가 성공적이지 못한 경우라면, 그에 따라 대응하는 실행 유닛에 대해 0, 1 및 2와 상이한 실행 유닛 번호가 결정된다. 이는 에러 사례를 나타내며, H550으로 계속 진행한다. 번호 비교에 대한 대체되는 방법에 따라, 결정된 실행 유닛 번호는 또한 직접적으로 지수로서 분기표(branch table)에서 이용될 수 있다.
상기한 설명에 상응하게, 상기한 방법은 또한 3개 이상의 실행 유닛을 구비한 다중 프로세서 시스템에 대해서도 적용될 수 있다.
실행 모드로부터 비교 모드로 전환된다면, 다수의 사건에 주의해야 한다. 실행 모드로부터 비교 모드로 전환할 시에, 실행 유닛들의 내부 상태들은 전환 후에도 동일하도록 보장해야 한다. 그렇지 않으면, 비교 모드에서 경우에 따라 상이한 기동 상태들이 상이한 출력을 야기할 때 에러가 검출될 수도 있다. 이는 하드웨어에 의해, 소프트웨어에 의해, 펌웨어에 의해, 혹은 그 3가지 요소의 조합으로 실행될 수 있다. 이에 대한 전제 조건은, 비교 모드로 전환된 후에 모든 실행 유닛이 동일하거나 혹은 유사한 명령어들, 프로그램들, 혹은 프로그램 세그먼트들을 실행하는 것에 있다. 또한, 비교 모드가 동일한 명령어들이 처리되고 비트에 정확한 비교가 개시되는 것을 특징으로 할 때 적용될 수 있는 동기화 과정이 개시된다.
도9는 실행 모드로부터 비교 모드로 전환할 시에 실행 유닛들을 동기화하는 방법을 흐름도로 도시하고 있다. 단계(G600)에서 바람직하게는 모든 인터럽트는 차단된다. 이는 비교 모드를 위한 인터럽트 컨트롤러가 그에 상응하게 재프로그래밍 되어야 하기 때문에 중요하다. 그 외에도 소프트웨어를 통해서도 실행 유닛들의 내부 상태는 조정되어야 한다. 그러나 비교 모드로 전환하기 위해 준비하는 동안, 인터럽트가 야기된다면, 조정은 추가의 노력 없이는 더 이상 불가능하다.
단계 G610: 두 실행 유닛이 독립된 캐시를 보유하고 있다면, 전환이 이루어지기 전에, 비교 모드에서 일측의 실행 유닛용 주소에 대해서는 캐시 히트(cache hit)가, 그리고 타측의 실행 유닛용 주소에 대해서는 캐시 미스(cache miss)가 발 생하는 것을 억제하기 위해, 캐시의 내용은 조정되어야 한다. 만일 이러한 조정이 캐시 하드웨어에 의해 자발적으로 실행되지 않는다면, 이는 예컨대 무효한 것으로서 모든 캐시 라인을 표시함으로써 달성된다. 캐시(혹은 캐시들)가 완전하게 무효화될 때까지 대기가 이루어져야 한다. 이는 필요에 따라 프로그램 코드 내에 대기 루프에 의해 보장된다. 이는 또한, 이 단계 후에 캐시들이 동일한 상태로 유지되도록 결정하는 또 다른 수단에 의해 달성될 수 있다.
단계(G620)에서, 전환 후에 여전히 실행 모드를 바탕으로 하는 실행 유닛들의 활동이 개시되지 않도록 하기 위해, 실행 유닛들의 기록 버퍼가 소거된다.
단계(G630)에서, 실행 유닛들의 파이프라인 단계들의 상태는 동기화된다. 이를 위해, 전환 시퀀스/전환 명령어 이전에 예컨대 적합한 수의 NOP(무연산) 명령어를 실행한다. NOP 명령어의 수는 파이프라인 단계의 수에 따르며, 그에 따라 각각의 아키텍처에 따라 달라진다. 어떠한 명령어가 NOP 명령어로서 적합한가의 여부는 마찬가지로 아키텍처에 따른다. 만일 실행 유닛들이 명령어 캐시를 보유하고 있다면, 이와 관련하여, 상기한 명령어 시퀀스가 캐시 라인의 경계에 정렬되는 점이 보장된다(정렬). 명령어 캐시는 상기한 NOP를 실행하기 전에 무효한 것으로 표시되어 있기 때문에, 상기한 NOP들은 우선 캐시로 로딩 되어야 한다. 상기한 캐시 라인 경계에서 개시된다면, 전환을 위한 명령이 이루어지기 전에, 메모리(예: RAM/ROM/플래시)로부터 캐시로 이루어지는 데이터 전달은 종료된다. 또한, 이는 필요한 수의 NOP를 결정할 시에도 고려되어야 한다.
단계(G640)에서, 실제로 비교 모드로 전환하기 위한 명령 단계가 실행된다.
단계(G650)에서, 각각의 실행 유닛의 각각의 레지스터 파일의 내용이 조정된다. 이를 위해, 레지스터는 전환 전에 혹은 그 이후에 동일한 내용들로 로딩 된다. 이 경우, 전환 후에, 실행 유닛들 내의 레지스터 내용이 외부를 향해 전달되고 그에 따라 비교 유닛에 의해 비교되기 전에, 상기한 레지스터 내용이 동일하도록 하는 점이 중요하다.
단계(G660)에서, 인터럽트 컨트롤러는 재프로그래밍 되며, 그럼으로써 중간에 개재된 모든 실행 유닛들에 있어 외부 인터럽트 신호는 동일한 인터럽트를 야기하게 된다.
단계(G670)에서, 인터럽트가 다시 가능해진다.
프로그램 흐름에서 비교 모드로 전환되어야 하는 시점이 명확하지 않다면, 관여하는 실행 유닛들은 의도되는 전환에 대한 정보를 제공받아야 한다. 이를 위해, 바람직하게는 각각의 실행 유닛에 해당하는 인터럽트 컨트롤러에서는, 예컨대 SW를 통해 인터럽트가 초기화된다. 그런 다음 인터럽트 처리는 중간 개재를 위한 전술한 시퀀스의 실행을 야기한다.
도10은 실행 모드와 비교 모드 사이의 전환(및 그 반대의 전환)을 나타내는 상태 자동화를 도시하고 있다. "전원-온"에 의해, 혹은 재설정(소프트웨어 혹은 하드웨어)에 의해 야기되는 시스템의 기동 시에, 시스템은 전이(G800)(transition)를 통해 상태(G700)로 변경된다. 일반적으로, 시스템은 재설정을 야기하는 비정의된 사건 후에는 항상 상태(G700)에서 기능 하기 시작하는 점이 적용된다. 재설정을 야기할 수 있는 실시예에 따른 사건은, 외부 신호, 전원 공급 장치의 문제, 혹 은 추가 작업을 더 이상 유효하지 못하게 하는 내부의 에러 사건이다. 그러므로 전환 및 비교 유닛(G70)과, 실행 모드에서 작동되는 다중 프로세서 시스템(G60)의 상태(G700)는 시스템의 디폴트 상태이다. 전술한 바와 같이 그 외 비정의된 상태가 지정될 수도 있는 모든 경우에는, 디폴트 상태(G700)가 지정된다. 이때, 상태(G700)의 디폴트 위치는 하드웨어 조치를 통해 보장된다. 예를 들어, 시스템 상태 내지 전환 및 비교 유닛(G60)의 상태는 레지스터 내에, 레지스터의 비트 내에, 레지스터 내 비트 조합에 의해, 혹은 플립플롭에 의해 암호화될 수 있다. 그런 다음, 하드웨어를 통해, 재설정 혹은 전원-온 후에 항상 상태(G700)가 지정되는 점이 보장된다. 이는 예컨대 재설정 신호 내지 "전원-온" 신호가 플립플롭 혹은 레지스터의 재설정 입력부나 설정 입력부로 안내됨으로써 보장된다.
상태(G700)에서, 시스템은 실행 모드로 작동한다. 그에 따라 실행 유닛들(G10a, G10b)은 서로 다른 명령어들, 프로그램들 혹은 부분 프로그램들을 처리한다. 전환 요구는 예컨대 실행 유닛(G10a, G10b)이 특수 전환 명령어를 실행시킴으로써 검출될 수 있다. 또 다른 가능성은 특수 메모리 주소에 대한 접근에 의한, 내부 신호에 의한, 혹은 외부 신호에 의한 검출이 있다. 전환 요구가 존재하지 않는 점에 한해서, 다중 프로세서 시스템(G60)과 그에 따른 전환 및 비교 유닛(G70)은 상태(G700)로 유지된다. 또한, 상기한 특수 시스템에서 전환 요구가 식별표시되는 바와 같이 식별표시되는 전환 조건의 검출이 전환 요구를 이용하여 지시된다.
상태(G700)로 유지됨은 전이(G810)를 통해 도시되어 있다. 실행 유닛(G10a)에 의해 전환 요구가 검출된다면, 전이(G820)를 통해 전환 및 비교 유닛(G70)은 상 태(G710)로 변환된다. 그러므로 상태(G710)는, 실행 유닛(G10a)이 전환 요구를 검출했으며, 그런 후에 실행 유닛(G10b)이 마찬가지로 전환 요구를 검출할 때까지 대기하는 상황을 지시한다. 실행 유닛(G10b)이 전환 요구를 검출하지 않은 점에 한해서, 전환 및 비교 유닛(G70)은 상태(G710)로 유지되며, 이는 전이(G830)를 이용하여 도시되어 있다.
상태(G710)에서 실행 유닛(G10b)이 마찬가지로 전환 요구를 검출하면, 전이(G840)가 개시된다. 그에 따라, 전환 및 비교 유닛(G70)은 상태(G730)를 취한다. 이와 같은 상태는, 두 실행 유닛(G10a, G10b)이 전환 요구를 검출했을 때 상황을 지시한다. 상태(G730)에서, 동기화 과정이 개시되는데, 이런 동기화 과정을 이용하여, 2개의 실행 유닛(G10a, G10b)은 뒤에 이어서 비교 모드에서 작동할 수 있도록 상호 간에 동기화된다. 이와 같은 과정 동안, 전환 및 비교 유닛(G70)은 상태(G730)에서 유지되며, 이는 전이(G890)를 이용하여 도시되어 있다.
상태(G700)에서 실행 유닛(G10)에 의해 먼저 전환 요구가 검출된다면, 전이(G860)를 통해 상태(G720)로 전환된다. 그로 인해 상태(G720)는, 실행 유닛(G10b)이 전환 요구를 검출했으며, 실행 유닛(G10a)이 마찬가지로 전환 요구를 검출할 때까지 대기하는 상황을 지시한다. 실행 유닛(G10a)이 전환 요구를 검출하지 않은 경우라면, 전환 및 비교 유닛(G70)은 상태(G720)로 유지되며, 이는 전이(G870)를 이용하여 도시되어 있다. 상태(G720)에서 실행 유닛(G10a)이 마찬가지로 전환 요구를 검출한다면, 전이(G880)가 개시된다. 그에 따라 전환 및 비교 유닛은 상태(G730)를 취한다. 상태(G700)에서 두 실행 유닛(G10a, G10b)이 동시에 전환 요구를 검출한다면, 즉시 상태(G730)로 전이된다. 이러한 경우는 전이(G850)를 나타낸다.
만일 전환 및 비교 유닛(G70)이 상태(G730)에 있다면, 두 실행 유닛(G10a, G10b)은 전환 요구를 검출한 상황이다. 이런 상태에서, 실행 유닛들(G10a, G10b)의 내부 상태들은, 상기한 동기화 과정을 종료한 후에 비교 모드에서 작동할 수 있도록 동기화된다. 상기한 동기화 작업을 종료함과 더불어, 전이(G900)가 개시된다. 이러한 전이는 동기화의 종료를 표시한다. 상태(G740)에서, 실행 유닛들(G10a, G10b)은 비교 모드에서 작동한다. 동기화 작업의 종료는 실행 유닛들(G10a, G10b) 자체에 의해 신호화 될 수 있다. 이는, 두 실행 유닛(G10a, G10b)이 이미 비교 모드에서 작업할 수 있음을 신호화 했을 때 전이(G900)가 개시됨을 의미한다. 상기한 종료는 또한 고정되어 설정된 시간에 걸쳐 신호화 될 수 있다. 이는, 전환 및 비교 유닛(G70)에서 상태(G730)로 유지되는 시간이 고정되어 암호화되는 것을 의미한다. 상기한 시간은, 두 실행 유닛(G10a, G10b)이 자체 동기화 작업을 안전하게 종료 완료하도록 설정된다. 그런 다음 상기한 시간이 경과한 후에, 전이(G900)가 초기화된다. 또 다른 변형예에 따라, 전환 및 비교 유닛(G70)은 실행 유닛들(G10a, G10b)의 상태들을 모니터링하고, 두 실행 유닛(G10a, G10b)이 자체 동기화 작업을 종료 완료했다면, 상기한 상태들 자체를 검출할 수 있다. 그런 다음 검출 후에 전이(G900)가 유도된다.
전환 요구가 검출되지 않는 점에 한해서, 다중 프로세서 시스템(G60)은 전이(G910)에 의해 도시되어 있는 비교 모드로 유지된다. 만일 상태(G740)에서 전환 요구가 검출되면, 전환 및 비교 유닛은 전이(G920)를 통해 상태(G700)로 변경된다. 앞서 기술한 바와 같이, 시스템은 상태(G700)에서 실행 모드로 작동한다. 그런 다음 상태(G740)로부터 상태(G700)로 전이될 시에 프로그램 흐름의 분리는 기술한 방법에서와 같이 실행될 수 있다.
도11은 2개의 실행 유닛(G410a, G410b)뿐 아니라, 내부에 인터럽트 마스킹 레지스터(G430a, G430b) 및 다양한 인터럽트 소스들(G440a 내지 G440n)을 포함하는 2개의 인터럽트 컨트롤러(G420a, G420b)를 구비한 다중 프로세서 시스템(G400)을 도시하고 있다. 또한, 특수 인터럽트 마스킹 레지스터(G460)를 구비한 전환 및 비교 유닛(G450)이 도시되어 있다.
바람직하게는 각각의 실행 유닛(G410a, G410b)은, 실행 모드에서 동시에 2개의 인터럽트를 처리하기 위해 자체의 인터럽트 컨트롤러(G420a, G420b)를 구비한다. 이는 특히 인터럽트 처리가 시스템 성능의 병목현상을 나타내는 시스템에서 바람직하다. 이와 관련하여, 인터럽트 소스들(G440a 내지 G440n)은 바람직하게는 두 인터럽트 컨트롤러(G420a, G420b)에 각각 동시에 접속된다. 이와 같은 접속 방법으로 인해, 추가의 조치 없이 두 실행 유닛(G410a, G410b)에서는 동일한 인터럽트가 야기된다. 실행 모드에서, 인터럽트 컨트롤러(G420a, G420b)는, 대응하는 인터럽트 소스들(G440a 내지 G440n)이 서로 다른 실행 유닛들(G410a, G410b) 상에 각각의 적용에 따라 그에 적합하게 분배되는 방식으로 프로그래밍 된다. 이는 인터럽트 마스킹 레지스터(G430a, G430b)의 적합한 프로그래밍을 이용하여 이루어진다. 마스킹 레지스터는 각각의 인터럽트 소스(G440a 내지 G440n)에 대해 레지스터 내에 비트를 제공한다. 상기한 비트가 설정되면, 인터럽트는 차단되는데, 다시 말해 접속된 실행 유닛(G410a, G410b)으로 전송되지 않는다. 더욱 바람직하게는, 실행 모드에서, 지정된 인터럽트 소스(G440a 내지 G440n)는 정확하게 하나의 실행 유닛(G410a 혹은 G410b)에 의해 처리된다. 바람직하게는 이는 적어도 인터럽트 소스들 중 2~3개의 인터럽트 소스에 적용된다. 그에 따라, 인터럽트 네스팅(인터럽트 처리가 제2 인터럽트에 의해 중단된다) 혹은 인터럽트 펜딩(제2 인터럽트의 처리가 제1 인터럽트의 처리가 종료될 때까지 연장된다)이 개시되지 않으면서, 다수의 인터럽트 소스(G440a 내지 G440n)가 동시에 처리되는 점이 달성될 수 있다.
비교 모드에서는, 인터럽트 컨트롤러(G420a, G420b)가 모든 실행 유닛(G410a, G410b)에서 동시에 동일한 인터럽트를 야기하는 점이 보장되어야 한다. 그렇지 않으면, 비교 모드에 상응하게 에러가 검출될 수도 있다. 이는, 동기화 단계에서 실행 모드로부터 비교 모드로 전환될 시에, 인터럽트 마스킹 레지스터(G430a, G430b)가 동일한 점이 보장되어야 함을 의미한다. 이러한 동기화는 도9에 따라 단계(G660)에서 기술된다. 이런 동기화는, 두 인터럽트 마스킹 레지스터(G430a, G430b)가 그에 상응하게 동일한 값으로 프로그래밍 되면서, 소프트웨어에 의해 실행될 수 있다. 전환 과정을 가속화하기 위해서, 특수 레지스터(G460)를 이용하는 점이 제안된다. 일 실시예에 따라, 상기한 레지스터(G460)는 전환 및 비교 유닛(G460) 내에 배치되지만, 그러나 전환 요구 검출 유닛(G40) 내에, 조합된 전환 요구 검출 유닛 내에, 비교기 내에, 전환 유닛(G80) 내에, 그리고 모든 조합된 컴포넌트들 내에 포함될 수도 있다. 마찬가지로, 상기한 레지스터가 상기한 3 개의 컴포넌트 외부에서 또 다른 적합한 위치에 배치되는 점도 생각해 볼 수 있다. 레지스터(G460)는 비교 모드에서 적용되어야 하는 인터럽트 마스킹을 포함한다. 전환 및 비교 유닛(G450)은 실행 모드로부터 비교 모드로 전환하기 위한 신호를 전환 요구 검출 유닛(G40)으로부터 수신한다. 인터럽트들이 단계(G600)에서 차단된 후에, 인터럽트 컨트롤러(G420a, G420b)의 인터럽트 마스킹 레지스터들(G430a, G430b)은 재프로그래밍 될 수 있다. 이런 프로그래밍은, 전환 신호가 수신되고, 인터럽트 컨트롤러(G420a, G420b)가 차단된 후에, 나머지 동기화 단계들에 병행하여 전환 및 비교 유닛(G450)에 의해 하드웨어를 통해 실행된다. 더욱 바람직하게는, 인터럽트 마스킹 레지스터들(G430a, G430b)이 비교 모드에서 개별적으로 재프로그래밍 되는 것이 아니라, 항상 중앙 레지스터(G460)가 재프로그래밍 된다. 그런 다음 재프로그래밍 된 내용이 동기화 방식으로 하드웨어를 통해 상기 두 인터럽트 마스킹 레지스터(G430a, G430b)에 전달된다. 본 실시예에 따라 인터럽트 마스킹 레지스터에 대해 기술된 방법은, 인터럽트 컨트롤러 내부에 배치된 모든 인터럽트 상태 레지스터에 전달될 수 있다. 물론, 레지스터(G460) 대신에, 가능한 한 빠르게 인터럽트 마스킹 레지스터들(G430a, G430b)로 전달될 수 있도록 하는 또 다른 저장 매체를 이용하는 점도 생각해 볼 수 있다.
도12는 2개의 실행 유닛(G1010a, G1010b), 전환 및 비교 유닛(G1020) 및 3개의 상이한 레지스터 세트(G1040a, G1040b, G1050)를 포함하는 인터럽트 컨트롤러(G1030)를 구비한 다중 프로세서 시스템(G1000)을 도시하고 있다. 전술한 해결 방법에 대한 대체되는 방법으로서, 도12에 도시된 바와 같이 특수 인터럽트 컨트롤 러(G1030)가 제안된다. 상기한 특수 인터럽트 컨트롤러는 실시예에 따라 2개의 실행 유닛(G1010a, G1010b)뿐 아니라 비교 모드와 실행 모드 간에 전환할 수 있는 전환 및 비교 유닛(G1010)을 포함하여 도시되어 있는 다중 프로세서 시스템(G1000) 내에서 이용된다. 이와 관련하여, 실행 모드에서는 레지스터 세트들(G1040a, G1040b)이 이용된다. 이런 경우, 인터럽트 컨트롤러(G1030)는 정확하게 2개의 인터럽트 컨트롤러(G420a, G420b)와 같이 작동한다. 이러한 거동은 도12에 따라 도시 및 기술된다. 이때 레지스터 세트(G1040a)는 실행 유닛(G1010a)에 할당되고, 레지스터 세트(G1040b)는 실행 유닛(G1010b)에 할당된다. 인터럽트 소스들(G1060a 내지 G1060n)은 마스킹을 통해 실행 유닛들(G1010a, G1010b) 상에 그에 적합하게 분배된다. 실행 모드로부터 비교 모드로 전환할 시에, 전환 및 비교 유닛(G1020)은 신호(G1070)를 생성한다. 이 신호는, 비교 모드로 전환이 이루어진 사실이나, 또는 시스템이 현 시점부터 비교 모드에서 작동한다는 사실을 인터럽트 컨트롤러(G1030)에 신호화 한다. 그런 후에 인터럽트 컨트롤러(G1030)는 레지스터 세트(G1050)를 이용한다. 그에 따라, 두 실행 유닛(G1010a, G1010b)에서는 동일한 인터럽트 신호가 생성되는 점이 보장된다. 전환 및 비교 유닛(G1020)이 재차 신호(G1070)를 통해 인터럽트 컨트롤러(G1030)에 신호화 하는 사실로서, 비교 모드로부터 실행 모드로 전환하는 점을 이용하여, 레지스터 세트들(G1040a, G1040b)로 다시 전환된다. 그로 인해 더욱 바람직하게는, 실행 모드에서는 단지 레지스터 세트들(G1040a, G1040b)에 대한 기록만이 허용되며, 비교 모드에서 유보되는 레지스터 세트(G1050)에 대한 기록은 하드웨어에 의해 중단되면서, 대응하는 레지스터 세트 들의 보호가 달성될 수 있다. 이와 동일한 사항은, 비교 모드에서는 단지 레지스터 세트(G1050)에 대한 기록만이 허용되고 레지스터 세트들(G1040a, G1040b)에 대한 기록은 중단되는 또 다른 방향에서도 가능하다.
도13은 비교기(M500, G20)의 가장 간단한 형태를 도시하고 있다. 적어도 2개의 실행 유닛(G10a, G10b)을 구비한 다중 프로세서 시스템(G60)에서 실행 모드와 비교 모드 간에 전환을 시키는 본질적인 컴포넌트는 비교기(M500)이다. 이 비교기는 도13에 가장 간단한 형태로 도시되어 있다. 비교 컴포넌트(M500)는 2개의 입력 신호(M510 및 M511)를 수신하여, 그 동일성에 대해, 본 실시예에 설명되는 문맥에 따라서는 바람직하게는 비트에 따른 동일성의 의미에서 그 신호들을 비교한다. 동일한 경우, 입력 신호들(M510, M511)의 값은 출력 신호(M520)로 제공되며, 에러 신호(M530)는 비활성화되는데, 다시 말하면, "양호" 상태를 신호화 한다. 만일 상기한 비교 컴포넌트가 비일치성을 검출한다면, 에러 신호(M530)가 활성화된다. 그런 다음 신호(M520)는 선택에 따라 비활성화될 수 있다. 그에 따라 바람직하게는, 에러가 대응하는 시스템으로부터 야기되지 않게 된다("장애 억제"). 다시 말해, 실행 유닛들 외부에 위치하는 다른 컴포넌트들은 잠재적으로 에러가 있는 신호에 의해 손상되지 않는다. 그러나 신호(M520)가 비활성화될 필요가 없는 시스템들도 있다. 이는 예컨대 시스템 층위에서 단지 고장 안전(fail silence)만이 요구되는 경우에 해당한다. 이런 경우 에러 신호는 예컨대 외부를 향해 안내될 수 있다.
상기한 기본 시스템으로부터 출발하여, 다수의 실시예들을 생각해 볼 수 있다. 우선 컴포넌트(M500)는 이른바 TSC 컴포넌트(완전 자체 검증)로서 고안될 수 있다. 이러한 경우 에러 신호(M530)는 적어도 2개의 라인("듀얼 레일") 상에서 외부를 향해 안내되며, 비교 컴포넌트의 각각의 가능한 에러의 경우에 상기한 에러 신호가 정확하게 존재하거나 부정확하지만 검출 가능할 정도로 존재하는 점이 내부 설계 및 에러 검출 조치에 의해 보장된다. 이때 듀얼 레일 신호는 2개의 라인을 이용하는 이진 신호이며, 바람직하게는 그에 따라 두 라인은 에러가 없는 경우에 상호 간에 반전(invert)된다. 본 발명에 따른 시스템을 이용하는 바람직한 변형예는 상기한 TSC 비교기를 이용하는 것에 있다.
제2 실시예들은, 두 입력값(M510, M511; 내지 M610, M611)이 어느 정도의 동기성을 가져야 하는지의 여부에 따라 서로 구분될 수 있다. 이에 가능한 일 실시예는 클록 방식의 동기성(synchronicity)을 특징으로 하는데, 다시 말하면 데이터의 비교는 클록 펄스로 실행될 수 있다.
상기한 실시예와 약간 변경된 실시예는, 입력값들 사이의 위상 변위가 고정될 시에, 동기 지연 부재가 이용됨으로써 제공된다. 상기한 동기 지연 부재는 대응하는 신호들을 예컨대 반정수(half-integral) 혹은 정수의 클록 주기만큼 지연시킨다. 상기한 위상 변위는 공통 원인 에러, 다시 말해, 다수의 처리 유닛을 동시에 유사하게 영향을 줄 수 있는 그러한 에러 원인을 회피하는데 유용하다.
그러므로 도14는 추가의 실시예를 도시한다. 컴포넌트들 및 신호들(M600, M610, M611, M620, M630)은 도13에 따른 대응하는 컴포넌트들 및 신호들(M500, M510, M511, M520, M530)과 동일한 의미를 갖는다. 그에 따라 도14에서는 상기한 컴포넌트들 이외에도 컴포넌트(M640)가 삽입된다. 이 컴포넌트(M640)는 시간상 보 다 이전의 입력값을 위상 변위만큼 지연시킨다. 바람직하게는 상기한 지연 부재는 단지 비교 모드에서 이용될 수 있도록 하기 위해 비교기 내에 배치된다. 대체되거나 보충되는 방법에 따라, 순수 클록 펄스 오프셋 혹은 위상 변위로서 표현되지 않는 상기한 비동기성을 마찬가지로 허용하기 위해, 중간 버퍼(M650, M651)가 입력 체인 내에 위치할 수 있다. 바람직하게는 상기한 중간 버퍼는 FIFO 메모리(선입선출 메모리)로서 고안된다. 상기한 메모리는 입력장치 및 출력장치를 구비하며, 다수의 메모리 단어를 저장할 수 있다. 유입 메모리 단어는 자신의 위치에 새로운 메모리 단어가 유입될 시에 변위된다. (버퍼 깊이의) 마지막 위치 이후에, 메모리 단어는 "메모리 외부로" 변위된다. 상기한 버퍼가 존재한다면, 비동기성은 버퍼의 최대 깊이까지 허용될 수 있다. 이러한 경우, 버퍼가 오버플로 된다면, 에러 신호가 출력되어야 한다.
또한, 비교기와 관련하여, 신호(M520 혹은 M620)가 생성되는 방법에 따라 실시예들이 구분될 수 있다. 바람직한 실시예에 따라, 입력 신호들(M510, M511; 내지 M610, M611)은 출력값으로 변경되고, 접속은 스위치를 통해 차단될 수 있다. 이와 같은 실시예의 특별한 장점은, 실행 모드와 가능한 다양한 비교 모드들 간에 전환을 위해 상기한 스위치가 이용될 수 있다는 점에 있다. 대체되는 방법에 따라, 신호들은 또한 비교기 내부의 중간 메모리들로부터 생성될 수 있다.
최종 실시예들은, 비교기에 존재하는 입력값의 수와 비교기가 반응하는 방법에 따라 구분될 수 있다. 입력값이 3개일 경우, 다수결 방법, 다시 말해 3개의 신호 모두의 비교 혹은 단지 2개만의 신호의 비교가 실행될 수 있다. 입력값이 4개 혹은 그 이상일 때, 그에 상응하게 다수의 실시예들을 생각해 볼 수 있다. 가능한 실시예들에 대한 상세한 설명은 도20의 설명으로부터 제시된다.
실시예의 정확한 선택은 바람직하게는 전체 시스템의 다양한 작동 모드와 결부된다. 다시 말해, 다수의 서로 다른 성능 혹은 비교 모드가 존재한다면, 상기한 모드들은 바람직하게는 비교기의 대응하는 모드와 결부된다.
본 발명의 몇 가지 관점에 따라, 비교기 혹은 일반적인 보팅(voting)/처리/정렬 부재를 비활성화하거나 혹은 수동화(passive) 시키는 점이 필요하거나 바람직하다(이하에서는 개략화 관점에서 항상 비교기로서 지시된다). 이를 위해 다수의 가능한 방법이 제공된다. 일측에서는 비교기가 활성화되거나 비활성화되도록 하는데 이용되는 신호를 비교기로 공급할 수 있다. 이를 위해 비교기 내에는 비교기의 활성화 내지 비활성화를 실행할 수 있는 추가의 논리가 삽입된다. 또 다른 가능한 방법은, 비교기에 비교할 데이터를 공급하지 않는 것에 있다. 세 번째 가능한 방법은, 시스템 층위에서 비교기의 에러 신호를 무시하는 것에 있다. 또한, 에러 신호 자체를 차단할 수도 있다. 모든 가능한 방법에 대해 공통적인 측면에서, 잠재적으로 비교되는 2개 혹은 그 이상의 데이터가 서로 상이하다는 사실은 시스템에 어떠한 영향도 주지 못한다. 이런 경우라면, 비교기는 수동적인 것으로서, 혹은 비활성화된 것으로서 고려된다.
또한, 비교기와 결부한 전환기의 구현, 다시 말해 전환 및 비교 유닛(G70)의 구현이 고려된다. 이러한 구현은 특히, 상기한 전환기 및 비교기가 칩 내부에 실행 유닛들(G10a, G10b)과 함께 고안될 때 바람직하다.
비교기 및 전환기 컴포넌트들을 통합함으로써, 칩 내부에 구현할 시에 단지 매우 작은 하드웨어 오버헤드만이 제공될 뿐이다. 그러므로 구현의 변형예는 상기한 두 부재들을 하나의 컴포넌트 내에 통합하는 것에 있다. 이런 컴포넌트는 적어도 입력 신호들(출력 실행 유닛 1, 출력 실행 유닛 2), 적어도 출력 신호(출력값 1, 출력값 2), 논리 출력 신호 "총 출력값"(물리적으로 출력값 1 혹은 출력값 2와 일치할 수 있다) 및 비교기를 포함한다. 상기한 컴포넌트는 모드를 전환하고, 실행 모드에서 모든 신호를 전송하며, 비교 모드에서 다수의 신호를 비교하고, 경우에 따라 하나의 신호를 전송할 수 있다. 추가로 또 다른 입력 신호 및 출력 신호들이 바람직할 수 있다: 검출된 에러를 신호화 하기 위한 에러 신호, 상기한 컴포넌트가 위치하는 모드를 신호화 하기 위한 모드 신호, 그리고 컴포넌트로부터 그리고 그 컴포넌트로 전송되는 제어 신호들.
바람직한 실시예에 따라, 2개 혹은 그 이상의 실행 유닛이 실행 모드에서 마스터로서 프로세서 내부의 버스에 접속된다. 비교 유닛은 비활성화되거나, 혹은 실행 유닛들의 거동이 상이할 시에 생각할 수 있는 비교 모드들 중 어느 하나의 비교 모드에서 생성되는 에러 신호가 표시된다. 이는, 전환 및 비교 유닛이 소프트웨어에 대해 투명함(transparency)을 의미한다. 고려되는 비교 모드에서, 비교될 물리적 실행 유닛들은 버스에서 논리적 실행 유닛으로서 처리되는데, 다시 말해 버스에는 단지 하나의 마스터만이 생성된다. 비교기의 에러 신호가 활성화된다. 이를 위해 전환 및 비교 유닛은 하나의 실행 유닛까지 모든 실행 유닛을 스위치를 통해 프로세서 내부의 버스로부터 분리하고, 일측의 논리적 실행 유닛의 입력값을 복 제하며, 상기한 입력값을 비교 모드에 관여하는 모든 실행 유닛들이 사용할 수 있도록 한다. 버스 상에 기록할 시에, 출력값들은 비교 유닛 내에서 비교되며, 동일할 시에 그에 따른 데이터는 일측에 존재하는 버스에 대한 접근을 통해 기록된다.
도15 및 도16은 바람직한 컴포넌트(M700)(전환 및 비교 유닛, G70에 상응함)의 기본적인 거동을 도시하고 있다. 개략화의 관점에서 상기한 도는 단지 2개의 실행 유닛에 대해서만 도시되어 있다. 이와 관련하여 도15는 비교 모드에서 컴포넌트의 상태를 도시하고, 도16은 실행 모드에서 컴포넌트의 상태를 도시하고 있다. 상기한 모드에서 서로 다른 스위치 위치들은 M700 내부에서 제어 회로(M760)에 의해 실현된다. 두 실행 유닛(M730, M731)은 우선적으로, 도16에 도시된 바와 같이, 스위치(M750 및 M751)가 폐쇄 상태일 때, 실행 모드에서 데이터 및 주소 버스(M710) 상에 기록할 수 있다. 이에 대한 전제 조건은, 경우에 따른 기록 충돌이 버스 프로토콜을 통해, 혹은 도시되지 않은 추가의 컴포넌트들을 통해 해결되는 것에 있다. 비교 모드에서, 거동은 적어도 논리적 관점에서 또 다른 거동을 나타낸다. 이런 경우, 도15에 도시된 바와 같이, 스위치(M750, M751)는 개방되고, 그에 따라 직접적인 접근 가능성은 차단된다. 그러나 도16과 반대로, 도15에서는 스위치(M752, M753)가 폐쇄된다. 실행 유닛들(M730, M731)의 신호들(M740, M741)은 비교 컴포넌트(M720)에 전달된다. 이 비교 컴포넌트는, 적어도 도13에 도시된 바와 같이 구성되지만, 도14에 도시된 바와 같이 확장부 역시 포함할 수 있다. 그러나 비교 컴포넌트(M720)의 에러 신호 혹은 추가의 신호에 대한 내용은 도15 및 도16에 도시되지 않았다. 두 신호가 일치한다면, 스위치(M754)가 폐쇄되며, 두 일치하는 신호 중 하나의 신호가 주소/데이터 버스(M710)로 전송된다. 이를 위해 전체적으로 전환 및 비교 유닛(M700)은 스위치(M750 내지 M754)에 영향을 줄 수 있어야 한다. 각각의 스위치 위치는 모드 및 에러 검출에 따른다. 그에 따라, 스위치(M754)가 항시 폐쇄되고 적합한 시스템 반응은 에러 신호에 의해 생성되는 변형예 역시 충족된다.
도17은 전환 및 비교 유닛의 일 변형예를 도시하고 있다. 이미 단지 2개의 실행 유닛(G10a, G10b)을 구비한 단순한 시스템에 대해 전환 및 비교 유닛을 구현하는 다수의 변형예가 제시되었다. 특히 비교기 내에 버퍼가 이용되지 않을 때 바람직한 추가의 변형예는 도17에 도시되어 있다. 도15 및 도16에서와 같이, 실행 유닛들의 신호(M840, M841)가 제공된다. 실행 유닛들은 도17에는 도시되어 있지 않다. 본 발명에 따른 컴포넌트(M800) 내에는 컴포넌트의 모드를 사전 설정하는 모드 논리(M810)가 제공된다. 실행 모드에서, 모드 논리는 스위치(M831)를 폐쇄하고, 비교 모드에서는 개방한다. 또한, 모드 논리는 모드 신호를 비교기(M820)에 공급한다. 비교기(M820)는 상기한 구현에서 항시 비교하지만, 스위치(M830)를 제어하기 위해, 비교의 결과 및 모드 신호를 이용한다. 실행 모드에서 스위치는 항상 폐쇄되고, 비교 모드에서는 항상 에러가 존재하지 않을 때에만 폐쇄된다. 물론, 일 회 에러가 확인되었다면, 스위치는 대응하는 재설정이 이루어질 때까지 개방된 상태로 유지될 수 있다.
도18은 전환 및 비교 유닛의 추가의 일 실시예를 도시하고 있다. 이와 같은 대체되는 실시예는 다수의 스위치를 이용하긴 하지만, 이를 위해 실행 모드에서 비 교기를 비활성 상태로 유지하며, 그로 인해 더욱 용이하게 비동기성을 처리할 수 있다. 또한, 실행 유닛들의 두 신호(M940, M941)가 제공된다. 실행 유닛들은 도18에 도시되어 있지 않다. 본 발명에 따른 컴포넌트(M900) 내에는 컴포넌트의 모드를 사전 설정하는 모드 논리(M910)가 제공된다. 실행 모드에서, 모드 논리는 스위치(M931)를 폐쇄하고, 스위치(M932, M933)를 개방한다. 그에 따라, 비교 컴포넌트(M920)는 상기한 실행 모드에서 데이터를 공급받지 못한다. 이는 비동기 시에, 더욱 긴 버퍼 시간을 허용하거나, 구현될 시에는 더욱 낮은 버퍼 깊이를 허용한다. 실행 모드에서, 스위치(M930)는 항상 폐쇄된다. 비교 모드에서 컴포넌트(M910)는 스위치(M932, M933)를 폐쇄하며, 스위치(M931)를 개방함으로써 버스에 대한 직접적인 접근을 차단한다. 선택에 따라, 모드 논리(M910)는 비교기(M920)에 모드를 여전히 전달할 수 있다. 비교 모드에서, 에러가 없는 경우 스위치(M930)는 폐쇄된다. 에러가 있는 경우, 비교 컴포넌트(M920)는 스위치(M930)를 개방함으로써 버스로 향하는 신호(M940)의 전송을 차단한다.
도시한 도면에 따라 비용 없이, 모드 혹은 에러 신호를 외부 방향으로 전달할 수 있다. 또한, 특히 내부 모드 상태를 생성하기 위해 완벽하게 추가의 신호를 컴포넌트에 전달할 수도 있다.
요컨대 상기한 컴포넌트의 바람직한 구현은, 출력 신호들을 버스(예: 주소/데이터 버스)에 기록할 수 있는 다수의 처리 유닛이 제공되는 것을 특징으로 한다. 이에 본질적인 점은, 컴포넌트들이 실행 유닛들의 출력 신호들 중 적어도 2개의 출력 신호를 처리할 수 있으며(예: 비교, 혹은 경우에 따라 보팅 또는 정렬), 그리고 컴포넌트가, 직접적인 버스 접근들 중 적어도 하나의 버스 접근이 차단되도록 하는 적어도 하나의 스위치에 영향을 미칠 수 있다는 것에 있다. 이런 사항이 특히 유용한 경우는 실행 유닛들이 컴퓨터의 핵심 컴포넌트일 때이다. 또한, 바람직하게는 영향을 줄 수 있는 스위치의 상태가 계산 유닛의 작동 모드를 특징짓는다.
시스템 특성들, 특히 가능한 비교 모드들은 특히 컴포넌트가 신호를 주소-데이터 버스에 인가할 수 있을 때 양호하게 변환된다. 더욱 바람직하게는 실행 유닛들 중 일측의 실행 유닛의 출력 신호들 중 하나의 출력 신호가 관통 접속된다. 대체되는 방법에 따라, 상기한 상황은 다양한 실행 유닛들의 다양한 출력 신호들을 처리함으로써 달성된다.
예컨대 이미 도17 및 도18에 대한 설명에서 명확하게 명시한 바와 같이, 시스템 내에서, 그리고 (컴포넌트들의 각각의 분류에 따라) 컴포넌트들 중 어느 하나의 컴포넌트에서 모드 정보가 식별될 수 있다. 이와 같은 모드 정보는 각각의 구현에 따라 부분 컴포넌트에 명확하게 존재할 수 있다. 바람직한 구현에 따라서, 상기한 신호는 또한 컴포넌트로부터 유도되어 나와 시스템의 또 다른 부재를 위해 가용될 수 있다.
일반적으로 본 발명에 따른 거동은 도21에 따라 설명된다. 신호들 및 컴포넌트들(N100, N110, N120, N130, N140, N141, N142, N143, N14n, N160, N161, N162, N163, N16n)은 도20에서와 동일한 의미를 갖는다. 그 외에도, 모드 신호(N150) 및 에러 신호(N170)가 도21에 도시되어 있다. 선택적인 에러 신호는 에러 신호를 수집하는 에러 전환 논리(N130)에 의해 생성되어, 개별 에러 신호들을 직접적으로 전달하거나, 개별 에러 신호에 포함된 에러 정보를 집중시킨다. 모드 신호(N150)는 선택에 따른 것이며, 상기한 컴포넌트 외부에서 이루어지는 상기한 모드 신호의 이용은 많은 관점에서 바람직할 수 있다. 전환 논리(N110)(다시 말해 도10의 설명에서 기술한 함수)와 처리 논리(다시 말해 출력 신호 당, 즉 함수값 당 비교 연산의 결정)의 정보의 조합은 모드 정보이며, 이 모드 정보는 모드를 결정한다. 물론 이와 같은 정보는 일반적으로 다중값인데, 다시 말해 논리 비트를 통해 표현될 뿐 아니라 다른 방법으로도 표현될 수 있다. 이론적으로 생각할 수 있는 모든 모드가 지정된 구현에서 중요한 것이 아니므로, 바람직하게는 허용되는 모드의 수가 제한된다. 그에 따라 모드 신호는 관련 모드 정보를 외부로 전달한다. HW 구현은 바람직하게는, 외부에서 확인할 수 있는 모드 신호가 구성될 수 있도록 제공된다. 바람직하게는 마찬가지로 처리 논리 및 전환 논리가 구성 가능하게 형성된다. 바람직하게는 상기한 구성들은 상호 간에 부합하게 조정된다. 대체되는 방법에 따라, 단순하게 혹은 보충되는 방식으로 외부로 전달되는 모드 신호가 변경될 수도 있다. 이는 특히 이중 구성에서 장점을 제공한다.
바람직하게는 상기한 모드 신호는 보호된다. 이중 시스템 내 구현은, 예컨대 도17에 도시한 구현을 바탕으로 도19에 도시되어 있다. 도19에서는, 신호(M850)가 전환 및 비교 유닛으로부터 유도되어 나온다. 이중 시스템에서, 상기한 정보는 논리적으로 비트를 통해 표현될 수 있다. 그런 다음 보호가 바람직하게는 듀얼-레일 신호를 통해 표현될 수 있다. 일반적으로 신호는 선택적으로 반전되는 복제를 통해 보호될 수 있다. 대체되는 방법에 따라, 바람직하게는 내부에서 자체적으로 생성되거나, CRC(순환 중복 검사) 혹은 ECC(에러 정정 코드)를 이용하는 패리티가 생성될 수 있다.
모드 신호는 컴포넌트 외부에서 이용될 수 있다. 상기 모드 신호는 우선 운영 시스템의 자기 모니터링을 위해 이용될 수 있다. 또한, 모드 신호는, SW 관점에서 전환을 결정하고, 시스템이 어떤 모드에 위치하는지도 알고 있어야 하며, 그 시스템이 그 모드로 전환해야 한다. 그러므로 상기한 모드 신호의 검사는 보호를 위해 이용될 수 있다. 이는 우선 직접적으로 이루어질 수 있다. 그러나 대체되는 가능한 방법에 따라서도, 타이머나 혹은 기타 "독립된" 유닛들을 통해 상기한 모드 신호를 이용하여 운영 시스템에서의 질의에 대한 개연성 검사를 실시할 수 있다.
일반적으로 상기한 모드 신호는 선택에 따라 μC(혹은 일반적인 계산 유닛)의 또 다른 데이터 수신장치(data sink)에서도 이용될 수 있다. 예컨대 MPU(메모리 보호 유닛)은, (소정의 실행 유닛들에 의한) 소정의 메모리 접근을 단지 소정의 모드에서만 허용하는 방식으로 프로그래밍 될 수 있다. 이와 관련하여, MPU는, 예컨대 소정의 프로그램 부분에 대해 소정의 주소 공간에 대한 접근을 억제하면서, 단지 데이터/주소 버스에 대해 허용된 접근만이 실행되는 점을 보장할 수 있는 유닛이다. MPU에 모드 신호를 전달하고, 상기한 MPU를 그에 상응하게 구성 및 프로그래밍하며, 상기한 구성 데이터 및 모드 신호를 평가함으로써 추가의 보호가 이루어질 수 있다. 이는 상황에 따라 모드 신호가 이미 검사를 위한 충분한 정보인 경우 심지어 프로그래밍을 간소화한다. 그런 다음에 μC의 초기화 시간에 대해서는 준정적 프로그래밍만으로도 충분하다. 그에 상응하는 사항은 주변 유닛들에 대해 서도 적용될 수 있다. 또한, 본 실시예에 따라, 대응하는 주변 엘리먼트들에 대한 접근은 단지 소정의 모드에서만 허용되는 적용이 이루어질 수 있다. 주변 엘리먼트에 모드 신호를 전달하고, 주변 엘리먼트를 그에 상응하게 구성 및 프로그래밍하며, 상기한 구성 데이터 및 모드 신호를 평가함으로써, 추가의 보호가 이루어질 수 있다. 이는 상황에 따라 모드 신호가 이미 검사를 위한 충분한 정보인 경우 심지어 프로그래밍을 간소화한다. 그런 다음에 μC의 초기화 시간에 대해서는 준정적 프로그래밍만으로도 충분하다. 유사하게 상기한 모드 신호의 평가는 또한 인터럽트 컨트롤러에서 이용될 수 있다. 그런 다음 그와 같은 모니터링은 안전 컨셉의 기초 혹은 그 본질적인 요소를 형성할 수 있다. 적합한 고안 및 SW 구조화를 통해, 상기한 모드 신호에 대해 고려되는 적용에서 모든 에러 등급에 대한 안전 컨셉을 구축할 수 있다. 이는 특히 모드 신호가 전술한 바와 같이 적합한 형태로 본질적으로 안전할 때 바람직하다. 이런 경우 추가로 바람직하게는, 고려되는 컴포넌트가, 모드 신호와 자기 자체에 대한 접근 사이에 불일치한 사항을 검출하면, 에러 신호를 전송하거나 차단 경로를 작동시킬 수 있다.
추가의 본질적인 이용 목적은 계산 유닛 외부에서 모드 신호를 평가하는 것에 있다. 직접적인 적용은 감분식 워치도그에서의 평가이다. 상기한 워치도그는 적어도 하나의 (카운터-) 레지스터로 구성된다. 이 레지스터는 마이크로프로세서에 의해 정수값으로 설정될 수 있다. 상기한 레지스터를 설정한 후에, "워치도그"는 자발적으로 레지스터의 값을 고정된 주기에 따라 감분한다. 레지스터의 값이 영(0)이거나, 오버플로가 발생한다면, "워치도그"는 에러 신호를 생성한다. 만일 에러 신호가 생성되어서는 안 된다면, 마이크로프로세서는 레지스터의 값을 적시에 다시 재설정해야 한다. 그로 인해 (한계 내에서) 마이크로프로세서가 소프트웨어를 정확하게 실행하는지 여부가 검사될 수 있다. 만일 마이크로프로세서가 소프트웨어를 더 이상 정확하게 실행하지 않는다면, 이 경우 "워치도그" 역시 더 이상 정확하게 운영되지 않으며, 그로 인해 에러 신호가 "워치도그"에 의해 생성된다는 사실이 가정된다. 하드웨어 및 데이터 구조의 집적성이 비교 모드에서 신뢰되는 방식으로 검사될 수 있다. 그러나 이를 위해 마이크로프로세서가 정기적으로 다시 상기한 비교 모드로 재전환되는 점이 보장되어야 한다. 그러므로 본 실시예에서 기술한 "워치도그"의 태스크는, 워치도그 자신이 정의된 시간 간격 내에 더 이상 재설정되지 않을 때뿐 아니라, 마이크로프로세서가 정의된 시간 간격 내에 더 이상 정의된 비교 모드로 재전환되지 않을 때에도 에러 신호를 생성하는 것에 있다. 예컨대 "워치도그"는 오로지 모드 신호가 계산 유닛의 정의된 비교 모드를 표시할 때에만 재설정될 수 있다. 대체되거나 보충되는 방법에 따라, "워치도그"의 레지스터 내 값은, 마이크로프로세서에서 소정의 인터럽트가 야기될 때 비로소 감분된다. 이를 위해, μC의 외부 인터럽트 신호들은 워치도그에 접속되어야 한다. 워치도그 내에는, μC를 정의된 비교 모드로 전환하는 인터럽트 정보가 저장된다. 상기한 인터럽트가 나타나면 곧바로 워치도그는 "태스크 이행"에 들어간다. 워치도그는 올바른 모드 신호가 존재함으로써 재설정된다.
대체로, 특히 안전 컨셉에 적용할 시에, μC 외부의 소스에서 모드 신호를 평가하는 점이 유용하다. 본 발명에 따라 기술한 바와 같이 컴퓨터상에서 소프트 웨어의 올바른 흐름의 보호에서 본질적인 관점은 허용되는 다양한 모드 간에 올바로 전환하는 것에 있다. 우선은 전환성 자체를 검사하여야 하며, 바람직하게는 여전히 올바른 전환이 이루어지는지를 검사해야 한다. 앞서 기술한 바와 같이, 특수 모드가 정기적으로 지정되는 점에 대해서도 관여할 수 있다. 상기한 방법은 항상 모드 신호 자체가 본질적으로 안전하게 구성될 때 특히 바람직하다. 그리고 ASIC나 혹은 기타 μC에 모드 신호를 전송할 수 있다. 이러한 점은 상기한 모드 신호를 이용하면서 타이머 및 간단한 논리를 통해 적어도 하기의 관점들이 검사될 수 있다:
계산 유닛이 충분한 빈도로(예컨대 늦어도 매 100μs마다) 하나 혹은 그 이상의 정의된 모드로 전환되는가?
일측의 모드로 전환될 시에 항상 소정의 신호가 출력되는가?
계산 유닛이 정기적으로 일측의 모드로부터 타측의 모드로 전환되는가?
모드의 시퀀스에 대해 소정의 간단한 패턴이 유효한가?
일반적인 시간별 패턴이 유효한가? (예: 평균적으로 모드 1에서 < 70%, 그리고 모드 2에서 < 50%)
모드 신호의 시간별 논리 특성들의 임의의 조합이 이루어지는가?
경우에 따라 상기한 임의의 조합에 추가 신호들의 평가가 보충되는가?
이와 관련하여 도22는 그 외의 제안에 대한 기본 구성을 도시하고 있다. 상기한 파트너-ASIC 혹은 파트너-μC와 본 발명을 이용한 고려되는 계산 유닛 사이에서 특수한 질의 응답 주기가 실행된다. N300)은 상기한 신호를 송출할 수 있는 계 산 유닛이다. 이는 예컨대 다수의 실행 유닛과 상기한 모드 신호를 생성할 수 있는 기타 컴포넌트를 구비한 μC일 수 있다. 예컨대 상기한 기타 컴포넌트는 도19 혹은 도21에서와 같이 실현될 수 있다. N300은 상기한 신호(N310)를 파트너(예: 기타 계산 유닛, 기타 μC 혹은 ASIC)(N330)에 전달한다. 이 파트너는 상기 신호(N320)에 대해 N300)에 질의하며, N300은 N321에 대해 응답을 해야 한다. 이러한 질의는 정의된 시간 간격 이내에 N321에 대한 올바른 결과가 N300에 의해 제공되어야 하는 계산 태스크일 수 있다. N330은 N300과는 별도로 상기한 결과의 정확성에 대해 검사할 수 있다. 예컨대 결과들은 N330 내에 저장되거나, 혹은 N330은 상기 결과들 자체를 계산할 수 있다. 올바르지 못한 값을 검출할 시에 에러가 검출된다. 제안한 질의 응답 통신에 대한 특징은, 응답에 병행하여 모드 신호가 관찰된다는 점에 있다. 바람직하게는, N300이 응답을 하기 위해 소정의 모드를 취할 수 있는 방식으로, 질의가 설정되어야 한다.
그에 따라, 모든 모드 전환이 효과적인지, 그리고 프로그램 흐름에 제공되는 모드 전환이 실행되는지의 여부가 검사될 수 있다. 특히 시스템을 초기화할 시에, 그리고 시스템이 작동하는 중에, 상기한 검사 사항은 안전 컨셉의 본질적인 요소로서 이용될 수 있다.
이러한 생각의 또 다른 적용은 액추에이터 제어 회로에서 모드 신호를 평가하는 것에 있다. 오늘날 자동차 분야에서 이른바 지능형 액추에이터가 수많은 방법으로 적용되고 있다. 그에 따라, 충분히, 액추에이터 제어 명령어를 수신하고 그런 다음 상기한 제어 명령어가 실행될 수 있도록 액추에이터를 제어할 수 있는 그런 최소의 주변 전자장치를 구비한 액추에이터가 제공된다.
기본적인 사고(思考)는 도23에 도시되어 있다. 본 발명을 이용하는 계산 유닛(N400)은 (지능형) 액추에이터 혹은 액추에이터 제어 회로(N430)에 결선(N420)을 통해 제어 명령어를 공급한다. 병행하여 계산 유닛은 모드 신호를 결선(N410)을 통해 상기한 액추에이터에 공급한다. 액추에이터(N430)는 모드 신호에 따라, 제어가 허용되는지 여부를 검사하고, 선택에 따라 신호(N400)를 통해 에러 상태를 피드백한다. 제어 회로에 에러가 있다면, 액추에이터는 시스템에서 비임계인 고장 안전 상태를 지정한다.

Claims (24)

  1. 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템에서 전환을 위한 방법이며, 적어도 2개의 작동 모드 사이를 전환시키도록 구성된 전환 수단이 포함되며, 제1 작동 모드는 비교 모드에 상응하고 제2 작동 모드는 실행 모드에 상응하는 전환 방법에 있어서,
    하나의 인터럽트 컨트롤러가 배치되며, 또한 적어도 세 개의 메모리 영역이 제공되며, 적어도 하나의 제1 실행 유닛에는 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되고 적어도 두 개의 실행 유닛들에는 적어도 하나의 제3 메모리 영역이 할당될 수 있도록 메모리 영역에 대한 접근이 이루어지는 것을 특징으로 하는 전환 방법.
  2. 제1항에 있어서, 실행 모드에서 각각의 실행 유닛에는 각각 하나의 메모리 영역이 할당되며, 상기 메모리 영역에는 정확히 하나의 인터럽트 컨트롤러가 할당되는 것을 특징으로 하는 전환 방법.
  3. 제1항 또는 제2항에 있어서, 실행 모드에서 각각의 실행 유닛에는 각각 하나의 메모리 영역이 할당되며, 모든 메모리 영역에는 정확히 하나의 인터럽트 컨트롤러가 할당되는 것을 특징으로 하는 전환 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 모든 인터럽트 컨트롤러들이 인터럽트 컨트롤러에 할당되는 것을 특징으로 하는 전환 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 실행 모드에서 적어도 하나의 제1 실행 유닛에는 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되는 것을 특징으로 하는 전환 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 비교 모드에서 적어도 하나의 제3 메모리 영역은 적어도 두 개의 실행 유닛에 할당되는 것을 특징으로 하는 전환 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 실행 모드에서 각각의 실행 유닛에 하나의 메모리 영역이 할당되는 할당만이 활성화되는 것을 특징으로 하는 전환 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 비교 모드에서 적어도 두 개의 실행 유닛에 적어도 세 개의 메모리 영역이 할당되는 할당만이 활성화되는 것을 특징으로 하는 전환 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 활성화된 할당들 중 하나에 의해 할당된 정확히 하나의 메모리 영역이 각각의 실행 유닛에 대해 존재하도록 각각의 모드에서 단지 정확히 하나의 스키마만이 활성화되는 것을 특징으로 하는 전환 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 비교 모드로부터 실행 모드로의 전환 시에 활성화 할당들에 대한 스키마가 변경되는 것을 특징으로 하는 전환 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 할당된 메모리 영역의 기록이 각각의 모드에서는 허용되지 않는 것을 특징으로 하는 전환 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 할당된 메모리 영역의 기록은 할당이 활성화된 모드에서만 허용되는 것을 특징으로 하는 전환 방법.
  13. 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템에서 전환을 위한 장치이며, 적어도 2개의 작동 모드 사이를 전환시키도록 구성된 전환 수단이 포함되며, 제1 작동 모드는 비교 모드에 상응하고 제2 작동 모드는 실행 모드에 상응하는 전환 장치에 있어서,
    적어도 세 개의 메모리 영역이 할당된 하나의 인터럽트 컨트롤러가 포함되며, 적어도 하나의 제1 실행 유닛에는 적어도 하나의 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되고 적어도 두 개의 실행 유닛들에는 적어도 하나의 제3 메모리 영역이 할당될 수 있는 것을 특징으로 하는 전환 장치.
  14. 제13항에 있어서, 실행 모드에서 각각의 실행 유닛에는 각각 하나의 메모리 영역이 할당되며, 정확히 하나의 인터럽트 컨트롤러가 제공되는 것을 특징으로 하는 전환 장치.
  15. 제13항 또는 제14항에 있어서, 모든 메모리 영역들이 인터럽트 컨트롤러에 할당되는 것을 특징으로 하는 전환 장치.
  16. 제13항 내지 제15항 중 어느 한 항에 있어서, 실행 모드에서 적어도 하나의 제1 실행 유닛에는 제1 메모리 영역이 할당되고 적어도 하나의 제2 실행 유닛에는 제2 메모리 영역이 할당되는 것을 특징으로 하는 전환 장치.
  17. 제13항 내지 제16항 중 어느 한 항에 있어서, 비교 모드에서 적어도 하나의 제3 메모리 영역은 적어도 두 개의 실행 유닛에 할당되는 것을 특징으로 하는 전환 장치.
  18. 제13항 내지 제17항 중 어느 한 항에 있어서, 메모리 영역이 인터럽트 컨트 롤러 내에 배치되는 것을 특징으로 하는 전환 장치.
  19. 제13항 내지 제18항 중 어느 한 항에 있어서, 실행 모드에서 각각의 실행 유닛에 하나의 메모리 영역이 할당되는 할당만이 활성화되는 것을 특징으로 하는 전환 장치.
  20. 제13항 내지 제19항 중 어느 한 항에 있어서, 실행 모드에서 실행 유닛에 하나의 메모리 영역이 할당되는 할당만이 활성화되는 것을 특징으로 하는 전환 장치.
  21. 제13항 내지 제20항 중 어느 한 항에 있어서, 비교 모드에서 적어도 두 개의 실행 유닛에 적어도 세 개의 메모리 영역이 할당되는 할당만이 활성화되는 것을 특징으로 하는 전환 장치.
  22. 제13항 내지 제21항 중 어느 한 항에 있어서, 활성화된 할당들 중 하나에 의해 할당된 정확히 하나의 메모리 영역이 각각의 실행 유닛에 대해 존재하도록 각각의 모드에서 단지 정확히 하나의 스키마만이 활성화되는 것을 특징으로 하는 전환 장치.
  23. 제13항 내지 제22항 중 어느 한 항에 있어서, 비교 모드로부터 실행 모드로의 전환 시에 활성화 할당들에 대한 스키마가 변경되는 것을 특징으로 하는 전환 장치.
  24. 제13항 내지 제23항 중 어느 한 항에 있어서, 비교 모드로부터 실행 모드로의 전환 시에 활성화된 할당들의 변경이 전환기의 작동에 의해 이루어지는 것을 특징으로 하는 전환 장치.
KR1020077009143A 2004-10-25 2005-10-25 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서전환을 위한 방법 및 장치 KR101052994B1 (ko)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
DE102004051992.7 2004-10-25
DE200410051937 DE102004051937A1 (de) 2004-10-25 2004-10-25 Verfahren und Vorrichtung zur Synchronisierung in einem Mehrprozessorsystem
DE102004051950.1 2004-10-25
DE102004051952.8 2004-10-25
DE102004051964.1 2004-10-25
DE102004051937.4 2004-10-25
DE200410051950 DE102004051950A1 (de) 2004-10-25 2004-10-25 Verfahren und Vorrichtung zur Taktumschaltung bei einem Mehrprozessorsystem
DE200410051964 DE102004051964A1 (de) 2004-10-25 2004-10-25 Verfahren und Vorrichtung zur Überwachung einer Speichereinheit in einem Mehrprozessorsystem
DE200410051952 DE102004051952A1 (de) 2004-10-25 2004-10-25 Verfahren zur Datenverteilung und Datenverteilungseinheit in einem Mehrprozessorsystem
DE200410051992 DE102004051992A1 (de) 2004-10-25 2004-10-25 Verfahren und Vorrichtung zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Mehrprozessorsystems
DE200510037220 DE102005037220A1 (de) 2005-08-08 2005-08-08 Verfahren und Vorrichtung zur Umschaltung bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten
DE102005037220.1 2005-08-08
PCT/EP2005/055500 WO2006045775A1 (de) 2004-10-25 2005-10-25 Verfahren und vorrichtung zur umschaltung bei einem rechnersystem mit wenigstens zwei ausführungseinheiten

Publications (2)

Publication Number Publication Date
KR20070083758A true KR20070083758A (ko) 2007-08-24
KR101052994B1 KR101052994B1 (ko) 2011-07-29

Family

ID=35507811

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077009143A KR101052994B1 (ko) 2004-10-25 2005-10-25 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서전환을 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US8090983B2 (ko)
EP (1) EP1820093B1 (ko)
JP (1) JP5053854B2 (ko)
KR (1) KR101052994B1 (ko)
CN (1) CN101048730A (ko)
WO (1) WO2006045775A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005037248A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Steuerung eines Speicherzugriffs bei einem Rechnersystem mit wenigsterns zwei Ausführungseinheiten
DE102005061394A1 (de) * 2005-12-22 2007-06-28 Robert Bosch Gmbh Fehlertolerantes Prozessorsystem
DE102006048169A1 (de) * 2006-10-10 2008-04-17 Robert Bosch Gmbh Verfahren zur Überwachung einer Funktionsfähigkeit einer Steuerung
JP2010198131A (ja) 2009-02-23 2010-09-09 Renesas Electronics Corp プロセッサシステム、及びプロセッサシステムの動作モード切り替え方法
JP5796311B2 (ja) 2011-03-15 2015-10-21 オムロン株式会社 制御装置およびシステムプログラム
KR101867336B1 (ko) * 2011-07-11 2018-06-15 삼성전자주식회사 다중 프로세서를 지원하는 인터럽트 발생을 위한 장치 및 방법
US9111998B2 (en) 2012-04-04 2015-08-18 Samsung Electronics Co., Ltd Multi-level stack having multi-level contact and method
US9287162B2 (en) 2013-01-10 2016-03-15 Samsung Austin Semiconductor, L.P. Forming vias and trenches for self-aligned contacts in a semiconductor structure
DE102016215345A1 (de) * 2016-08-17 2018-02-22 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur redundanten Datenverarbeitung
JP2019061392A (ja) 2017-09-26 2019-04-18 ルネサスエレクトロニクス株式会社 マイクロコントローラ及びマイクロコントローラの制御方法
US20230098640A1 (en) * 2021-09-26 2023-03-30 Ceremorphic, Inc. Core Processor and Redundant Branch Processor with Control Flow Attack Detection
EP4266175A1 (de) 2022-04-22 2023-10-25 Siemens Mobility GmbH Verfahren zum rechnergestützten betreiben einer speichereinheit und ausführen von applikationsprogrammen mit speicherüberprüfung auf speicherfehler

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61101868A (ja) * 1984-10-24 1986-05-20 Panafacom Ltd 二重化プロセツサにおける相互割込みマスク制御方式
JP2601359B2 (ja) * 1990-03-08 1997-04-16 松下電器産業株式会社 並行処理マイクロプロセッサ
US5754837A (en) * 1994-12-22 1998-05-19 Texas Instruments Incorporated Clock control circuits, systems and methods
US6438720B1 (en) * 1995-06-07 2002-08-20 Texas Instruments Incorporated Host port interface
US5732209A (en) * 1995-11-29 1998-03-24 Exponential Technology, Inc. Self-testing multi-processor die with internal compare points
US5995750A (en) * 1997-12-16 1999-11-30 Micro Motion, Inc. Memory protection system for a multi-tasking system
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6438671B1 (en) * 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US20010042202A1 (en) * 2000-04-14 2001-11-15 Horvath Charles J. Dynamically extendible firewall
US6772368B2 (en) * 2000-12-11 2004-08-03 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
KR100437473B1 (ko) * 2001-03-02 2004-06-23 삼성에스디아이 주식회사 엘디디 구조를 갖는 씨모스 박막 트랜지스터 및 그의제조방법
JP2004157865A (ja) 2002-11-07 2004-06-03 Sony Corp マルチプロセッサシステム
US7055060B2 (en) * 2002-12-19 2006-05-30 Intel Corporation On-die mechanism for high-reliability processor
US6990560B2 (en) * 2003-01-16 2006-01-24 International Business Machines Corporation Task synchronization mechanism and method
US7350005B2 (en) * 2003-05-23 2008-03-25 Arm Limited Handling interrupts in a system having multiple data processing units
EP1639454A2 (de) * 2003-06-24 2006-03-29 Robert Bosch GmbH Verfahren zur umschaltung zwischen wenigstens zwei betriebsmodi einer prozessoreinheit sowie entsprechende prozessoreinheit
US7328370B2 (en) * 2003-09-12 2008-02-05 Rockwell Automation Technologies, Inc. Safety controller with simplified interface
US20050132364A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
JP2005275629A (ja) * 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
US7287185B2 (en) * 2004-04-06 2007-10-23 Hewlett-Packard Development Company, L.P. Architectural support for selective use of high-reliability mode in a computer system
US7831979B2 (en) * 2004-04-28 2010-11-09 Agere Systems Inc. Processor with instruction-based interrupt handling
JP2006119802A (ja) * 2004-10-20 2006-05-11 Hitachi Ltd マルチプロセッサシステム
US20060117133A1 (en) * 2004-11-30 2006-06-01 Crowdsystems Corp Processing system
US20060248287A1 (en) * 2005-04-29 2006-11-02 Ibm Corporation Methods and arrangements for reducing latency and snooping cost in non-uniform cache memory architectures
KR20070112950A (ko) * 2006-05-24 2007-11-28 삼성전자주식회사 멀티-포트 메모리 장치, 멀티-포트 메모리 장치를 포함하는멀티-프로세서 시스템, 및 멀티-프로세서 시스템의 데이터전달 방법

Also Published As

Publication number Publication date
KR101052994B1 (ko) 2011-07-29
US8090983B2 (en) 2012-01-03
US20090204740A1 (en) 2009-08-13
CN101048730A (zh) 2007-10-03
EP1820093B1 (de) 2018-08-15
EP1820093A1 (de) 2007-08-22
WO2006045775A1 (de) 2006-05-04
JP2008518338A (ja) 2008-05-29
JP5053854B2 (ja) 2012-10-24

Similar Documents

Publication Publication Date Title
KR101052994B1 (ko) 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서전환을 위한 방법 및 장치
KR100994039B1 (ko) 복수의 컴포넌트를 구비한 컴퓨터 시스템에서 신호를생성하기 위한 방법 및 장치
KR20070083759A (ko) 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서모드 전환을 위한 방법 및 장치
KR20070083760A (ko) 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템에서전환을 위한 방법 및 장치
KR20070062573A (ko) 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템의 전환장치 및 전환 방법
KR20070062577A (ko) 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템의신호를 평가하기 위한 방법 및 장치
CN100520730C (zh) 在具有至少两个执行单元的计算机***中对程序代码的执行进行分离的方法和设备
KR20070085278A (ko) 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템의 전환방법 및 그 전환 장치
KR20070062576A (ko) 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서프로그램 코드로부터 처리를 분리하기 위한 방법 및 장치
KR101031181B1 (ko) 컴퓨터 시스템의 기능을 모니터링하기 위한 방법 및 장치
JP2008518310A (ja) マルチプロセッサシステム内のメモリユニットを監視する方法および装置
KR20070062574A (ko) 적어도 2개의 실행 유닛을 구비한 컴퓨터 시스템의 전환방법 및 그 전환 장치
KR20070083776A (ko) 적어도 하나의 외부 신호에 의한 멀티 프로세서 시스템의작동 모드 사이의 스위칭을 위한 방법 및 장치
US20080313384A1 (en) Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units
US20110208948A1 (en) Reading to and writing from peripherals with temporally separated redundant processor execution
CN101048746A (zh) 用于评价具有至少两个执行单元的计算机***的信号的方法和设备
JP2009505179A (ja) 少なくとも2つの実行ユニットを有する計算機システムにおいてレジスタのマーキングによってスタート状態を定める方法および装置
JP2009506408A (ja) 複数の実行ユニットを有する計算機システム内のプロセスを分析する方法および装置
RU2384877C2 (ru) Способ и устройство для генерирования сигнала в вычислительной системе, включающей в себя несколько компонентов
Koser et al. A chip-level redundant threading (CRT) scheme for shared-memory protection

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20140724

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150722

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160721

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170717

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180716

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190716

Year of fee payment: 9