KR20070067168A - 멀티 프로세서 시스템에서 메모리 유닛을 모니터링하기위한 방법 및 장치 - Google Patents

멀티 프로세서 시스템에서 메모리 유닛을 모니터링하기위한 방법 및 장치 Download PDF

Info

Publication number
KR20070067168A
KR20070067168A KR1020077009252A KR20077009252A KR20070067168A KR 20070067168 A KR20070067168 A KR 20070067168A KR 1020077009252 A KR1020077009252 A KR 1020077009252A KR 20077009252 A KR20077009252 A KR 20077009252A KR 20070067168 A KR20070067168 A KR 20070067168A
Authority
KR
South Korea
Prior art keywords
memory
mode
logging
monitoring device
data
Prior art date
Application number
KR1020077009252A
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
Priority claimed from DE102004051952A external-priority patent/DE102004051952A1/de
Priority claimed from DE102004051950A external-priority patent/DE102004051950A1/de
Priority claimed from DE200410051964 external-priority patent/DE102004051964A1/de
Priority claimed from DE200410051937 external-priority patent/DE102004051937A1/de
Priority claimed from DE200410051992 external-priority patent/DE102004051992A1/de
Application filed by 로베르트 보쉬 게엠베하 filed Critical 로베르트 보쉬 게엠베하
Publication of KR20070067168A publication Critical patent/KR20070067168A/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/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/46Multiprogramming arrangements
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 전환 수단 및 적어도 두 개의 연산 유닛을 포함하는 시스템에서 메모리 유닛을 모니터링하기 위한 방법 및 장치에 관한 것이다. 이러한 전환 수단을 통해서는 시스템의 적어도 두 개의 작동 모드 사이에 전환이 이루어질 수 있다. 본 발명에 따른 모니터링 장치는, 메모리 내용의 로깅 및/또는 메모리 내용이 생성되었던 작동 모드의 로깅이 이루어지는 방식으로 구성된다.
메모리 유닛, 모니터링 장치, 전환 수단, 연산 유닛, 로깅

Description

멀티 프로세서 시스템에서 메모리 유닛을 모니터링하기 위한 방법 및 장치{METHOD AND DEVICE FOR MONITORING A MEMORY UNIT IN A MULTI-PROCESSOR SYSTEM}
특히 자동차에서, 혹은 산업 장치 분야, 예컨대 기계 장치 분야에서, 그리고 자동화에서와 같은 기술 적용에서, 끊임없이 마이크로프로세서 혹은 컴퓨터를 기반으로 하는 제어 및 조절 시스템이 안전 임계 적용을 위해 더욱더 이용되고 있다. 이와 관련하여 이중 컴퓨터 시스템 혹은 이중 프로세서 시스템(Dual Cores)은 오늘날 안전 임계 적용을 위한, 특히 자동차에서 예컨대 안티록 브레이크 시스템을 위한, 전자식 주행 안정 프로그램(ESP)을 위한, 또는 드라이브-바이-와이어(Drive-by-Wire) 혹은 스티어-바이-와이어(Steer-by-Wire) 및 브레이크-바이-와이어(Break-by-Wire) 등과 같은 엑스-바이-와이어(X-by-Wire) 시스템을 위한 통상적인 컴퓨터 시스템이다. 미래의 적용에서도 이러한 높은 안전성 요건을 충족하기 위해, 예컨대 컴퓨터 시스템의 반도체 구조를 축소할 시에 발생하는 과도 에러에 대처할 수 있도록 강력한 에러 메커니즘 및 에러 처리 메커니즘이 요구된다. 이때, 코어 자체를, 다시 말해 프로세서를 보호하는 것은 상대적으로 어렵다. 이를 위한 해결 방법은 언급한 바와 같이 에러 검출을 위해 이중 컴퓨터 시스템 혹은 이중 코어 시스템을 이용하는 것이다.
그러므로 적어도 두 개의 실행 유닛이 통합되어 있는 이러한 프로세서 유닛들은 이중 코어 혹은 다중 코어 아키텍처로서 공지되어 있다. 이러한 이중 코어 혹은 다중 코어 아키텍처는 종래 기술에 따라 주로 2가지 이유에서 제안된다:
첫 번째 이유에서 이러한 이중 코어 혹은 다중 코어 아키텍처를 사용함에 따라, 두 실행 유닛 혹은 코어가 반도체 칩 상의 두 개의 연산 유닛으로서 고려 및 처리되면서, 성능 향상, 다시 말해 실행 향상이 달성될 수 있다. 이와 같은 구성에서, 두 개의 실행 유닛 혹은 코어는 서로 다른 프로그램 또는 태스크를 처리한다. 그렇게 함으로써, 성능 향상이 달성되며, 그에 따라 이러한 구성은 성능 모드 혹은 실행 모드로서 지칭된다.
이중 코어 혹은 다중 코어 아키텍처를 실현하는 두 번째 이유는, 두 실행 유닛이 중복적으로 동일한 프로그램을 처리하면서 안전성이 향상되는 점에 있다. 두 실행 유닛 혹은 CPU들, 다시 말해 코어의 결과들이 비교되며, 에러는 일치성에 대한 비교 시에 검출될 수 있다. 이런 구성은 이하에서 안전 모드 혹은 에러 검출 모드로서 지칭된다.
그로 인해 오늘날, 한편으로는 하드웨어 에러를 검출하기 위해 중복적으로 기능하는 이중 혹은 멀티 프로세서 시스템(이중 코어 혹은 마스터 체커 시스템 참조)이 존재하고, 다른 한편으로는 자체 프로세서에서 상이한 데이터를 처리하는 이중 혹은 멀티 프로세서 시스템이 존재한다. 그런 다음 이러한 두 작동 모드를 하나의 이중 혹은 멀티 프로세서 시스템에서 조합한다면(편의상, 이하에서는 단지 이중 프로세서 시스템에 대해서만 언급되지만, 그러나 이하에 기술되는 발명은 정확 하게 멀티 프로세서 시스템에도 적용될 수 있다), 두 프로세서는 실행 모드에서 서로 다른 데이터를 수신해야만 하며, 에러 검출 모드에서는 동일한 데이터를 수신해야만 한다.
오늘날 프로세서의 클록 주파수(clock frequency)는 통상 특별한 외부 메모리에 접근하는데 이용될 수 있는 주파수보다 분명하게 더욱 높다. 이러한 시간 차이를 보상하기 위해, 캐시 메모리가 이용된다. 이 캐시 메모리와 같은 고속 버퍼 메모리를 대응하는 메인 메모리와 상호 작용시킴으로써, 접근 시간은 분명하게 단축될 수 있다.
특별한 이중 프로세서 시스템(이중 코어)을 구현할 시에, 각각의 프로세서에 대해 캐시가 제공된다. 이때, 프로세서가 저속 메인 메모리로부터 데이터를 항상 호출할 필요가 없도록 하기 위해서, 캐시는 시스템 내에서 고속 중간 메모리로서 이용된다. 이를 가능케 하기 위해, 캐시를 구현할 시에 캐시의 접근 기간에 대단한 주의를 기울여야 한다. 접근 기간은 캐시로부터 데이터를 호출하기 위한 실질적인 접근 시간과 프로세서에 데이터를 전달하기 위한 시간으로 구성된다.
멀티 프로세서 시스템, 특히 두 개의 프로세서를 구비한 이중 컴퓨터 시스템에서, 다수의 프로세서는 동일한 태스크 또는 서로 다른 태스크들을 처리한다. 프로세서들이 상이한 태스크들을 처리한다고 하면, 대개 프로세서와 메인 메모리 사이에 프로세서별로 각각 하나의 캐시가 결합된다. 이 캐시는 메인 메모리 및 프로세서의 상이한 작업 속도를 분리하기 위해 필요하다. 다시 말해, 두 프로세서가 서로 다른 태스크를 처리하는 모드에서 이중 컴퓨터 시스템이 작동한다면, 프로세 서들의 캐시들에는 서로 다른 데이터가 로딩 된다. 그런 다음, 프로세서들이 동일한 태스크를 처리하고, 출력 데이터가 비교되는 안전 모드로 전환된다면, 전환되기 전에 캐시 내용이 삭제되거나, 무효한 것으로서 지시되어야 한다.
본 발명의 목적은, 실행 모드에서 안전 모드로 매번 모드를 전환할 때마다 캐시를 완전하게 삭제하거나 무효한 것으로 지시할 필요가 없도록 하기 위해 종래 기술에 따라 전술한 바와 같이 실행을 제한하는 결함을 억제할 수 있는 방법 및 장치 내지 구현을 제공하는 것에 있다.
이러한 구현은 지금까지 공지되지 않았다. 그에 따른 구현은 이중 프로세서 시스템의 효과적인 작동을 가능케 하며, 그럼으로써 작동 시에 안전 및 실행의 두 모드 사이에 성능 손실 없이 전환이 이루어질 수 있다. 이와 관련하여, 계속해서 프로세서들에 대해 언급되며, 또한 개념적으로 코어 내지 연산 유닛 역시 다루어진다.
본 발명은 이러한 목적을 달성하기 위해, 적어도 두 개의 연산 유닛을 구비한 시스템에서 메모리 유닛을 모니터링하기 위한 방법 및 장치를 개시하고 있으며, 시스템의 적어도 두 개의 작동 모드 사이에 전환을 가능케 하는 전환 수단이 포함되며, 메모리 내용의 로깅(logging) 및/또는 메모리 내용이 생성되었던 작동 모드의 로깅이 이루어지는 방식으로 상기 모니터링 장치가 구성된다. 마찬가지로 본 발명에 따라 대응하는 시스템과 대응하는 메모리 유닛, 특히 캐시 메모리가 개시된다.
캐시에 시간이 기록되는 로깅을 통해, 모드 전환 시에 데이터 전체가 무효한 것으로 지시될 필요가 없다. 결과적으로 캐시는 재로딩 될 필요가 없으며, 전체 시스템의 실행은 그에 상응하게 상승한다.
또한, 시스템의 적어도 두 개의 작동 모드 사이에 전환을 가능케 하는 전환 수단(모드 스위치)과 적어도 두 개의 연산 유닛을 구비한 시스템에서 적어도 하나의 데이터 소스로부터 데이터를 분배하기 위한 유닛이 제공되며, 데이터 분배 및/또는 데이터 소스(특히 명령어 메모리, 데이터 메모리, 캐시)는 작동 모드에 따라 달라지는 방식으로 상기 유닛이 구성된다. 그와 동일하게 이러한 데이터 분배용 유닛을 구비한 시스템이 도시되어 있다.
이와 관련하여, 제1 작동 모드는 안전 모드에 상응하며, 이런 안전 모드에서는 두 개의 연산 유닛이 동일한 프로그램 및/또는 데이터를 처리하며, 비교 수단이 제공되어 있다. 비교 수단은 동일한 프로그램을 처리할 시에 발생하는 상태들을 그 일치성과 관련하여 비교한다.
본 발명에 따른 장치 또는 본 발명에 따른 방법은 캐시 이용 시에 성능 손실 없이 이중 프로세서 시스템 내에 두 가지 모드를 구현하는 것을 가능케 한다.
두 프로세서가 에러 검출 모드(F 모드)에서 작동한다면, 그 두 프로세서 모두는 동일한 데이터/명령어를 수신하며, 실행 모드(P 모드)에서 작동한다면, 각각의 프로세서는 메모리로 접근할 수 있다. 이때 이러한 유닛은 단지 단순하게 존재하는 메모리 혹은 주변 장치에 대한 접근을 관리한다.
F 모드에서, 유닛은 프로세서(여기서는 마스터로 지칭함)의 데이터/주소를 전달받아, 메모리, 버스 등과 같은 컴포넌트에 그 데이터/주소를 전송한다. 제2 프로세서(여기서는 슬레이브)도 동일한 접근을 시도하려고 할 수도 있다. 이런 점을 데이터 분배 유닛은 제2 포트에서 수신하지만, 추가의 컴포넌트들에 질의조회(inquiry)를 전송하지는 않는다. 데이터 분배 유닛은 마스터에 전달하는 것과 동일한 데이터를 슬레이브에 전달하여, 두 프로세서의 데이터를 비교한다. 그 비교한 데이터가 서로 상이하면, 그에 대해 데이터 분배 유닛(여기서는 DVE)은 에러 신호로 표시한다. 그로 인해 단지 마스터만이 버스/메모리에 대해 작용하며, 슬레이브는 동일한 데이터를 수신한다(작업 방법은 이중 코어 시스템에서와 동일하다).
P 모드에서, 두 프로세서는 서로 다른 프로그램 부분을 처리한다. 그로 인해 메모리 접근도 서로 다르다. 그에 따라 DVE는 프로세서들의 요구를 수신하고, 결과들/요구 데이터를 요구했던 프로세서에 그 결과들/요구 데이터를 반환한다. 그런 다음 두 프로세서 모두가 동시에 컴포넌트에 접근하고자 한다면, 일측 프로세서는, 타측 프로세서가 작업을 완료할 때까지 대기 상태로 전환된다.
두 모드 간의 전환과 그에 따른 데이터 분배 유닛의 상이한 작동 방법 간의 전환은 제어 신호를 통해 이루어진다. 이는 두 프로세서 중 일측의 프로세서에 의해 생성되거나 혹은 외부에서 생성될 수 있다.
그러므로 본 발명에 따라 작동 모드는 실행 모드와 안전 모드로 구분되며, 로깅 시에 실행 모드에서 어떠한 메모리 내용이 생성되었는지가 기록된다. 목적에 더욱 부합하게는, 이러한 기록과 마찬가지로, 혹은 이러한 기록 대신에, 로깅 시에 안전 모드에서 어떠한 메모리 내용이 생성되었는지가 기록된다. 이와 관련하여, 로깅을 위해 도표가 생성될 수 있으며, 적어도 하나의 연산 유닛의 작동 모드의 특성을 나타내는 모드 신호에 따라 이러한 도표가 평가될 수 있다.
바람직하게는, 메모리 내용의 경우 데이터는 또 다른 메모리 내용과, 특히 명령어와 구분되며, 추가로 도표에서는, 데이터가 메모리 유닛의 실행 모드 및/또는 안전 모드에서 변경되었는지 여부도 기록된다.
매우 바람직하게는, 로깅 시에 추가로 각각의 메모리 내용이 유효한지 여부도 기록된다. 그러므로 연산 유닛의 스타트 시에, 모든 메모리 내용은, 특히 모든 데이터는 무효화 될 수 있다.
목적에 더욱 부합하게는, 각각의 연산 유닛마다 메모리 유닛이 제공되며, 로깅은 각각의 메모리 유닛마다 이루어지며, 각각의 메모리 유닛마다 로깅의 비교가 이루어진다. 특히, 두 연산 유닛의 경우, 로깅의 범주에서 단지 하나의 도표만이 생성되거나, 혹은 각각의 연산 유닛을 위해, 로깅의 범주에서 도표가 생성되며, 그런 다음 도표들 사이에 도표 엔트리들이 교환될 수 있다.
바람직하게는 도표 엔트리들은 그 일치성의 여부와 관련하여 비교된다. 마찬가지로 바람직하게는 유효성 정보는 안전 모드에서 평가된다.
만일 이중 프로세서 시스템이 클록 오프셋 방식의 F 모드에서 작동되면서, P 모드에서는 작동되지 않는다면, DVE 유닛은 슬레이브용 데이터를 그에 상응하게 지연시키거나, 마스터의 출력 데이터가 에러 검출을 위해 슬레이브의 출력 데이터와 비교될 수 있을 때까지, 이러한 마스터의 출력 데이터를 저장한다.
도1은 제1 컴퓨터 및 제2 컴퓨터를 구비한 이중 컴퓨터 시스템을 개략적으로 도시한 블록선도이다.
도2는 데이터 분배 유닛과 관련하여 실시예에 따라 구현된 데이터 및 데이터 주소 흐름을 도시한 블록선도이다.
도3은 캐시들을 구비하여 전환 가능한 이중 프로세서 시스템을 개략적으로 도시한 블록선도이다.
도4는 실시예에 따른 캐시 메모리를 개략적으로 도시한 전개도이다.
클록 오프셋은 도1에 따라 더욱 상세하게 설명된다.
도1은 제1 컴퓨터(100), 특히 마스터 컴퓨터와, 제2 컴퓨터(101), 특히 슬레이브 컴퓨터를 구비한 이중 컴퓨터 시스템을 도시하고 있다. 이와 관련하여 시스템 전체는 사전 설정이 가능한 클록으로 또는 사전 설정이 가능한 클록 주기(clock cycle)(CLK)로 작동된다. 컴퓨터(100)의 클록 입력 장치(CLK1) 및 컴퓨터(101)의 클록 입력 장치(CLK2)를 통해, 이중 컴퓨터 시스템에 클록이 공급된다. 그 외에도 이러한 이중 컴퓨터 시스템의 경우, 실시예에 따라 에러 검출을 위한 특별한 특징이 포함된다. 다시 말해, 제1 컴퓨터(100) 및 제2 컴퓨터(101)는 시간 오프셋으로, 특히 사전 설정 가능한 시간 오프셋 내지 사전 설정 가능한 클록 오프셋으로 기능한다. 이와 관련하여, 시간 오프셋에 대해 각각 임의의 시간이 사전 설정될 수 있으며, 클록 주기의 오프셋과 관련하여 각각 임의의 클록이 사전 설정될 수 있다. 이는 클록 주기의 정수 오프셋일 수 있으며, 또한 본 실시예에 도시한 바와 같이 1.5 클록 주기의 오프셋일 수 있으며, 본 실시예에서 제1 컴퓨터(100)는 제2 컴퓨터(101)에 앞서서 단지 1.5 클록 주기로 기능하거나 작동된다. 이와 같은 오프셋을 통해서, 공통 모드 에러, 이른바 공통 모드 고장이, 컴퓨터들 혹은 프로세서들에, 다시 말해 이중 코어 시스템의 코어들에 동일하게 간섭하고, 그에 따라 검출되지 않은 상태로 유지되는 점은 방지될 수 있다. 다시 말해, 이러한 공통 모드 에러는 오프셋을 통해 프로그램 실행 중 여러 시점에서 컴퓨터에 영향을 미치고, 그에 따라 두 컴퓨터와 관련하여 다양한 효과를 야기하며, 그럼으로써 에러가 식별될 수 있게 된다. 클록 오프셋이 없는 동일한 에러 작용은 경우에 따라 비교 중에 검출되지 않을 수도 있는데, 이는 오프셋을 통해 방지된다. 이와 같이 시간 혹은 클록과 관련한 오프셋을, 본 실시예에 따라서는 특히 1.5 클록 주기를 이중 컴퓨터 시스템에 구현하기 위해서, 오프셋 모듈들(112 내지 115)이 구현된다.
전술한 공통 모드 에러를 검출하기 위해, 상기 이중 컴퓨터 시스템은 예컨대 사전 설정된 시간 오프셋 혹은 클록 주기 오프셋으로, 특히 본 실시예에서는 1.5 클록 주기로 기능 할 수 있도록 고안된다. 다시 말해 일측의 컴퓨터, 예컨대 컴퓨터(100)는 컴포넌트, 예컨대 외부 컴포넌트들(103, 104)에 직접 응답하는 동안, 제2 컴퓨터(101)는 이러한 공통 모드 에러를 검출하기 위해 정확하게 1.5 클록 주기의 지연으로 기능한다. 이러한 경우, 목표하는 1.5 주기 지연, 다시 말해 1.5 클록 주기를 생성하기 위해, 컴퓨터(101)는 반전 클록(inverted clock)을, 다시 말해 반전 클록 신호를 클록 입력 장치(CLK2)에 공급한다. 그렇게 함으로써, 컴퓨터의 전술한 접속, 다시 말해 버스들을 통한 그 컴퓨터의 데이터 내지 명령어의 전달은 전술한 클록 주기 만큼, 다시 말해 본 실시예에서는 특히 1.5 클록 주기 만큼 지연되어야 하며, 이를 위해 앞서 말한 바와 같이 오프셋 혹은 지연 모듈들(112 내지 115)이 제공된다. 두 컴퓨터 혹은 프로세서(100 및 101) 이외에도, 컴포넌트들(103 및 104)이 제공되며, 이들 컴포넌트들은 버스 라인들(116A, 116B, 116C)로 이루어진 버스(116)와 버스 라인들(117A, 117B)로 이루어진 버스(117)를 통해 두 컴퓨터(100 및 101)와 연결된다. 이와 관련하여 117은 명령어 버스이며, 이 경우 117A는 명령어 주소 버스이고, 117B는 부분 명령어 (데이터) 버스이다. 주소 버스(117A)는 명령어 주소 포트 IA1(명령어 주소 1)을 통해 컴퓨터(100)와 연결되며, 명령어 주소 포트 IA2(명령어 주소 2)를 통해 컴퓨터(101)와 연결된다. 명령어 자체는 부분 명령어 버스(117B)를 통해 전송되는데, 이 부분 명령어 버스(117B)는 명령어 포트 I1(명령어 1)을 통해 컴퓨터(100)와 연결되며, 명령어 포트 I2(명령어 2)를 통해 컴퓨터(101)와 연결된다. 이와 같이 117A 및 117B로 구성되는 명령어 버스(117) 내에는 컴포넌트(103), 예컨대 명령어 메모리, 특히 안전 명령어 메모리 등이 개재되어 있다. 특히 명령어 메모리로서 구성되는 이러한 컴포넌트는 본 실시예에서 클록(CLK)으로 작동된다. 그 외에도, 116은 데이터 버스를 나타내는데, 이 데이터 버스는 데이터 주소 버스 혹은 데이터 주소 라인(116A)과 데이터 버스 혹은 데이터 라인(116B)을 포함한다. 이와 관련하여, 116A는, 다시 말해 데이터 주소 라인은 데이터 주소 포트 DA1(데이터 주소 1)를 통해 컴퓨터(100)와 연결되며, 데이터 주소 포트 DA2(데이터 주소 2)를 통해 컴퓨터(101)와 연결된다. 마찬가지로 데이터 버스 혹은 데이터 라인(116B)은 데이터 포트 DO1(데이터 아웃 1) 및 데이터 단자 DO2(데이터 아웃 2)를 통해 컴퓨터(100) 내지 컴퓨터(101)와 연결된다. 또한, 데이터 버스(116)에는 데이터 버스 라인(116C)이 포함되어 있는데, 이 데이터 버스 라인(116C)은 데이터 포트 DI1(데이터 인 1) 및 데이터 포트 DI2(데이터 인 2)를 통해 각각 컴퓨터(100) 내지 컴퓨터(101)와 연결된다. 라인들(116A, 116B, 116C)로 구성되는 이러한 데이터 버스(116) 내에는, 컴포넌트(104)가 개재되는데, 예컨대 데이터 메모리, 특히 안전 데이터 메모리 등이 개재된다. 또한, 이러한 컴포넌트(104) 역시 본 실시예에 따라 클록(CLK)을 공급받는다.
이와 관련하여, 컴포넌트들(103 및 104)은, 데이터 버스 및/또는 명령어 버스를 통해 이중 컴퓨터 시스템의 컴퓨터들과 연결되고, 이중 컴퓨터 시스템의 데이터 및/또는 명령어에 대한 접근에 상응하게 기록 작동 및/또는 판독 작동과 관련하여 에러가 있는 데이터 및/또는 명령어를 수신하거나 전송할 수 있는 임의의 컴포넌트들을 대표한다. 에러를 방지하기 위해, 예컨대 패리티 비트와 같은 에러 검출을, 혹은 예컨대 에러-보정-코드, 다시 말해 ECC 등과 같은 기타 에러 코드를 생성하는 에러 검출 발생기들(105, 106, 107)이 제공되기는 한다. 그러나 이를 위해 대응하는 에러 검출 검사 장치들이나, 혹은 체크 장치들(108 및 109)이, 각각의 에러 검출, 다시 말해 예컨대 패리티 비트 혹은 ECC와 같은 기타 에러 코드를 검사하기 위해 제공되어야 한다.
이중 컴퓨터 시스템 내에서의 중복 실행과 관련하는 데이터 및/또는 명령어의 비교는, 도1에 도시한 바와 같은 비교기들(110 및 111) 내에서 이루어진다. 그러나 시간 오프셋이 존재한다면, 특히 비동기 이중 프로세서 시스템에 의해 야기되 거나, 혹은 동기 이중 프로세서 시스템에서는 동기화 시 에러에 의해 야기되거나, 혹은 이러한 특수한 실례에서와 같이 에러 검출에 바람직한 시간 오프셋 내지 클록 주기 오프셋에 의해, 특히 여기서는 1.5 클록 주기에 의해 야기되어, 컴퓨터들(100 및 101) 사이에 클록 오프셋이나 클록 주기 오프셋이 존재한다면, 이와 같은 시간 오프셋이나 혹은 클록 오프셋에서, 컴퓨터는, 여기서는 특히 컴퓨터(100)는, 기타 시간 공유 장치, 혹은 액추에이터, 혹은 센서들과 관련하여, 컴포넌트들에서, 특히 예컨대 여기서는 메모리(103 혹은 104)와 같은 외부 컴포넌트들에서 에러가 있는 데이터 및/또는 명령어를 기록하거나 판독할 수 있다. 그러므로 이러한 컴퓨터(100)는 이러한 클록 오프셋에 의해 제공되는 판독 접근 대신에 기록 접근을 실행할 수 있다. 이와 같은 시나리오는 자명하게는 시스템 전체에 에러를 야기하며, 이 경우 특히 어떠한 데이터 및/또는 명령어가 바로 에러가 있는 것으로 변경되었는지를 명확하게 표시할 수 없으며, 그럼으로써 복구 문제성이 발생할 수도 있다.
이러한 문제성을 해결하기 위해, 도시한 바와 같은 지연 유닛(102)이 데이터 버스 및/또는 명령어 버스의 라인들 내에 개재된다. 개관의 용이성을 이유로, 오로지 데이터 버스 내에 개재된 상황만 도시되어 있다. 물론 이는 명령어 버스와 관련하여 정확하게 가능하면서도 생각해 볼 수 있다. 이러한 지연 유닛(102) 혹은 딜레이 유닛(Delay Unit)은, 접근을, 본 실시예에서는 특히 메모리 접근을 지연시키며, 그에 따라 가능한 시간 오프셋 혹은 클록 오프셋이 보상되는데, 이러한 보상은, 특히 예컨대 비교기들(110 및 111)을 통해 에러가 검출될 시에, 예컨대 적어도 이중 컴퓨터 시스템 내에서 에러 신호가 생성될 때까지, 다시 말해 이중 컴퓨터 시 스템 내에서 에러 검출이 실행될 때까지 이루어진다. 이와 관련하여 하기와 같이 다양한 변형예들이 구현될 수도 있다:
기록 및 판독 작동의 지연, 단지 기록 작동만의 지연, 혹은 비록 바람직하지는 않지만, 판독 작동의 지연. 이때, 에러가 있는 기록을 방지하기 위해, 변경 신호를 통해서, 특히 에러 신호를 통해서, 지연된 기록 작동은 판독 작동으로 전환될 수 있다.
다음에서는 도2에 따라, 데이터 분배 유닛(DVE)과 관련하여 바람직한 구현에 관해 기술된다. 이러한 데이터 분배 유닛은 바람직하게는 (IIIOPDetect를 통한) 전환 요구를 검출하기 위한 장치, 모드-스위치 유닛 및 Iram 및 Dram 제어 모듈로 구성된다.
IIIOpDetect: 두 모드 간의 전환은 "스위치-디텍트(Switch-Detect)" 유닛들을 통해 검출된다. 이런 유닛은 명령어 버스 상에서 캐시와 프로세서 사이에 위치하여, 명령어(IIIOp)가 프로세서에 로딩 되는지 여부를 보여준다. 명령어가 검출되며, 이러한 사건은 모드 스위치 유닛에 통지된다. "스위치-디텍트" 유닛은 각각의 프로세서를 위해 개별적으로 제공되어 있다. "스위치-디텍트" 유닛은 무정지형(fault-tolerant)이 아닌 방식으로 고안되어야 하는데, 왜냐하면 상기 유닛은 이중으로, 그에 따라 중복되어 제공되어 있기 때문이다. 다른 방법에 따라서는 이러한 유닛을 무정지형 방식으로, 그에 따라 단독으로 고안하는 점도 생각해 볼 수 있다. 그러나 중복식 설계가 바람직하다.
ModeSwitch: 두 모드 간의 전환은 "스위치-디텍트" 유닛에 의해 야기된다. 만일 잠금 모드(lock mode)에서 분할 모드(split mode)로 전환이 이루어져야 한다면, 두 "스위치-디텍트" 유닛이 전환을 검출하는데, 왜냐하면 두 프로세서는 잠금 모드에서 동일한 프로그램 코드를 처리하기 때문이다. 프로세서 1의 "스위치-디텍트" 유닛은 프로세서 2의 "스위치-디텍트" 유닛에 앞서서 1.5 클록 동안 이러한 전환을 검출한다. "모드 스위치" 유닛은 대기 신호를 이용하여 프로세서 1을 2 클록만큼 정지시킨다. 프로세서 2는 1.5 클록 이후에 마찬가지로 정지하긴 하지만, 그러나 시스템 클록으로 동기화될 수 있도록 하기 위해 단지 0.5 클록만큼만 정지된다. 이어서, 상태 신호는 추가의 컴포넌트들을 위해 분할 신호로 전환되며, 두 프로세서는 계속해서 기능한다. 그런 다음 두 프로세서가 서로 다른 클록을 실행할 수 있도록 하기 위해, 그 두 프로세서는 프로그램 코드가 서로 달라야 한다. 이는, 분할 모드로 전환된 직후에 프로세서-ID에 대한 판독 접근이 이루어지면서 달성된다. 이와 같은 판독된 프로세서-ID는 두 프로세서 각각에 대해 서로 다르다. 그런 다음, 만일 설정 프로세서-ID에 대한 비교가 이루어진다면, 이어서 대응하는 프로세서는 조건부 점프 명령어를 또 다른 프로그램 위치로 보낼 수 있게 된다. 분할 모드에서 잠금 모드로 전환할 시에, 이런 전환은 일측의 프로세서가 검출하거나 두 프로세서 중 어느 하나의 프로세서가 먼저 검출한다. 그에 따른 프로세서는 전환 명령어가 포함되어 있는 프로그램 코드를 실행하게 된다. 그런 다음 그런 상황은 "스위치-디텍트" 유닛에 의해 등록되고, 이 등록 상황은 모드 스위치 유닛에 통지된다. 모드 스위치 유닛은 대응하는 프로세서를 정지시키면서, 제2 프로세서에 인터럽트를 통한 동기화의 요구를 통지한다. 제2 프로세서는 인터럽트를 수신 하고, 그런 다음 자신의 태스크를 종료하기 위한 소프트웨어 루틴을 실행할 수 있게 된다. 그리고 이러한 제2 프로세서는 마찬가지로 전환을 위한 명령어가 위치하는 프로그램 위치로 점프한다. 제2 프로세서의 "스위치-디텍트" 유닛은 마찬가지로 모드 전환을 위한 요구를 모드 스위치 유닛에 신호 전달한다. 그런 다음 시스템 클록 측면이 상승하는 시점에, 프로세서 1에 대한 대기 신호가 검출되며, 1.5 클록 이후에 프로세서 2에 대한 대기 신호가 검출된다. 그런 다음 두 프로세서는 다시금 1.5 클록의 클록 오프셋으로 동기화되어 기능 하게 된다.
만일 시스템이 잠금 모드에 있다면, 두 "스위치-디텍트" 유닛은 분할 모드로 전환되고자 하는 요구를 모드 스위치 유닛에 통지해야만 한다. 전환 요구가 단지 하나의 유닛에 의해서만 이루어진다면, 에러가 비교 유닛들에 의해 검출되는데, 왜냐하면 비교 유닛들은 두 프로세서 중 일측의 프로세서로부터 계속해서 데이터를 공급받고 있으며, 그 데이터는 정지된 프로세서와는 일치하지 않기 때문이다.
만일 두 프로세서가 분할 모드에 있으면서, 일측의 프로세서는 다시 잠금 모드로 전환되지 않는다면, 이는 외부 워치도그(Watchdog)에 의해 검출될 수 있다. 각각의 프로세서에 대한 트리거 신호가 있을 시에, 워치도그는 대기 중인 프로세서가 더 이상 신호를 전달하지 않음을 검출한다. 만일 프로세서 시스템에 대해 단지 하나의 워치도그 신호만이 존재한다면, 워치도그의 트리거링은 단지 잠금 모드에서만 이루어져야 한다. 그에 따라, 워치도그는 모드 전환이 이루어지지 않았음을 검출할 수도 있다. 모드 신호는 이중 레일 신호로서 존재한다. 이 경우 "'10"'은 잠금 모드를 나타내며, "'01"'은 분할 모드를 나타낸다. "'00"' 및 "'11"'일 때에 는 에러가 발생한다.
IramControl: 두 프로세서의 명령어 메모리에 대한 접근은 IRAM 제어 장치에 의해 제어된다. IRAM 제어 장치는 안전하게 설계되어 있어야 한다. 왜냐하면, 이러한 제어 장치는 단일 지점 오류(Single Point of Failure)이기 때문이다. IRAM 제어 장치는 각각의 프로세서에 대한 두 개의 상태 기기(state machine)로 구성된다. 다시 말해 일측의 상태 기기는 클록 동기식(iram1clkreset)으로, 그리고 타측의 상태 기기는 비동기식(readiram1)으로 형성된다. 안전 임계 모드에서, 두 프로세서의 상태 기기들은 상호 사이에 모니터링 하며, 실행 모드에서는 독립적으로 기능한다.
프로세서들의 두 캐시의 재로딩은 두 개의 상태 기기, 즉 동기식 상태 기기(iramclkreset)와 비동기식 상태 기기(readiram)에 의해 제어된다. 이러한 두 상태 기기들에 의해, 메모리 접근은 분할 모드에서 분리된다. 이러한 경우, 프로세서 1은 더욱 높은 우선권을 갖는다. 프로세서 1에 의한 메인 메모리에 대한 접근 후에는, 두 프로세서 모두가 다시 메인 메모리에 접근하고자 한다면, 프로세서 2에 메모리 접근 허가가 할당된다. 이러한 두 상태 기기는 각각의 프로세서를 위해 구현된다. 잠금 모드에서 상태 기기들의 출력 신호들은 발생하는 에러를 검출할 수 있도록 비교된다.
잠금 모드에서 캐시 2를 갱신하기 위한 데이터는 IRAM 제어 유닛에서 1.5 클록만큼 지연된다.
SysControl의 제로 레지스터 내 5비트로, 문제가 되는 코어가 암호화된다. 코어 1은 0비트이며, 코어 2의 경우 비트는 높다(High). 이러한 레지스터는 주소 65528을 갖는 메모리 영역에 반영된다.
코어 2가 메모리에 접근할 시에, 우선 컴퓨터가 어떠한 모드에 위치하는지가 검사된다. 컴퓨터가 잠금 모드라고 하면, 코어 2의 메모리 접근은 억제된다. 이러한 신호는 공통 레일 신호로서 존재하는데, 왜냐하면 상기 신호는 안전 임계이기 때문이다.
프로세서 1의 프로그램 카운터는, 잠금 모드에서 프로세서 2의 프로그램 카운터와 비교될 수 있도록 하기 위해, 1.5 클록만큼 지연된다.
분할 모드에서, 두 프로세서의 캐시들은 서로 상이하게 재로딩 될 수 있다. 그런 다음 잠금 모드로 전환된다면, 두 캐시는 상호 사이에 일치하지 않는다. 그렇게 함으로써 두 프로세서는 서로 상이하게 작동하며, 그 결과 비교기는 에러를 신호화 한다. 이를 방지하기 위해, IRAM 제어 장치에는 플래그 도표(flag table)가 구성된다. 이 플래그 도표에서, 캐시 행이 잠금 모드에서 기록되었는지, 혹은 분할 모드에서 기록되었는지가 검출된다. 잠금 모드에서 캐시 행에 대응하는 엔트리는 캐시 행 재로딩 시에 0으로 설정되고, 분할 모드에서는 (단지 하나의 캐시만의 캐시 행의 캐시 갱신 시에도) 1로 설정된다. 만일 프로세서가 잠금 모드에서 메모리 접근을 실행한다면, 상기 캐시 행이 잠금 모드에서 갱신된 것인지 여부가, 다시 말해 두 캐시의 캐시 행들이 동일한지 여부가 검사된다. 분할 모드에서, 프로세서는 항상, 플래그 벡터와 같이, 독립적으로 캐시 행들에 접근할 수 있다. 이러한 도표는 단지 일 회만 존재해야만 한다. 왜냐하면, 에러가 있을 시에 두 프로 세서는 서로 상이하게 작동하며, 그로 인해 비교기들에서 이러한 에러는 분명하게 검출되기 때문이다. 중앙 도표에 대한 접근 시간이 상대적으로 길기 때문에, 이러한 도표는 또한 각각의 캐시에 복사될 수 있다.
DramControl: 이 컴포넌트 내에서는, 각각의 프로세서의 주소 신호, 데이터 신호 및 메모리 제어 신호에 대해 패리티가 구성된다.
메모리를 차단하기 위해 두 프로세서를 위한 프로세스가 있다. 이러한 프로세스는 안전하게 구현될 필요는 없다. 왜냐하면, 잠금 모드에서 에러가 있는 메모리 접근은 비교기에 의해 검출될 수 있고, 분할 모드에서는 안전성 관련 응용 프로그램은 실행되지 않기 때문이다. 이때, 프로세서가 타측 프로세서를 위해 메모리를 차단하고자 하는지 여부가 검사된다. 이와 같이 데이터 메모리의 차단은 메모리 주소 $FBFF$=64511에 대한 접근에 의해 이루어진다. 이 신호는, 비록 호출의 시점에 대기 명령어가 프로세서에 인가된다고 하더라도, 정확하게 1 클록 동안 인가되어야 한다. 데이터 메모리 접근을 관리하기 위한 상태 기기는 2가지 주요 상태로 구성된다:
- 잠금 프로세서 상태: 두 프로세서들은 잠금 모드에서 기능한다. 다시 말해 데이터 메모리 잠금의 기능성이 필요하지 않다. 프로세서 1은 메모리 접근을 조정한다.
- 분할 프로세서 상태: 이 경우 데이터 메모리에 대한 접근 충돌(access conflict)의 해소가 필요하며, 메모리 차단이 이루어질 수 있어야 한다.
분할 모드에서 상태는 다시금 접근 충돌을 해소하고 각각의 타측 프로세서용 데이터 메모리를 차단할 수 있는 7가지 상태로 분리된다. 접근 시에 두 프로세서가 동시에 요구할 때, 실행된 순서가 동시에 우선 순위를 나타낸다.
- Core1\_Lock: 프로세서 1은 데이터 메모리를 차단했다. 이러한 상태에서 프로세서 2가 메모리에 접근하고자 한다면, 프로세서 1이 데이터 메모리를 다시금 차단 해제할 때까지 프로세서 2는 대기 신호에 의해 정지된다.
- Core2\_Lock: 이 상태는 바로 위에서 언급한 상태와 동일하다. 단지 이 상태에서는 프로세서 2가 데이터 메모리를 차단했으며, 프로세서 1은 데이터 메모리 작동 시에 정지된다.
- lock1\_wait: 프로세서 1이 단독으로 데이터 메모리를 마찬가지로 예약하고자 했을 때, 데이터 메모리가 프로세서 2에 의해 차단되었다. 그러므로 프로세서 1은 곧바로 후행하는 메모리 차단을 위해 예약된다.
- nex: 프로세서 2에 대해서는 동일하다. 데이터 메모리는 프로세서 1에 의해 차단이 시도되는 동안 차단되었다. 프로세서 2는 사전에 예약하는 방식으로 메모리를 확보한다. 이 경우, 차단이 없는 정상적인 메모리 접근 시에는, 프로세서 1이 앞서서 접근하였다면, 프로세서 2가 프로세서 1에 앞서 접근할 수 있다.
- 프로세서 1의 메모리 접근: 이 경우 메모리는 차단되지 않는다. 메모리 1은 데이터 메모리에 접근할 수도 있다. 만일 프로세서 1이 데이터 메모리를 차단하고자 한다면, 이 상태에서 메모리 1은 데이터 메모리 차단을 실행할 수 있다.
- 프로세서 2에 의한 메모리 접근. 동일한 클록에서, 프로세서 1은 메모리에 접근하고자 하지 않으며, 그에 따라 프로세서 2가 메모리에 자유로이 접근할 수 있 다.
- 어느 프로세서도 데이터 메모리에 접근하고자 하지 않는다.
DVE는 언급한 바와 같이 전환 요구의 검출 장치(IIIOPDetect), 모드 스위치 유닛 및 Iram- 및 Dram 제어 장치로 구성된다.
도3에는 재차 캐시들을 구비하여 전환 가능한 이중 프로세서 시스템이 개략적으로 도시되어 있다. 이와 관련하여 도4에는 실시예에 따라 캐시 메모리가 전개되어 있다. 우선 데이터 캐시와 명령어 캐시가 구분되어야 한다. 명령어 캐시의 경우, 이중 컴퓨터 시스템이 전환되지 못할 시에 일치성 문제는 발생하지 않는다. 그러므로 지금까지 스누핑이 적용되지 않았다. 그러나 여기서는 프로세서들의 각각의 캐시에 로딩 되는 명령어의 스누핑을 실행하는 접근법이 적용된다.
도표는 아래와 같이 구성된다:
집합 0 집합 1 집합 2 ... ... ... ... 집합 63 태그 0 태그 1 태그 2 ... ... ... ... 태그 63 유효 무효 유효 ... ... ... ... 유효
캐시 스누핑 도표의 도식
이러한 도표에서, 각각의 캐시 행에는 엔트리가 제공된다. 이러한 도표는 단지 일 회만 전환 가능한 멀티 프로세서 시스템을 위해 필요하다. 만일 데이터가 잠금 모드에서 기록된 것이라면, 이러한 도표에서 대응하는 행이 유효한 것으로서 지시된다. 만일 분할 모드에서 캐시 행에 기록된 것이라면, 이러한 행에 대한 대응하는 엔트리는 무효한 것으로서 지시된다.
분할 모드에서, 매 캐시 접근 시마다, 단지 이러한 캐시 접근이 유효 값을 포함하는지 여부가 검사되기만 한다. 그러나 잠금 모드에서는 재차 이러한 새로운 도표에 대한 질의가 이루어진다. 이런 도표에서 데이터가 무효한 것으로서 지시된다면, 비록 캐시에 유효한 데이터가 있을 수 있지만, 그러나 그 유효 데이터는 캐시 내의 데이터와 동일하지 않다. 그 결과 이중 프로세서 시스템의 비교기는 잠금 모드에서 에러를 표시할 수도 있는데, 왜냐하면 두 프로세서가 서로 상이하게 작동할 수도 있기 때문이다.
또한, 이러한 도표가 데이터 메모리용으로 이용된다면, 재차, 만일 데이터가 잠금 모드에서 로딩 되었다면, 그 캐시 행이 분할 모드에서 보충되었는지 여부뿐 아니라, 데이터가 일측의 프로세서에 의해 캐시들 중 어느 하나의 캐시에 갱신되었는지 여부가 검사되어야 한다.
명령어 캐시:
작용 캐시 유효 필드 새로운 상위 도표 작용
시스템의 스타트 모든 데이터 무효함 모든 데이터 무효함
캐시 행이 잠금 모드에서 로딩 된다. 캐시 행 유효함 캐시 행 유효함
캐시 행이 분할 모드에서 로딩 된다. 캐시 행 유효함 캐시 행 무효함 잠금 모드에서 캐시 행에 접근할 시에, 비록 캐시 행이 이미 캐시 내에서 유효한 것으로서 지시된다고 하더라도, 캐시 행은 프로세서들의 모든 캐시에서 재로딩 되어야 한다.
만일 일측의 프로세서에서 분할 모드로 캐시 행이 또 다른 캐시 행으로 대체 된다면, 단지 유효 필드만이 도표에서 무효한 것으로서 보충되어야 한다. 태그 필드에 주의할 필요는 없다.
도표의 제2 변형예는 하기와 같이 보일 수 있다:
캐시 1 캐시 2 비교
집합 0 집합 1 집합 2 ... ... ... ... 집합 63 태그 0 태그 1 태그 2 ... ... ... ... 태그 63 태그 0 태그 1 태그 2 ... ... ... ... 태그 63 동일함 동일하지 않음 동일함 ... ... ... ... 동일함
제2 변형예에 따른 캐시 스누핑 도표
상기 도표의 제2 변형예에 따라, 도표는 집합 필드 및 태그 필드로 구성되며, 각각의 캐시에 대해 별도로 도시되어 있다. 이와 관련하여 도표는 비록 더욱 크긴 하지만, 바람직하게는 분할 모드에서 두 캐시에 대해, 이들 캐시의 내용에서 알 수 있듯이, 중앙에서 문서화된다. 그런 다음, 잠금 모드에서 도표의 비교를 통해, 두 캐시의 데이터가 동일한지 여부가 결정될 수 있다. 그로 인해, 캐시 행들은, 제1 방법에서와 같이 잠금 모드에 대해 무효한 것으로서 지시되지 않으면서, 서로 다른 시점에서 갱신될 수 있다.
본 발명의 핵심은 앞서 실시한 바와 같이 캐시 내 데이터의 로깅에 있다. 그와 더불어 도시한 특별한 구현은 최초에 언급한 목적을 달성한다.

Claims (30)

  1. 적어도 두 개의 연산 유닛을 구비한 시스템에서 메모리 유닛을 모니터링 하기 위한 방법이며, 시스템의 적어도 두 개의 작동 모드 사이에 전환을 가능케 하는 전환 수단이 포함되며, 메모리 내용의 로깅 및/또는 상기 메모리 내용이 생성되었던 작동 모드의 로깅이 이루어지는 모니터링 방법.
  2. 제1항에 있어서, 작동 모드에서 실행 모드와 안전 모드 사이에 구분이 이루어지며, 로깅 시에 실행 모드에서 어떠한 메모리 내용이 생성되었는지가 기록되는 것을 특징으로 하는 모니터링 방법.
  3. 제1항에 있어서, 작동 모드에서 실행 모드와 안전 모드 사이에 구분이 이루어지며, 로깅 시에 안전 모드에서 어떠한 메모리 내용이 생성되었는지가 기록되는 것을 특징으로 하는 모니터링 방법.
  4. 제1항에 있어서, 로깅을 위해 도표가 생성되며, 적어도 하나의 연산 유닛의 작동 모드를 나타내는 모드 신호에 따라 상기 도표가 평가되는 것을 특징으로 하는 모니터링 방법.
  5. 제2항 및 제4항에 있어서, 메모리 내용에서 데이터는 또 다른 메모리 내용으 로부터, 특히 명령어로부터 구분되며, 실행 모드에서 데이터가 메모리 유닛 내에서 변경되었는지 여부가 도표에 추가로 기록되는 것을 특징으로 하는 모니터링 방법.
  6. 제3항 및 제4항에 있어서, 메모리 내용에서 데이터는 또 다른 메모리 내용으로부터, 특히 명령어로부터 구분되며, 안전 모드에서 데이터가 메모리 유닛 내에서 변경되었는지 여부가 도표에 추가로 기록되는 것을 특징으로 하는 모니터링 방법.
  7. 제1항 또는 제4항에 있어서, 로깅 시에 각각의 메모리 내용이 유효한지 여부가 추가로 유지되는 것을 특징으로 하는 모니터링 방법.
  8. 제1항 또는 제4항에 있어서, 연산 유닛들의 스타트 시에 모든 메모리 내용은 무효화되는 것을 특징으로 하는 모니터링 방법.
  9. 제1항에 있어서, 각각의 연산 유닛에는 하나의 메모리 유닛이 제공되며, 각각의 메모리 유닛마다 로깅이 이루어지며, 각각의 메모리 유닛마다 로깅의 비교가 이루어지는 것을 특징으로 하는 모니터링 방법.
  10. 제9항에 있어서, 두 개의 연산 유닛을 위해 하나의 도표가 로깅의 범주에서 생성되는 것을 특징으로 하는 모니터링 방법.
  11. 제9항에 있어서, 각각의 연산 유닛을 위해 하나의 도표가 로깅의 범주에서 생성되며, 도표들 사이에 도표 엔트리들이 교환될 수 있는 것을 특징으로 하는 모니터링 방법.
  12. 제4항 또는 제9항에 있어서, 도표 엔트리들은 그 일치성에 대해 비교되는 것을 특징으로 하는 모니터링 방법.
  13. 제7항에 있어서, 유효성 정보는 안전 모드에서 평가되는 것을 특징으로 하는 모니터링 방법.
  14. 적어도 두 개의 연산 유닛을 구비한 시스템에서 메모리 유닛을 모니터링 하기 위한 모니터링 장치이며, 시스템의 적어도 두 개의 작동 모드 사이에 전환을 가능케 하는 전환 수단이 포함되며, 상기 모니터링 장치는, 메모리 내용의 로깅 및/또는 상기 메모리 내용이 생성되었던 작동 모드의 로깅이 이루어지는 방식으로 구성되는 모니터링 장치.
  15. 제1항에 있어서, 메모리 유닛이 캐시 메모리인 것을 특징으로 하는 모니터링 장치.
  16. 제14항에 있어서, 상기 메모리 유닛은 적어도 하나의 유효성 필드를 포함하 며, 이 유효성 필드에는 메모리 내용의 유효성 정보가 기입될 수 있는 것을 특징으로 하는 모니터링 장치.
  17. 제14항에 있어서, 작동 모드에서 실행 모드와 안전 모드 사이에 구분이 이루어지며, 상기 모니터링 장치는, 로깅 시에 실행 모드에서 어떠한 메모리 내용이 생성되었는지가 기록되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  18. 제14항에 있어서, 작동 모드에서 실행 모드와 안전 모드 사이에 구분이 이루어지며, 상기 모니터링 장치는, 로깅 시에 안전 모드에서 어떠한 메모리 내용이 생성되었는지가 기록되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  19. 제14항에 있어서, 상기 모니터링 장치는, 로깅을 위해 도표가 생성되며, 적어도 하나의 연산 유닛의 작동 모드를 나타내는 모드 신호에 따라 상기 도표가 평가되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  20. 제17항 및 제19항에 있어서, 메모리 내용에서, 데이터는 또 다른 메모리 내용으로부터, 특히 명령어로부터 구분되며, 상기 모니터링 장치는, 실행 모드에서 데이터가 메모리 유닛 내에서 변경되었는지 여부가 도표에 추가로 기록되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  21. 제18항 및 제19항에 있어서, 메모리 내용에서, 데이터는 또 다른 메모리 내용으로부터, 특히 명령어로부터 구분되며, 상기 모니터링 장치는, 안전 모드에서 데이터가 메모리 유닛 내에서 변경되었는지 여부가 도표에 추가로 기록되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  22. 제14항 또는 제19항에 있어서, 상기 모니터링 장치는, 로깅 시에 각각의 메모리 내용이 유효한지 여부가 추가로 유지되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  23. 제14항 또는 제19항에 있어서, 상기 모니터링 장치는, 연산 유닛들의 스타트 시에 모든 메모리 내용이 무효화 되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  24. 제14항에 있어서, 각각의 연산 유닛은 하나의 메모리 유닛을 포함하며, 상기 모니터링 장치는, 각각의 메모리 유닛마다 로깅이 이루어지며, 각각의 메모리 유닛마다 로깅의 비교가 이루어지는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  25. 제24항에 있어서, 상기 모니터링 장치는, 두 개의 연산 유닛을 위해 도표가 로깅의 범주에서 포함되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  26. 제24항에 있어서, 상기 모니터링 장치는, 각각의 연산 유닛을 위해, 하나의 도표가 로깅의 범주에서 생성되며, 도표들 사이에 도표 엔트리들이 교환될 수 있는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  27. 제19항 또는 제24항에 있어서, 상기 모니터링 장치는, 도표 엔트리들이 그 일치성에 대해 비교되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  28. 제16항에 있어서, 상기 모니터링 장치는, 유효성 정보가 안전 모드에서 평가되는 방식으로 구성되는 것을 특징으로 하는 모니터링 장치.
  29. 메모리 유닛을 모니터링 하기 위한 제14항에 따른 장치를 구비한 시스템.
  30. 메모리 유닛을 모니터링 하기 위한 제14항에 따른 장치를 구비한 메모리 유닛.
KR1020077009252A 2004-10-25 2005-10-25 멀티 프로세서 시스템에서 메모리 유닛을 모니터링하기위한 방법 및 장치 KR20070067168A (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
DE102004051964.1 2004-10-25
DE102004051952A DE102004051952A1 (de) 2004-10-25 2004-10-25 Verfahren zur Datenverteilung und Datenverteilungseinheit in einem Mehrprozessorsystem
DE102004051950A DE102004051950A1 (de) 2004-10-25 2004-10-25 Verfahren und Vorrichtung zur Taktumschaltung bei einem Mehrprozessorsystem
DE102004051950.1 2004-10-25
DE200410051964 DE102004051964A1 (de) 2004-10-25 2004-10-25 Verfahren und Vorrichtung zur Überwachung einer Speichereinheit in einem Mehrprozessorsystem
DE102004051952.8 2004-10-25
DE200410051937 DE102004051937A1 (de) 2004-10-25 2004-10-25 Verfahren und Vorrichtung zur Synchronisierung in einem Mehrprozessorsystem
DE102004051937.4 2004-10-25
DE200410051992 DE102004051992A1 (de) 2004-10-25 2004-10-25 Verfahren und Vorrichtung zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Mehrprozessorsystems
DE102004051992.7 2004-10-25

Publications (1)

Publication Number Publication Date
KR20070067168A true KR20070067168A (ko) 2007-06-27

Family

ID=35677569

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020077009252A KR20070067168A (ko) 2004-10-25 2005-10-25 멀티 프로세서 시스템에서 메모리 유닛을 모니터링하기위한 방법 및 장치
KR1020077009251A KR20070062579A (ko) 2004-10-25 2005-10-25 멀티 프로세서 시스템에서 적어도 하나의 데이터소스로부터 데이터를 분배하기 위한 방법 및 장치
KR1020077009253A KR20070083772A (ko) 2004-10-25 2005-10-25 멀티 프로세서 시스템에서의 동기화 방법 및 장치
KR1020077009250A KR20070083771A (ko) 2004-10-25 2005-10-25 멀티 프로세서 시스템의 데이터 및/또는 명령어에 대한접근을 지연시키기 위한 방법 및 장치

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020077009251A KR20070062579A (ko) 2004-10-25 2005-10-25 멀티 프로세서 시스템에서 적어도 하나의 데이터소스로부터 데이터를 분배하기 위한 방법 및 장치
KR1020077009253A KR20070083772A (ko) 2004-10-25 2005-10-25 멀티 프로세서 시스템에서의 동기화 방법 및 장치
KR1020077009250A KR20070083771A (ko) 2004-10-25 2005-10-25 멀티 프로세서 시스템의 데이터 및/또는 명령어에 대한접근을 지연시키기 위한 방법 및 장치

Country Status (8)

Country Link
US (4) US7853819B2 (ko)
EP (5) EP1812861A1 (ko)
JP (5) JP4532561B2 (ko)
KR (4) KR20070067168A (ko)
AT (2) ATE407398T1 (ko)
DE (2) DE502005005490D1 (ko)
RU (1) RU2007119316A (ko)
WO (5) WO2006045804A1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882379B2 (en) * 2006-09-22 2011-02-01 Sony Computer Entertainment Inc. Power consumption reduction in a multiprocessor system
US20080244305A1 (en) * 2007-03-30 2008-10-02 Texas Instruments Deutschland, Gmbh Delayed lock-step cpu compare
DE102007063291A1 (de) * 2007-12-27 2009-07-02 Robert Bosch Gmbh Sicherheitssteuerung
JP4633134B2 (ja) * 2008-03-27 2011-02-16 ルネサスエレクトロニクス株式会社 マイクロコントローラ、制御システム及びマイクロコントローラの設計方法
US7941698B1 (en) * 2008-04-30 2011-05-10 Hewlett-Packard Development Company, L.P. Selective availability in processor systems
JP2010198131A (ja) * 2009-02-23 2010-09-09 Renesas Electronics Corp プロセッサシステム、及びプロセッサシステムの動作モード切り替え方法
US8275977B2 (en) * 2009-04-08 2012-09-25 Freescale Semiconductor, Inc. Debug signaling in a multiple processor data processing system
US8295287B2 (en) * 2010-01-27 2012-10-23 National Instruments Corporation Network traffic shaping for reducing bus jitter on a real time controller
US8954714B2 (en) * 2010-02-01 2015-02-10 Altera Corporation Processor with cycle offsets and delay lines to allow scheduling of instructions through time
US9052887B2 (en) 2010-02-16 2015-06-09 Freescale Semiconductor, Inc. Fault tolerance of data processing steps operating in either a parallel operation mode or a non-synchronous redundant operation mode
KR101664108B1 (ko) 2010-04-13 2016-10-11 삼성전자주식회사 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법
JP5718600B2 (ja) * 2010-09-10 2015-05-13 日本電気通信システム株式会社 情報処理システム、および、情報処理方法
US8683251B2 (en) 2010-10-15 2014-03-25 International Business Machines Corporation Determining redundancy of power feeds connecting a server to a power supply
JP5796311B2 (ja) 2011-03-15 2015-10-21 オムロン株式会社 制御装置およびシステムプログラム
WO2012144011A1 (ja) 2011-04-18 2012-10-26 富士通株式会社 スレッド処理方法、およびスレッド処理システム
US9086977B2 (en) * 2011-04-19 2015-07-21 Freescale Semiconductor, Inc. Cache memory with dynamic lockstep support
US9842014B2 (en) 2012-11-22 2017-12-12 Nxp Usa, Inc. Data processing device, method of execution error detection and integrated circuit
US9429981B2 (en) * 2013-03-05 2016-08-30 St-Ericsson Sa CPU current ripple and OCV effect mitigation
US9823983B2 (en) 2014-09-25 2017-11-21 Nxp Usa, Inc. Electronic fault detection unit
WO2016087175A1 (de) * 2014-12-01 2016-06-09 Continental Teves Ag & Co. Ohg Rechensystem für ein kraftfahrzeugsystem
JP6516097B2 (ja) * 2015-06-11 2019-05-22 大日本印刷株式会社 演算装置、icカード、演算方法、及び演算処理プログラム
JP2019061392A (ja) 2017-09-26 2019-04-18 ルネサスエレクトロニクス株式会社 マイクロコントローラ及びマイクロコントローラの制御方法
US10642826B1 (en) 2018-08-30 2020-05-05 Gravic, Inc. Mixed-mode method for combining active/active and validation architectures utilizing a check integrity module
US11269799B2 (en) * 2019-05-03 2022-03-08 Arm Limited Cluster of processing elements having split mode and lock mode
US11899547B2 (en) * 2021-11-30 2024-02-13 Mellanox Technologies, Ltd. Transaction based fault tolerant computing system
US12032460B2 (en) * 2022-02-11 2024-07-09 Stmicroelectronics S.R.L. Systems and methods to test an asynchronous finite machine

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1269827B (de) * 1965-09-09 1968-06-06 Siemens Ag Verfahren und Zusatzeinrichtung zur Synchronisierung von parallel arbeitenden Datenverarbeitungsanlagen
US3783250A (en) * 1972-02-25 1974-01-01 Nasa Adaptive voting computer system
US4823256A (en) 1984-06-22 1989-04-18 American Telephone And Telegraph Company, At&T Bell Laboratories Reconfigurable dual processor system
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
US6038584A (en) * 1989-11-17 2000-03-14 Texas Instruments Incorporated Synchronized MIMD multi-processing system and method of operation
US5226152A (en) * 1990-12-07 1993-07-06 Motorola, Inc. Functional lockstep arrangement for redundant processors
DE4104114C2 (de) * 1991-02-11 2000-06-08 Siemens Ag Redundantes Datenverarbeitungssystem
JPH05128080A (ja) * 1991-10-14 1993-05-25 Mitsubishi Electric Corp 情報処理装置
US5751932A (en) * 1992-12-17 1998-05-12 Tandem Computers Incorporated Fail-fast, fail-functional, fault-tolerant multiprocessor system
JPH07121483A (ja) * 1993-10-28 1995-05-12 Nec Eng Ltd 共有メモリアクセス制御回路
US5758132A (en) 1995-03-29 1998-05-26 Telefonaktiebolaget Lm Ericsson Clock control system and method using circuitry operating at lower clock frequency for selecting and synchronizing the switching of higher frequency clock signals
CA2178440A1 (en) * 1995-06-07 1996-12-08 Robert W. Horst Fail-fast, fail-functional, fault-tolerant multiprocessor system
JPH096733A (ja) * 1995-06-14 1997-01-10 Toshiba Corp 並列信号処理装置
JPH0973436A (ja) * 1995-09-05 1997-03-18 Mitsubishi Electric Corp 多重化計算機における動作モード切替方式
US5732209A (en) * 1995-11-29 1998-03-24 Exponential Technology, Inc. Self-testing multi-processor die with internal compare points
US5809522A (en) * 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
FR2748136B1 (fr) * 1996-04-30 1998-07-31 Sextant Avionique Module electronique avec architecture redondante pour controle d'integrite du fonctionnement
GB2317032A (en) * 1996-09-07 1998-03-11 Motorola Gmbh Microprocessor fail-safe system
GB9704542D0 (en) * 1997-03-05 1997-04-23 Sgs Thomson Microelectronics A cache coherency mechanism
EP0978784A1 (en) * 1998-08-04 2000-02-09 Motorola, Inc. Method for coding computer programs and method for debugging coded computer programs
GB2340627B (en) * 1998-08-13 2000-10-04 Plessey Telecomm Data processing system
JP2000200255A (ja) * 1999-01-07 2000-07-18 Hitachi Ltd プロセッサ間の同期化方法及び同期回路
WO2000079405A1 (fr) * 1999-06-21 2000-12-28 Hitachi, Ltd. Processeur de donnees
US6640313B1 (en) * 1999-12-21 2003-10-28 Intel Corporation Microprocessor with high-reliability operating mode
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US6772368B2 (en) 2000-12-11 2004-08-03 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
DE10136335B4 (de) 2001-07-26 2007-03-22 Infineon Technologies Ag Prozessor mit mehreren Rechenwerken
US6947047B1 (en) * 2001-09-20 2005-09-20 Nvidia Corporation Method and system for programmable pipelined graphics processing with branching instructions
US20040076189A1 (en) * 2002-10-17 2004-04-22 International Business Machines Corporation Multiphase clocking method and apparatus
US7055060B2 (en) 2002-12-19 2006-05-30 Intel Corporation On-die mechanism for high-reliability processor
JP2004234144A (ja) * 2003-01-29 2004-08-19 Hitachi Ltd プロセッサの動作比較装置および動作比較方法
WO2005003962A2 (de) * 2003-06-24 2005-01-13 Robert Bosch Gmbh Verfahren zur umschaltung zwischen wenigstens zwei betriebsmodi einer prozessoreinheit sowie entsprechende prozessoreinheit
US7134031B2 (en) * 2003-08-04 2006-11-07 Arm Limited Performance control within a multi-processor system
DE10349581A1 (de) * 2003-10-24 2005-05-25 Robert Bosch Gmbh Verfahren und Vorrichtung zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit

Also Published As

Publication number Publication date
WO2006045802A3 (de) 2007-01-04
EP1807763A2 (de) 2007-07-18
ATE409327T1 (de) 2008-10-15
WO2006045800A1 (de) 2006-05-04
EP1820102A2 (de) 2007-08-22
DE502005005490D1 (de) 2008-11-06
US20080163035A1 (en) 2008-07-03
WO2006045802A2 (de) 2006-05-04
KR20070083772A (ko) 2007-08-24
US20080209251A1 (en) 2008-08-28
JP2008518312A (ja) 2008-05-29
US20080126718A1 (en) 2008-05-29
RU2007119316A (ru) 2008-12-10
EP1812861A1 (de) 2007-08-01
JP2008518311A (ja) 2008-05-29
DE502005005284D1 (de) 2008-10-16
US7853819B2 (en) 2010-12-14
JP2008518310A (ja) 2008-05-29
WO2006045798A1 (de) 2006-05-04
EP1810145A1 (de) 2007-07-25
WO2006045801A3 (de) 2006-07-06
KR20070083771A (ko) 2007-08-24
JP4532561B2 (ja) 2010-08-25
EP1807763B1 (de) 2008-09-24
EP1807761A1 (de) 2007-07-18
US20090164826A1 (en) 2009-06-25
JP2008518308A (ja) 2008-05-29
JP2008518309A (ja) 2008-05-29
WO2006045804A1 (de) 2006-05-04
KR20070062579A (ko) 2007-06-15
EP1810145B1 (de) 2008-09-03
WO2006045801A2 (de) 2006-05-04
ATE407398T1 (de) 2008-09-15

Similar Documents

Publication Publication Date Title
KR20070067168A (ko) 멀티 프로세서 시스템에서 메모리 유닛을 모니터링하기위한 방법 및 장치
US8108056B2 (en) Industrial controller using shared memory multicore architecture
US5588111A (en) Fault-tolerant computer system having switchable I/O bus interface modules
Tendler et al. POWER4 system microarchitecture
US5384906A (en) Method and apparatus for synchronizing a plurality of processors
US20090044044A1 (en) Device and method for correcting errors in a system having at least two execution units having registers
CA2549540C (en) A task management control apparatus and method
JP2022534418A (ja) エラーリカバリ方法及び装置
CN100511167C (zh) 监控多处理器系统中的存储单元的方法和设备
JP4182948B2 (ja) フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法
US20070294559A1 (en) Method and Device for Delaying Access to Data and/or Instructions of a Multiprocessor System
US20090024908A1 (en) Method for error registration and corresponding register
US20100011183A1 (en) Method and device for establishing an initial state for a computer system having at least two execution units by marking registers
Lenoski A Highly Integrated Fault-tolerant Minicomputer: The Nonstop CLX.
JPH02306349A (ja) 主記憶制御装置
JPH03228189A (ja) マイクロプロセッサ
JPH06259269A (ja) マルチプロセッサの診断回路
JP2000298619A (ja) キャッシュメモリの障害処理方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application