KR102376396B1 - 멀티 코어 프로세서 및 그것의 캐시 관리 방법 - Google Patents
멀티 코어 프로세서 및 그것의 캐시 관리 방법 Download PDFInfo
- Publication number
- KR102376396B1 KR102376396B1 KR1020170137655A KR20170137655A KR102376396B1 KR 102376396 B1 KR102376396 B1 KR 102376396B1 KR 1020170137655 A KR1020170137655 A KR 1020170137655A KR 20170137655 A KR20170137655 A KR 20170137655A KR 102376396 B1 KR102376396 B1 KR 102376396B1
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- write data
- data
- error
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
- G06F11/0724—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
- G06F11/167—Error detection by comparing the memory output
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Hardware Redundancy (AREA)
Abstract
본 발명의 실시 예에 따른 메인 메모리 또는 주변 장치에 연결되며, 프로세서들 각각이 동일한 테스크를 수행하는 듀얼 모듈러 리던던시 모드를 갖는 멀티 코어 프로세서는, 상기 테스크를 수행하여 제 1 쓰기 데이터를 생성하고, 상기 제 1 쓰기 데이터에 대한 오류 검출 동작 후에 상기 제 1 쓰기 데이터를 상기 메인 메모리 또는 주변 장치에 기입하는 제 1 프로세서, 상기 테스크를 수행하여 제 2 쓰기 데이터를 생성하고, 상기 제 2 쓰기 데이터에 대한 오류 검출 동작 후에 상기 제 2 쓰기 데이터의 상기 메인 메모리 또는 주변 장치로의 쓰기를 차단하는 제 2 프로세서, 그리고 상기 듀얼 모듈러 리던던시 모드시, 상기 제 1 쓰기 데이터와 상기 제 2 쓰기 데이터를 비교하는 상기 오류 검출 동작을 수행하는 오류 매니저를 포함하되, 상기 제 1 쓰기 데이터는 제 1 데이터 캐시를 사용하여 상기 메인 메모리에 기입되며, 상기 제 1 데이터 캐시는 상기 메인 메모리와의 동기화 여부를 지시하는 더티 비트를 사용하여 관리된다.
Description
본 발명은 프로세서에 관한 것으로, 좀 더 상세하게는 복수의 프로세서들을 포함하는 멀티 코어 프로세서 및 그것의 캐시 관리 방법에 관한 것이다.
중앙처리장치(Central Processing Unit: 이하, CPU)의 응용 영역은 시스템 반도체 전분야에 걸쳐서 광대하게 적용되고 있다. 프로세서(Processor)는 메인 메모리(Main memory)에서 프로그램을 읽어와 절차에 따라 연산을 수행할 수 있다. 그리고 프로세서는 연산 수행 결과(즉, 처리 결과)를 메인 메모리에 저장할 수 있다. 프로세서와 메인 메모리 간의 데이터 교환 성능과 속도를 개선하기 위해, 프로세서와 메인 메모리 사이에는 캐시(Cache)가 배치될 수 있다. 프로세서의 처리 결과 또는 메인 메모리에 저장된 프로그램 중 일부가 캐시에 저장될 수 있다. 캐시는 디램으로 대표되는 메인 메모리에 비해서 읽고 쓰는 속도가 훨씬 빠르다. 더불어, 프로세서와 메인 메모리 사이에 위치하는 캐시를 사용하는 경우, 프로세서의 동작 오류를 모니터링(Monitoring)하거나 모니터링된 오류를 정정할 수 있다.
최근에는 시스템에서 요구되는 고성능과 고신뢰성을 제공하기 위해서는 멀티 코어 기술과 캐시 메모리의 활용 기술이 중요해지고 있다. 뿐만 아니라, 고성능 요구에 따라 다양한 모바일 장치들에도 멀티 코어 기술과 캐시 일관성을 제공하기 위한 기술이 활발히 적용되고 있다. 이러한 고성능 및 고신뢰성을 요구하는 멀티 코어 CPU에서는 CPU의 오류(Fault)를 인지하고 복구하는 기술이 절대적으로 필요하다.
본 발명은 캐시 메모리를 사용하는 가변적 이중화 기능을 갖는 멀티 코어 시스템의 오류(Fault)를 용이하게 검출하고 정정할 수 있는 캐시 구조 또는 프로세서의 구조를 제공하는데 있다.
본 발명의 실시 예에 따른 메인 메모리에 연결되며, 프로세서들 각각이 동일한 테스크를 수행하는 듀얼 모듈러 리던던시 모드를 갖는 멀티 코어 프로세서는, 상기 테스크를 수행하여 제 1 쓰기 데이터를 생성하고, 상기 제 1 쓰기 데이터에 대한 오류 검출 동작 후에 상기 제 1 쓰기 데이터를 상기 메인 메모리 또는 주변 장치에 기입하는 제 1 프로세서, 상기 테스크를 수행하여 제 2 쓰기 데이터를 생성하고, 상기 제 2 쓰기 데이터에 대한 오류 검출 동작 후에 상기 제 2 쓰기 데이터의 상기 메인 메모리 또는 주변 장치로의 전달을 차단하는 제 2 프로세서, 그리고 상기 듀얼 모듈러 리던던시 모드시, 상기 제 1 쓰기 데이터와 상기 제 2 쓰기 데이터를 비교하는 상기 오류 검출 동작을 수행하는 오류 매니저를 포함하되, 상기 제 1 쓰기 데이터는 제 1 데이터 캐시를 사용하여 상기 메인 메모리 또는 주변 장치에 기입되며, 상기 제 1 데이터 캐시는 상기 메인 메모리와의 동기화 여부를 지시하는 더티 비트를 사용하여 관리된다.
본 발명의 실시 예에 따른 제 1 프로세서와 제 2 프로세서가 동일한 테스크를 수행하는 듀얼 모듈러 리던던시 모드를 갖는 멀티 코어 프로세서의 캐시 관리 방법은, 상기 제 1 프로세서로부터 상기 테스크의 결과로 생성된 제 1 쓰기 데이터와, 상기 제 2 프로세서로부터 상기 테스크의 수행 결과로 생성된 제 2 쓰기 데이터를 비교하는 단계, 상기 제 1 쓰기 데이터를 제 1 데이터 캐시에, 상기 제 2 쓰기 데이터를 제 2 데이터 캐시에 저장하는 단계, 그리고 상기 비교 결과에 따라 상기 제 1 데이터 캐시에 저장된 상기 제 1 쓰기 데이터를 상기 메인 메모리에 쓰는 단계를 포함하되, 상기 제 2 데이터 캐시로부터 상기 메인 메모리로의 쓰기 동작은 차단된다.
본 발명의 실시 예에 따른 프로세서 시스템은 가변적 이중화 기능이 있는 멀티 코어의 효율적인 오류 감지 및 정정을 수행한다. 따라서, 멀티 코어 프로세서의 높은 신뢰성이 제공될 수 있다.
도 1은 본 발명의 실시 예에 따른 멀티 코어 프로세서를 보여주는 블록도이다.
도 2는 본 발명의 듀얼 모듈러 리던던시(DMR) 모드에서 듀얼 코어 프로세서의 기능을 좀더 상세하게 보여주는 블록도이다.
도 3은 도 2의 오류 매니저의 동작을 간략히 보여주는 순서도이다.
도 4는 리딩 코어의 동작을 보여주는 순서도이다.
도 5는 트레일링 코어의 동작을 보여주는 순서도이다.
도 6은 본 발명의 듀얼 코어(DC) 모드에서 듀얼 코어 프로세서의 기능을 보여주는 블록도이다.
도 2는 본 발명의 듀얼 모듈러 리던던시(DMR) 모드에서 듀얼 코어 프로세서의 기능을 좀더 상세하게 보여주는 블록도이다.
도 3은 도 2의 오류 매니저의 동작을 간략히 보여주는 순서도이다.
도 4는 리딩 코어의 동작을 보여주는 순서도이다.
도 5는 트레일링 코어의 동작을 보여주는 순서도이다.
도 6은 본 발명의 듀얼 코어(DC) 모드에서 듀얼 코어 프로세서의 기능을 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 멀티 코어 프로세서를 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 멀티 코어 프로세서(100)는 제 1 프로세서(110), 제 2 프로세서(120), 오류 매니저(130), 복구 모듈(140), 그리고 리셋 모듈(150)을 포함할 수 있다. 멀티 코어 프로세서(100)는 메인 메모리(200) 또는 주변 장치(300)에 접근하여 데이터를 기입하거나 읽어온다.
본 발명의 멀티 코어 프로세서(100)는 듀얼 코어(Dual-Core: 이하, DC) 모드와 듀얼 모듈러 리던던시(Dual-Modular Redundancy: 이하, DMR) 모드의 2개 동작 모드로 동작할 수 있다. 듀얼 코어(DC) 모드에서, 제 1 프로세서(110)와 제 2 프로세서(120)는 각각 독립적으로 테스크를 처리하고, 독립적으로 메인 메모리(200) 또는 주변 장치(300)에 접근한다. 반면, 듀얼 모듈러 리던던시(DMR) 모드시에는 제 1 프로세서(110)는 리딩 코어(Leading core), 제 2 프로세서(120)는 트레일링 코어(Trailing core)로 동작한다. 즉, 듀얼 모듈러 리던던시(DMR) 모드에서는 제 1 프로세서(110)와 제 2 프로세서(120)는 동일한 테스크를 수행한다. 하지만, 듀얼 모듈러 리던던시(DMR) 모드에서는 리딩 코어인 제 1 프로세서(110)만이 메인 메모리(200)에 쓰기 권한을 갖는다. 듀얼 모듈러 리던던시(DMR) 모드에서는 제 1 프로세서(110)는 주변 장치(300)에 대해 쓰거나 읽기 가능한 접근 권한을 갖는다. 듀얼 모듈러 리던던시(DMR) 모드에서 트레일링 코어인 제 2 프로세서(120)는 메인 메모리(200)에 대한 읽기 권한만을 갖고 연산 결과를 메인 메모리(200)에 적용하거나, 주변 장치(300)의 레지스터들을 변경하지 못하도록 제어된다.
제 1 프로세서(110)는 제 1 프로세서 코어(112)와 제 1 캐시 유닛(114)을 포함할 수 있다. 제 1 프로세서 코어(112)는 제 1 프로세서(110) 내부에서 테스크를 수행하기 위한 제반 연산들을 수행한다. 제 1 캐시 유닛(114)은 제 1 프로세서 코어(112)에 캐시 기능을 제공한다.
듀얼 코어(DC) 모드시, 제 1 프로세서(110)는 제 1 캐시 유닛(114)을 사용하여 메인 메모리(200) 또는 주변 장치(300)와 데이터(Data1)를 교환한다. 교환되는 데이터(Data1)는 메인 메모리(200)로부터 읽어오는 독출 데이터와, 제 1 프로세서(110)가 생성하여 메인 메모리(200)에 기입하는 쓰기 데이터를 포함한다. 예를 들면, 제 1 프로세서(110)는 메인 메모리(200)에 로드된 프로그램을 읽어와 순차적으로 실행할 것이다. 이때, 제 1 프로세서(110)는 빈번하게 읽어와야 하는 데이터나 업데이트되어야 하는 데이터를 제 1 캐시 유닛(114)에 저장한다. 또한, 제 1 프로세서(110)는 프로그램의 실행 결과로부터 생성되는 데이터를 제 1 캐시 유닛(114)에 저장한다. 제 1 캐시 유닛(114)에 캐시된 데이터는 메인 메모리(200) 또는 주변 장치(300)와의 일치 여부를 나타내는 더티 비트(Dirty bit)를 포함할 수 있다. 더티 비트에 의해서 제 1 캐시 유닛(114) 상에서 업데이트되는 데이터와 메인 메모리(200)와의 동기화 여부가 관리된다. 제 1 캐시 유닛(114)에는 제 1 캐시 유닛(114)의 데이터에 오류가 존재하는지를 검출하기 위한 제 1 오류 검출기(116)를 포함할 수 있다. 제 1 오류 검출기(116)는 제 1 캐시 유닛(114)에 저장되는 데이터의 오류를 검출하고, 오류를 복구하기 위한 트랩 신호(F_trap1)를 복구 모듈(140)에 전달한다.
반면, 듀얼 모듈러 리던던시(DMR) 모드시, 제 1 프로세서(110)의 제 1 캐시 유닛(114)에 저장되는 데이터는 오류 매니저(130)에도 전달된다. 그리고 오류 매니저(130)에 의해서 오류 검출이 완료된 데이터는 메인 메모리(200)에 전달될 것이다. 특히, 듀얼 모듈러 리던던시(DMR) 모드시에는 제 1 프로세서(110)는 메인 메모리(200)나 주변 장치(300)로부터 데이터를 읽어올 수 있다. 메인 메모리(200)로부터 제공된 독출 데이터는 제 1 캐시 유닛(114)에 저장되고, 오류 매니저(130)에 전달된다. 오류 매니저(130)는 전달된 독출 데이터 중 주변 장치(300)로부터 읽혀진 데이터를 제 2 프로세서(120)의 제 2 캐시 유닛(124)에 전달한다. 즉, 듀얼 모듈러 리던던시(DMR) 모드시에는 제 1 프로세서(110)는 메인 메모리(200)나 주변 장치(300)에 데이터를 쓰거나 읽어내는 접근 권한을 가질 수 있다. 제 1 프로세서(110)는 메인 메모리(200)에 로드된 프로그램을 읽어와 순차적으로 실행할 것이다. 이때, 제 1 프로세서(110)는 고속으로 또는 빈번하게 읽어와야 하는 데이터를 제 1 캐시 유닛(114)에 저장한다.
제 2 프로세서(120)는 제 2 프로세서 코어(122)와 제 2 캐시 유닛(124)을 포함할 수 있다. 제 2 프로세서 코어(122)는 제 2 프로세서(120) 내부에서 제반 프로그램들을 처리하는 연산을 수행한다. 제 2 캐시 유닛(124)은 제 2 프로세서 코어(112)에 캐시 기능을 제공한다. 제 2 프로세서(120)는 듀얼 코어(DC) 모드시에만 메인 메모리(200) 또는 주변 장치(300)와 데이터(Data2)를 교환한다.
듀얼 코어(DC) 모드시, 제 2 프로세서(120)는 메인 메모리(200)에 로드된 프로그램들을 읽어와 순차적으로 실행할 것이다. 이때, 제 2 프로세서(120)는 고속으로 또는 빈번하게 업데이트되는 데이터를 제 2 캐시 유닛(124)에 저장한다. 제 2 프로세서(120)는 프로그램의 실행 결과로부터 생성되는 데이터를 제 2 캐시 유닛(124)에 저장한다. 제 1 프로세서(110)와 독립적으로 동작하는 듀얼 코어(DC) 모드시, 제 2 캐시 유닛(124)에 캐시된 데이터는 메인 메모리(200)와의 동기화를 위한 더티 비트(Dirty bit)를 포함할 수 있다. 제 2 캐시 유닛(124)에는 제 2 캐시 유닛(124)에 캐시된 데이터에 오류가 존재하는지를 검출하기 위한 제 2 오류 검출기(126)를 포함할 수 있다. 제 2 오류 검출기(126)는 제 2 캐시 유닛(124)에 저장되는 데이터의 오류를 검출하고, 오류를 복구하기 위한 트랩 신호(F_trap2)를 복구 모듈(140)에 전달한다.
반면, 듀얼 모듈러 리던던시(DMR) 모드시, 제 2 프로세서(120)의 제 2 캐시 유닛(124)에 저장되는 데이터의 메인 메모리(200)로의 쓰기는 차단되고 오류 매니저(130)에만 전달된다. 오류 매니저(130)는 제 1 프로세서(110)로부터 전달된 데이터(주소 포함)와 제 2 프로세서(120)로부터 전달된 데이터를 비교하여 멀티 코어 프로세서(100)의 오류를 판단할 것이다. 오류 매니저(130)로부터 반환되는 데이터가 제 2 캐시 유닛(124)에 저장된다. 하지만, 듀얼 모듈러 리던던시(DMR) 모드시에는 제 2 프로세서(120)는 메인 메모리(200)의 데이터를 읽지만 메인 메모리(200)에 데이터를 쓰지는 않는다. 따라서, 듀얼 모듈러 리던던시(DMR) 모드시에 제 2 캐시 유닛(124)의 메인 메모리(200)에 대한 더티 비트 관리는 수행될 필요가 없다. 더불어, 듀얼 모듈러 리던던시(DMR) 모드시에는 제 2 프로세서(120)는 주변 장치(300)에는 접근하지 않는다.오류 매니저(130)는 제 1 프로세서(110)와 제 2 프로세서(120) 각각으로부터 듀얼 모듈러 리던던시(DMR) 모드를 활성화하기 위한 레지스터 정보(DMR_EN)를 제공받을 수 있다. 제 1 프로세서(110)와 제 2 프로세서(120)의 DMR 레지스터(미도시)의 값이 인에이블(DMR_EN)로 제공되면, 오류 매니저(130)는 듀얼 모듈러 리던던시(DMR) 모드에 따른 오류 검출 동작을 활성화한다. 즉, 오류 매니저(130)는 듀얼 모듈러 리던던시(DMR) 모드시에 제 1 프로세서(110)와 제 2 프로세서(120)로부터 제공되는 데이터를 비교하여 연산의 오류 여부를 판단한다. 오류 매니저(130)는 제 1 프로세서(110)와 제 2 프로세서(120)로부터 제공되는 데이터가 동일하지 않은 경우에 듀얼 코어 프로세서(100)의 동작 오류로 판단한다. 그리고 오류 매니저(130)는 오류 플래그 신호(Fault_flag)를 복구 모듈(140)에 전달한다. 반면, 제 1 프로세서(110)와 제 2 프로세서(120)에 기입된 DMR 레지스터(미도시)의 값이 디스에이블(DMR_DIS)로 제공되면, 오류 매니저(130)는 오류 검출 동작없이 듀얼 코어(DC) 모드에 따른 코어들 각각에 대한 리셋 동작만을 수행한다.
복구 모듈(140)은 제 1 프로세서(110)와 제 2 프로세서(120)의 동작 오류가 검출되는 경우, 검출된 오류를 복구하기 위한 제반 제어 동작을 수행한다. 듀얼 코어(DC) 모드시에는 복구 모듈(140)은 제 1 프로세서(110)의 제 1 오류 검출기(116)로부터의 오류 트랩 신호(F_Trap1)에 응답하여 오류 복구 동작을 수행할 수 있다. 또한, 복구 모듈(140)은 제 2 프로세서(120)의 제 2 오류 검출기(126)로부터의 오류 트랩 신호(F_Trap2)에 응답하여 오류 복구 동작을 수행할 수 있다. 또한, 듀얼 모듈러 리던던시(DMR) 모드시에는, 복구 모듈(140)은 오류 매니저(130)로부터 제공되는 오류 플래그 신호(Fault_flag)에 응답하여 오류 복구 동작을 수행할 수 있다.
리셋 모듈(150)은 복구 모듈(140)의 제어에 따라 제 1 프로세서(110) 또는 제 2 프로세서(120)를 리셋시킬 수 있다. 더불어, 리셋 모듈(150)은 복구 모듈(140)의 제어에 따라 듀얼 코어 프로세서(100)를 포함하는 시스템의 리셋을 수행하는 시스템 리셋(RST_SYS) 신호를 생성할 수 있다.
메인 메모리(200)에는 운영 체제(OS)나 응용 프로그램들(Application Program), 그리고 듀얼 코어 프로세서(100)로부터 생성된 다양한 데이터를 저장할 수 있다. 메인 메모리(200)는 듀얼 코어(DC) 모드시에는 제 1 프로세서(110)와 제 2 프로세서(120) 모두로부터 접근될 수 있다. 하지만, 듀얼 모듈러 리던던시(DMR) 모드시에는 리딩 코어에 해당하는 제 1 프로세서(110)의 메인 메모리(200)로의 읽기 및 쓰기가 허용된다. 듀얼 모듈러 리던던시(DMR) 모드시 트레일링 코어에 대응하는 제 2 프로세서(120)는 메인 메모리(200)에 대한 읽기만이 허용된다.
상술한 바와 같이 본 발명의 듀얼 코어 프로세서(100)는 듀얼 코어(DC) 모드와 듀얼 모듈러 리던던시(DMR) 모드의 상이한 동작 모드를 갖는다. 그리고 제 1 프로세서(110)와 제 2 프로세서(120)에서 관리되는 캐시들은 각각의 모드에 따라 차등적으로 관리될 수 있다. 특히, 본 발명의 오류 매니저(130)에 따르면, 듀얼 모듈러 리던던시(DMR) 모드시에는 제 1 프로세서(110)와 제 2 프로세서(120)의 캐시들을 모니터링함으로써 용이하게 오류를 검출할 수 있다. 즉, 듀얼 모듈러 리던던시(DMR) 모드시 트레일링 코어인 제 2 프로세서(120)는 프로그램의 처리는 수행하지만, 메인 메모리(200)로의 쓰기는 차단되는 방식으로 캐시를 운용한다. 따라서, 듀얼 모듈러 리던던시(DMR) 모드에서의 오류 검출 및 복구의 성능을 향상시킬 수 있다.
도 2는 본 발명의 듀얼 모듈러 리던던시(DMR) 모드에서 듀얼 코어 프로세서의 기능을 좀더 상세하게 보여주는 블록도이다. 도 2를 참조하면, 듀얼 모듈러 리던던시(DMR) 모드에서, 제 1 프로세서(110)는 리딩 코어로 동작하고, 제 2 프로세서(120)는 트레일링 코어로 동작한다. 그리고 오류 매니저(130)는 제 1 프로세서(110)와 제 2 프로세서(120)의 캐시로부터 제공되는 데이터를 기반으로 동작 오류를 검출한다.
듀얼 모듈러 리던던시(DMR) 모드에 따른 동작을 위해, 제 1 프로세서(110)에 포함되는 제 1 캐시 유닛(114)은, 제 1 쓰기 버퍼(111), 제 1 DMR 레지스터(113), 제 1 명령어 캐시(115), 제 1 오류 검출기(116), 그리고 제 1 데이터 캐시(117)를 포함할 수 있다. 그리고 제 2 프로세서(120)에 포함되는 제 2 캐시 유닛(124)은, 제 2 쓰기 버퍼(121), 제 2 DMR 레지스터(123), 제 2 명령어 캐시(125), 제 2 오류 검출기(126), 그리고 제 2 데이터 캐시(127)를 포함할 수 있다.
먼저, 듀얼 모듈러 리던던시(DMR) 모드를 활성화하기 위하여 제 1 프로세서 코어(112)와 제 2 프로세서 코어(122)는 각각 DMR 레지스터들(113, 123)에 DMR 인에이블(DMR_EN)을 기입한다. 그러면, 듀얼 코어 모드로 독립적으로 테스크를 수행하던 제 1 프로세서(110)와 제 2 프로세서(120)는 각각 리딩 코어와 트레일링 코어로 동작을 전환한다. 즉, 듀얼 모듈러 리던던시(DMR) 모드에서 제 1 프로세서 코어(112)와 제 2 프로세서 코어(122)는 동일한 테스크(Task)를 수행한다. 이때, 제 1 프로세서(110)와 제 2 프로세서(120)의 동작 주파수는 달라질 수 있다. 예컨대, 리딩 코어인 제 1 프로세서(110)의 동작 주파수는 트레일링 코어인 제 2 프로세서(120)의 동작 주파수보다 클 수 있다. 또한, DMR 레지스터들(113, 123)의 값에 따라 오류 매니저(130)는 제 1 프로세서(110)와 제 2 프로세서(120)에서 생성된 데이터를 비교하는 오류 검출 동작을 활성화할 것이다.
듀얼 모듈러 리던던시(DMR) 모드시, 리딩 코어로 동작하는 제 1 프로세서(110)는 메인 메모리(200)에 데이터를 쓰거나 읽을 수 있다. 즉, 제 1 프로세서(110)는 메인 메모리(200)에 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 전달하거나, 메인 메모리(200)로부터 독출 어드레스(Waddr)와 독출 데이터(Rdata)를 제공받을 수 있다. 반면, 제 2 프로세서(120)는 듀얼 모듈러 리던던시(DMR) 모드시 메인 메모리(200)에 대한 읽기만이 허용된다. 제 2 프로세서(120)는 듀얼 모듈러 리던던시(DMR) 모드시에는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 생성한다. 하지만, 듀얼 모듈러 리던던시(DMR) 모드시 제 2 프로세서(120)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 메인 메모리(200)에 전달하지 않는다. 대신, 듀얼 모듈러 리던던시(DMR) 모드시 제 2 프로세서(120)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 오류 매니저(130)에만 제공한다.
좀더 구체적으로 설명하면, 듀얼 모듈러 리던던시(DMR) 모드시 리딩 코어로 동작하는 제 1 프로세서 코어(112)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 생성하여 제 1 쓰기 버퍼(111)에 기입할 것이다. 그러면, 제 1 쓰기 버퍼(111)에 기입된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)는 오류 매니저(130)에 전달된다. 마찬가지로, 트레일링 코어로 동작하는 제 2 프로세서 코어(122)에서도 제 1 프로세서 코어(112)와 동일한 테스크를 수행할 것이다. 제 2 프로세서 코어(122)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 생성하여 제 2 쓰기 버퍼(121)에 기입할 것이다. 그러면, 제 2 쓰기 버퍼(121)에 기입된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)는 오류 매니저(130)에 전달된다.
듀얼 모듈러 리던던시(DMR) 모드시, 오류 매니저(130)는 제 1 쓰기 버퍼(111)와 제 2 쓰기 버퍼(121) 각각으로부터 제공되는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 비교한다. 그리고 비교 이후에 오류 매니저(130)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 1 데이터 캐시(117)와 제 2 데이터 캐시(127)에 반환한다. 만일, 제 1 쓰기 버퍼(111)와 제 2 쓰기 버퍼(121)로부터 제공된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)가 다른 경우, 오류 매니저(130)는 동작 오류로 판단한다. 그리고 오류 매니저(130)는 복구 모듈(140, 도 1 참조)에 오류 플래그 또는 오류 트랩 정보를 전송할 것이다. 이때, 제 1 캐시 유닛(114)의 내부에 포함되는 제 1 오류 검출기(116)나, 제 2 캐시 유닛(124)의 내부에 포함되는 제 2 오류 검출기(126)는 제 1 데이터 캐시(117)와 제 2 데이터 캐시(127)의 오류를 모니터링하고 오류 트랩 정보를 복구 모듈(140)에 전달할 수도 있다.
제 1 데이터 캐시(117)에 저장된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)는 듀얼 코어(DC) 모와 듀얼 모듈러 리던던시(DMR) 모드 모두에서 더티 비트(Dirty bit)를 사용하여 메인 메모리(200)와의 동기화될 수 있다. 하지만, 듀얼 모듈러 리던던시(DMR) 모드시 제 2 데이터 캐시(127)에 저장된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)는 더티 비트(Dirty bit)를 적용할 필요가 없다. 왜냐하면, 듀얼 모듈러 리던던시(DMR) 모드시에는 제 2 데이터 캐시(127)로부터 메인 메모리(200)로의 데이터 쓰기는 발생하지 않기 때문이다.
듀얼 모듈러 리던던시(DMR) 모드시, 메인 메모리(200)로부터 전달되는 독출 어드레스(Raddr_M)와 독출 데이터(Rdata_M)는 제 1 데이터 캐시(117) 및 제 2 데이터 캐시(127)에 저장된다. 그리고 제 1 데이터 캐시(117)와 및 제 2 데이터 캐시(127)에 저장된 독출 어드레스(Raddr_M)와 독출 데이터(Rdata_M)는 오류 매니저(130)에 전달될 것이다. 반면, 듀얼 모듈러 리던던시(DMR) 모드시에 주변 장치(300)로부터 전달되는 독출 어드레스(Raddr_P)와 독출 데이터(Rdata_P)는 제 1 데이터 캐시(117)에만 우선 저장된다. 그리고 제 1 데이터 캐시(117)에 저장된 독출 어드레스(Raddr_P)와 독출 데이터(Rdata_P)는 오류 매니저(130)에 전달된 후에, 제 2 데이터 캐시(127)에 전달될 것이다.
특히, 듀얼 모듈러 리던던시(DMR) 모드시, 리딩 코어인 제 1 프로세서(110)의 동작 주파수는 트레일링 코어인 제 2 프로세서(120)의 동작 주파수보다 클 수 있다. 듀얼 모듈러 리던던시(DMR) 모드시 제 1 프로세서(110)와 제 2 프로세서(120)는 메인 메모리(200)에 각각 독립적인 읽기 동작을 수행할 수 있다. 따라서, 듀얼 모듈러 리던던시(DMR) 모드시, 상이한 동작 주파수로 인해 동일한 테스크가 수행되더라도 제 1 프로세서(110)와 제 2 프로세서(120)의 처리 시점은 랜덤하게 달라질 수 있다. 이러한 동작 주파수의 차이에 기인하는 비동기성으로 인해, 시간적 리던던시(Temporary Redundancy)가 추가적으로 제공될 수 있다.
더불어, 주변 장치(300)로부터 전달되는 독출 어드레스(Raddr_P)와 독출 데이터(Rdata_P)는 제 1 데이터 캐시(117)에만 우선 저장된다. 그리고 제 1 데이터 캐시(117)에 저장된 독출 어드레스(Raddr_P)와 독출 데이터(Rdata_P)는 오류 매니저(130)에 전달된 후에, 제 2 데이터 캐시(127)에 전달될 것이다.
이상에서 설명된 바에 따르면, 듀얼 모듈러 리던던시(DMR) 모드시 오류 매니저(130)는 제 1 프로세서(110)와 제 2 프로세서(120)의 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 비교하여 오류 발생을 검출한다. 그리고 오류 매니저(130)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 1 프로세서(110)와 제 2 프로세서(120) 각각의 데이터 캐시들(117, 127)에 반환한다. 이때, 리딩 코어에 대응하는 제 1 데이터 캐시(117)의 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)만이 메인 메모리(200)에 전달될 것이다.
도 3은 도 2의 오류 매니저의 동작을 간략히 보여주는 순서도이다. 도 3을 참조하면, 오류 매니저(130)는 듀얼 모듈러 리던던시(DMR) 모드시에는 동일한 테스크를 수행하는 제 1 프로세서(110)와 제 2 프로세서(120)의 데이터를 비교하여 오류를 검출할 수 있다. 듀얼 모듈러 리던던시(DMR) 모드시에는 제 1 프로세서(110)와 제 2 프로세서(120)는 동일한 테스크를 수행하지만, 서로 다른 동작 주파수로 동작할 수 있다. 예컨데, 듀얼 모듈러 리던던시(DMR) 모드시 리딩 코어인 제 1 프로세서(110)의 동작 주파수는 트레일링 코어인 제 2 프로세서(120)의 동작 주파수보다 높을 수 있다.
S110 단계에서, 오류 매니저(130)는 제 1 캐시 유닛(114)과 제 2 캐시 유닛(124) 각각에 포함되는 DMR 레지스터들(113, 123)을 독출한다. DMR 레지스터들(113, 123)은 제 1 프로세서 코어(112)와 제 2 프로세서 코어(122)에 의해서 설정된다.
S120 단계에서, 오류 매니저(130)는 DMR 레지스터들(113, 123)에 저장된 값을 참조하여 동작 분기를 수행한다. 만일, DMR 레지스터들(113, 123)에 저장된 값들이 각각 인에이블 상태(DMR_EN)인 경우(예 방향), 절차는 S140 단계로 이동한다. 반면, DMR 레지스터들(113, 123)에 저장된 값이 각각 인에이블 상태(DMR_EN)가 아닌 경우(아니오 방향), 절차는 S130 단계로 이동한다.
S130 단계에서, 오류 매니저(130)는 이전의 듀얼 코어 모드의 기능을 수행할 것이다. 예를 들면, 오류 매니저(130)는 제 1 캐시 유닛(114) 및 제 2 캐시 유닛(124)에 리셋 신호(RST) 신호의 제공 기능만 담당할 것이다.
S140 단계에서, 오류 매니저(130)는 제 1 쓰기 버퍼(111)와 제 2 쓰기 버퍼(121) 각각으로부터 제공되는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제공받는다.
S150 단계에서, 오류 매니저(130)는 동일한 테스크를 수행한 제 1 프로세서(110)와 제 2 프로세서(120)가 생성한 쓰기 어드레스들(Waddr)과 쓰기 데이터들(Wdata)을 비교한다. 만일, 제 1 프로세서(110)와 제 2 프로세서(120)가 생성한 쓰기 어드레스들(Waddr)과 쓰기 데이터들(Wdata)이 동일한 경우(예 방향), 절차는 S150 단계로 이동한다. 반면, 제 1 프로세서(110)와 제 2 프로세서(120)가 생성한 쓰기 어드레스들(Waddr)과 쓰기 데이터들(Wdata)이 다른 경우(아니오 방향), 절차는 S170 단계로 이동한다.
S160 단계에서, 오류 매니저(130)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 1 데이터 캐시(117)와 제 2 데이터 캐시(127)에 전달한다. 제 1 데이터 캐시(117)에 제공된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 더티 비트를 사용하여 업데이트할 수 있다. 하지만, 제 2 데이터 캐시(127)의 데이터는 더티 비트를 활용하는 메인 메모리(200)와의 동기화는 수행될 필요가 없다. 듀얼 모듈러 리던던시(DMR) 모드시, 제 2 데이터 캐시(127)의 데이터에 대한 메인 메모리(200)로의 쓰기는 차단되기 때문이다. 이후, 절차는 추가적인 오류 검출을 위해 S140 단계로 복귀한다.
S170 단계에서, 오류 매니저(130)는 듀얼 모듈러 리던던시(DMR) 모드의 동작에서 오류가 발생한 것으로 판단하고, 복구 모듈(140, 도 1 참조)에 오류 플래그 또는 오류 트랩 정보를 전송할 것이다. 이때, 제 1 캐시 유닛(114)의 내부에 포함되는 제 1 오류 검출기(116)나, 제 2 캐시 유닛(124)의 내부에 포함되는 제 2 오류 검출기(126)는 제 1 데이터 캐시(117)와 제 2 데이터 캐시(127)의 오류를 모니터링하고 오류 트랩 정보를 복구 모듈(140)에 전달할 수 있다.
이상에서는 제 1 프로세서(110)와 제 2 프로세서(120)가 동일한 테스크를 수행하는 듀얼 모듈러 리던던시(DMR) 모드에서 오류의 검출 및 복구를 수행하는 오류 매니저(130)의 동작이 간략히 설명되었다. 오류 매니저(130)는 듀얼 모듈러 리던던시(DMR) 모드에서만 입력되는 데이터를 비교하여 동작 오류를 검출할 것이다.
도 4는 리딩 코어에 대응하는 제 1 프로세서의 동작을 간략히 보여주는 순서도이다. 도 4를 참조하면, 제 1 프로세서(110)는 듀얼 코어(DC) 모드시에는 제 2 프로세서(120)와 독립적으로 테스크를 수행한다. 반면, 제 1 프로세서(110)는 듀얼 모듈러 리던던시(DMR) 모드시에는 제 2 프로세서(120)와 동일한 테스크를 수행한다. 즉, 리딩 코어로 동작하는 제 1 프로세서(110)는 동작 모드에 관계없이 메인 메모리(200)에 접근할 수 있다.
S210 단계에서, 제 1 프로세서(110)는 소프트웨어나 사용자 요청에 의한 듀얼 모듈러 리던던시(DMR) 모드의 실행 요청이 수신되었는지 모니터링한다. 만일, 듀얼 모듈러 리던던시(DMR) 모드의 실행 요청이 존재하는 것으로 판단되면(예 방향), 절차는 S220 단계로 이동한다. 하지만, 듀얼 모듈러 리던던시(DMR) 모드의 실행 요청이 존재하지 않는 것으로 판단되면(아니오 방향), 절차는 S215 단계로 이동한다.
S215 단계에서, 제 1 프로세서(110)는 듀얼 코어(DC) 모드에 따라 제 1 캐시 유닛(114)을 제어할 것이다. 즉, 제 1 프로세서(110)는 제 1 쓰기 버퍼(111)에 기입된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 오류 매니저(130)로 전달하지 않고 제 1 데이터 캐시(117)로 전달할 것이다. 또한, 제 1 프로세서(110)는 메인 메모리(200)로부터 독출된 독출 어드레스(Raddr)와 독출 데이터(Rdata)를 오류 매니저(130)를 경유하지 않고 제 1 프로세서 코어(112)에 전달할 수 있다.
S220 단계에서, 제 1 프로세서(110)는 듀얼 모듈러 리던던시(DMR) 모드의 실행 요청에 따라, DMR 레지스터(113)를 설정한다. 제 1 프로세서(110)는 DMR 레지스터(113)에 인에이블 상태(DMR_EN)를 기입할 것이다. 그러면, 오류 매니저(130)는 듀얼 모듈러 리던던시(DMR) 모드에서 활성화되는 오류 검출 동작을 수행할 것이다.
S230 단계에서, 제 1 프로세서(110)는 제 1 프로세서 코어(112)에서 생성된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 1 쓰기 버퍼(111)에 기입한다. 제 1 프로세서(110)는 제 1 쓰기 버퍼(111)에 기입된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 오류 매니저(130)에 전달한다. 오류 매니저(130)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 사용하여 듀얼 모듈러 리던던시(DMR) 모드에 따른 오류 검출 동작을 수행할 것이다. 그리고 오류 매니저(130)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 1 프로세서(110)에 반환할 것이다.
S240 단계에서, 제 1 프로세서(110)는 오류 매니저(130)로부터 반환된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 1 데이터 캐시(117)에 기입한다. 그리고 제 1 프로세서(110)는 제 1 데이터 캐시(117)의 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 더티 비트를 사용하여 관리할 수 있다.
S250 단계에서, 제 1 프로세서(110)는 제 1 데이터 캐시(117)에 업데이트된 쓰기 데이터(Wdata)를 메인 메모리(200) 또는 주변 장치(300)에 기입한다.
S260 단계에서, 제 1 프로세서(110)는 리셋 신호(RST)가 제공되었는지 모니터링한다. 오류 매니저(130)나 제 1 오류 검출기(116)에 의해서 검출된 오류로 인해서 제 1 프로세서(110)에 대한 리셋이 필요한 경우, 리셋 신호(RST)가 제공될 수 있다. 리셋 신호(RST)가 존재하는 경우(예 방향), 제 1 프로세서(110)의 제반 동작은 종료될 것이다. 반면, 리셋 신호(RST)가 존재하지 않는 경우(아니오 방향), 절차는 제 1 프로세서(110)의 동작 모드를 모니터링하기 위한 S210 단계로 복귀할 것이다.
도 5는 트레일링 코어에 대응하는 제 2 프로세서의 동작을 간략히 보여주는 순서도이다. 도 5를 참조하면, 제 2 프로세서(120)는 듀얼 코어(DC) 모드시에는 제 1 프로세서(110)와 독립적으로 테스크를 수행한다. 반면, 제 2 프로세서(120)는 듀얼 모듈러 리던던시(DMR) 모드시에는 제 1 프로세서(110)와 동일한 테스크를 수행한다. 트레일링 코어로 동작하는 제 2 프로세서(120)는 듀얼 코어(DC) 모드시에는 메인 메모리(200)에 데이터를 쓰거나 읽을 수 있다.. 하지만, 듀얼 모듈러 리던던시(DMR) 모드시에는 제 2 프로세서(120)의 메인 메모리(200)로의 읽기만 허용되고, 쓰기는 차단될 것이다.
S310 단계에서, 제 2 프로세서(120)는 소프트웨어나 사용자 요청에 의한 듀얼 모듈러 리던던시(DMR) 모드의 실행 요청이 수신되었는지 모니터링한다. 만일, 듀얼 모듈러 리던던시(DMR) 모드의 실행 요청이 존재하는 것으로 판단되면(예 방향), 절차는 S320 단계로 이동한다. 하지만, 듀얼 모듈러 리던던시(DMR) 모드의 실행 요청이 존재하지 않는 것으로 판단되면(아니오 방향), 절차는 S315 단계로 이동한다.
S315 단계에서, 제 2 프로세서(120)는 듀얼 코어(DC) 모드로 제 2 캐시 유닛(124)을 제어할 것이다. 즉, 제 2 프로세서(120)는 제 2 쓰기 버퍼(121)에 기입된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 오류 매니저(130)로 전달하지 않고 제 2 데이터 캐시(127)로 전달할 것이다. 제 2 프로세서(120)는 듀얼 코어(DC) 모드에서 제 2 데이터 캐시(127)의 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 메인 메모리(200)나 주변 장치(300)에 직접 기입할 것이다. 또한, 듀얼 코어(DC) 모드시 제 2 프로세서(120)는 메인 메모리(200)로부터 독출된 독출 어드레스(Raddr)와 독출 데이터(Rdata)를 오류 매니저(130)를 경유하지 않고 제 2 프로세서 코어(122)에 전달할 수 있다.
S320 단계에서, 제 2 프로세서(120)는 듀얼 모듈러 리던던시(DMR) 모드의 실행 요청에 따라, 제 2 DMR 레지스터(123)를 설정한다. 제 2 프로세서(120)는 제 2 DMR 레지스터(123)에 DMR 모드를 인에이블 상태(DMR_EN)로 기입할 것이다. 그러면, 오류 매니저(130)는 듀얼 모듈러 리던던시(DMR) 모드에서 활성화되는 오류 검출 동작을 수행할 것이다.
S330 단계에서, 제 2 프로세서(120)는 제 2 프로세서 코어(122)에서 생성된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 2 쓰기 버퍼(121)에 기입한다. 제 2 프로세서(120)는 제 2 쓰기 버퍼(121)에 기입된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 오류 매니저(130)에 전달한다. 오류 매니저(130)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 사용하여 듀얼 모듈러 리던던시(DMR) 모드의 오류를 검출할 것이다. 그리고 오류 매니저(130)는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 2 프로세서(120)에 반환할 것이다.
S340 단계에서, 제 2 프로세서(120)는 오류 매니저(130)로부터 반환된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)를 제 2 데이터 캐시(127)에 기입한다. 이때, 제 2 데이터 캐시(127)에 저장된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)는 메인 메모리(200)나 주변 장치(300)에 기입될 필요가 없기 때문에 더티 비트와 같은 방식의 동기화 처리는 수행될 필요가 없다.
S350 단계에서, 제 2 프로세서(120)는 리셋 신호(RST)가 제공되었는지 모니터링한다. 오류 매니저(130)나 제 2 오류 검출기(126)에 의해서 검출된 오류로 인해서 제 2 프로세서(120)에 대한 리셋이 필요한 경우, 리셋 신호(RST)가 제공될 수 있다. 리셋 신호(RST)가 존재하는 경우(예 방향), 제 2 프로세서(120)의 제반 동작은 종료될 것이다. 반면, 리셋 신호(RST)가 존재하지 않는 경우(아니오 방향), 절차는 제 2 프로세서(120)의 동작 모드를 모니터링하기 위한 S310 단계로 복귀할 것이다.
이상에서는 듀얼 모듈러 리던던시(DMR) 모드시, 제 1 프로세서(110), 제 2 프로세서(120), 그리고 오류 매니저(130) 각각의 동작들이 간략히 설명되었다. 듀얼 모듈러 리던던시(DMR) 모드시, 제 1 프로세서(110)와 제 2 프로세서(120)는 동일한 테스크를 수행한다. 다른 실시 예에서, 듀얼 모듈러 리던던시(DMR) 모드시에 제 1 프로세서(110)와 제 2 프로세서(120)는 서로 상이한 동작 주파수 조건에서 동일한 테스크를 수행할 수 있다. 그리고 오류 매니저(130)는 동일한 테스크를 수행한 제 1 프로세서(110)와 제 2 프로세서(120)로부터의 데이터를 비교하여 오류의 발생 여부를 검출할 수 있다.
도 6은, 본 발명의 듀얼 코어(DC) 모드에서 듀얼 코어 프로세서의 기능을 보여주는 블록도이다. 도 6을 참조하면, 듀얼 코어(DC) 모드에서, 제 1 프로세서(110)와 제 2 프로세서(120)는 각각 독립적으로 테스크를 수행하고, 각각 독립적으로 메인 메모리(200) 또는 주변 장치(300)에 접근할 수 있다. 이때, 오류 매니저(130)의 오류 검출 동작은 비활성화된다. 여기서, 제 1 프로세서 코어(112), 제 1 캐시 유닛(114), 제 2 프로세서 코어(122), 제 2 캐시 유닛(124), 그리고 오류 매니저(130)의 구성은 도 2의 그것들과 실질적으로 동일하다. 하지만, DMR 레지스터들(113, 123)의 DMR 모드가 디스에이블 상태(DMR_DIS)로 설정됨에 따라 제 1 프로세서(110)와 제 2 프로세서(120)는 독립적으로 메인 메모리(200)에 접근할 수 있다.
제 1 프로세서(110)에 포함되는 제 1 캐시 유닛(114)은, 제 1 쓰기 버퍼(111), DMR 레지스터(113), 제 1 명령어 캐시(115), 제 1 오류 검출기(116), 그리고 제 1 데이터 캐시(117)를 포함할 수 있다. 그리고 제 2 프로세서(120)에 포함되는 제 2 캐시 유닛(124)은, 제 2 쓰기 버퍼(121), 제 2 DMR 레지스터(123), 제 2 명령어 캐시(125), 제 2 오류 검출기(126), 그리고 제 2 데이터 캐시(127)를 포함할 수 있다.
듀얼 코어(DC) 모드시, 제 1 프로세서 코어(112)와 제 2 프로세서 코어(122)는 각각 DMR 레지스터들(113, 123)에 DMR 모드를 디스에이블 상태(DMR_DIS)로 기입한다. 그러면, 제 1 프로세서(110)와 제 2 프로세서(120)는 듀얼 코어(DC) 모드로 독립적으로 테스크를 수행하게 된다. 오류 매니저(130)는 제 1 프로세서(110)와 제 2 프로세서(120)에서 생성된 데이터에 대한 비교 동작을 중지할 것이다.
듀얼 코어(DC) 모드시, 제 1 프로세서(110)는 오류 매니저(130)에 데이터를 전달하는 동작을 제외하고는 듀얼 모듈러 리던던시(DMR) 모드와 동일하게 동작할 수 있다. 즉, 제 1 프로세서(110)는 오류 매니저(130)와 관계없이 메인 메모리(200)에 데이터를 기입하고, 메인 메모리(200)로부터 데이터를 읽어온다. 즉, 제 1 프로세서 코어(112)가 생성하는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)의 경우, 제 1 쓰기 버퍼(111)로부터 제 1 데이터 캐시(117)에 직접 전달될 수 있다. 그리고 제 1 데이터 캐시(117)에 저장된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)는 메인 메모리(200)에 기입될 수 있다.
듀얼 코어(DC) 모드시, 제 2 프로세서(120)는 제 1 프로세서(110)의 동작과 관계없이 데이터를 생성하고, 생성된 데이터를 메인 메모리(200) 또는 주변 장치(300)에 기입할 수 있다. 즉, 제 2 프로세서(120)는 오류 매니저(130)나, 제 1 프로세서(110)의 테스크와는 관계없이 메인 메모리(200) 또는 주변 장치(300)에 데이터를 기입하고, 메인 메모리(200) 또는 주변 장치(300)로부터 데이터를 읽어온다. 예를 들면, 제 2 프로세서 코어(122)가 생성하는 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)는 제 2 쓰기 버퍼(121)로부터 제 2 데이터 캐시(117)에 직접 전달될 수 있다. 그리고 제 2 데이터 캐시(127)에 저장된 쓰기 어드레스(Waddr)와 쓰기 데이터(Wdata)는 메인 메모리(200) 또는 주변 장치(300)에 기입될 수 있다.
이상에서 설명된 바에 따르면, 듀얼 코어(DC) 모드시 오류 매니저(130)는 비활성화되고, 제 1 프로세서(110)와 제 2 프로세서(120)는 각각 독립적으로 테스크를 수행하고, 메인 메모리(200)나 주변 장치(300)에 접근할 수 있다.
이상에서는 본 발명의 특징을 설명하기 위해 듀얼 코어 프로세서(100)가 멀티 코어 프로세서의 예로 설명되었다. 하지만, 복수의 프로세서들은 듀얼 코어 프로세서에만 국한되지 않음은 잘 이해될 것이다. 즉, 3개 이상의 프로세서들이 각 동작 모드에 따라 리딩 코어와 트레일링 코어로 동작할 수 있을 것이다. 이때에도, 오류 매니저(130)는 각 프로세서들의 캐시에 저장되는 데이터를 비교하여 오류의 존재 여부를 검출할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
Claims (17)
- 메인 메모리 또는 주변 장치에 연결되며, 프로세서들 각각이 동일한 테스크를 수행하는 듀얼 모듈러 리던던시 모드를 갖는 멀티 코어 프로세서에 있어서:
상기 테스크를 수행하여 제 1 쓰기 데이터를 생성하고, 상기 제 1 쓰기 데이터에 대한 오류 검출 동작 후에 상기 제 1 쓰기 데이터를 상기 메인 메모리 또는 상기 주변 장치에 기입하는 제 1 프로세서;
상기 테스크를 수행하여 제 2 쓰기 데이터를 생성하고, 상기 제 2 쓰기 데이터에 대한 오류 검출 동작 후에 상기 제 2 쓰기 데이터의 상기 메인 메모리 또는 상기 주변 장치로의 쓰기를 차단하는 제 2 프로세서; 그리고
상기 듀얼 모듈러 리던던시 모드시, 상기 제 1 쓰기 데이터와 상기 제 2 쓰기 데이터를 비교하는 상기 오류 검출 동작을 수행하는 오류 매니저를 포함하되,
상기 제 1 쓰기 데이터는 제 1 데이터 캐시를 사용하여 상기 메인 메모리에 기입되며, 상기 제 1 데이터 캐시는 상기 메인 메모리와의 동기화 여부를 지시하는 더티 비트를 사용하여 관리되고,
상기 제 1 프로세서는:
상기 제 1 쓰기 데이터를 생성하는 제 1 프로세서 코어; 및
상기 듀얼 모듈러 리던던시 모드시 상기 제 1 쓰기 데이터를 상기 메인 메모리로 전달하는 상기 제 1 데이터 캐시를 포함하는 제 1 캐시 유닛을 포함하고,
상기 제 1 캐시 유닛은:
상기 제 1 프로세서 코어로부터 전달되는 상기 제 1 쓰기 데이터를 저장하는 제 1 쓰기 버퍼;
상기 제 1 쓰기 버퍼에 연결되며, 상기 듀얼 모듈러 리던던시 모드의 활성화 여부가 기입되는 제 1 DMR 레지스터; 및
상기 제 1 데이터 캐시에 저장되는 제 1 쓰기 데이터의 오류를 검출하는 제 1 오류 검출기를 더 포함하는 멀티 코어 프로세서. - 삭제
- 삭제
- 제 1 항에 있어서,
상기 제 2 프로세서는:
상기 제 2 쓰기 데이터를 생성하는 제 2 프로세서 코어; 및
상기 듀얼 모듈러 리던던시 모드시에 상기 제 2 쓰기 데이터를 상기 오류 매니저에 제공하지만, 상기 메인 메모리로의 쓰기는 차단되는 제 2 캐시 유닛을 포함하는 멀티 코어 프로세서. - 제 4 항에 있어서,
상기 제 2 캐시 유닛은:
상기 제 2 쓰기 데이터를 저장하고, 상기 저장된 제 2 쓰기 데이터를 상기 오류 매니저에 전달하는 제 2 쓰기 버퍼;
상기 제 2 쓰기 버퍼에 연결되며, 상기 듀얼 모듈러 리던던시 모드의 활성화 여부가 기입되는 제 2 DMR 레지스터; 그리고
상기 오류 매니저로부터 반환된 상기 제 2 쓰기 데이터를 저장하는 제 2 데이터 캐시를 포함하는 멀티 코어 프로세서. - 제 5 항에 있어서,
상기 제 2 데이터 캐시는 상기 제 2 쓰기 데이터에 대한 더티 비트를 생성하지 않는 멀티 코어 프로세서. - 제 5 항에 있어서,
상기 제 2 캐시 유닛은, 상기 제 2 데이터 캐시에 저장되는 상기 제 2 쓰기 데이터의 오류를 검출하는 제 2 오류 검출기를 더 포함하는 멀티 코어 프로세서. - 제 5 항에 있어서,
상기 오류 매니저는 상기 제 1 DMR 레지스터 그리고 상기 제 2 DMR 레지스터 각각에 저장된 값이 상기 듀얼 모듈러 리던던시 모드를 지시할 때에, 상기 오류 검출 동작을 실행하는 멀티 코어 프로세서. - 제 1 항에 있어서,
듀얼 코어 모드시, 상기 제 1 프로세서 및 상기 제 2 프로세서는 서로 다른 테스크들을 수행하며, 상기 오류 매니저는 상기 오류 검출 동작을 비활성화하는 멀티 코어 프로세서. - 제 1 항에 있어서,
상기 오류 매니저가 상기 오류 검출 동작의 결과에 따라 생성하는 오류 플래그 신호를 제공받아 상기 제 1 프로세서 및 상기 제 2 프로세서의 오류를 정정하는 복구 모듈을 더 포함하는 멀티 코어 프로세서. - 제 10 항에 있어서,
상기 복구 모듈의 제어에 따라 상기 제 1 프로세서 및 상기 제 2 프로세서를 리셋시키는 리셋 모듈을 더 포함하는 멀티 코어 프로세서. - 제 1 항에 있어서,
상기 듀얼 모듈러 리던던시 모드시, 상기 제 1 프로세서와 상기 제 2 프로세서는 상이한 동작 주파수로 동작하는 멀티 코어 프로세서. - 제 12 항에 있어서,
상기 듀얼 모듈러 리던던시 모드시, 상기 제 1 프로세서의 동작 주파수는 상기 제 2 프로세서의 동작 주파수보다 높은 멀티 코어 프로세서. - 제 1 프로세서와 제 2 프로세서가 동일한 테스크를 수행하는 듀얼 모듈러 리던던시 모드를 갖는 멀티 코어 프로세서의 캐시 관리 방법에 있어서:
제 1 프로세서에서 상기 테스크의 결과로 제 1 쓰기 데이터를 생성하는 단계;
제 2 프로세서에서 상기 테스크의 결과로 제 2 쓰기 데이터를 생성하는 단계;
상기 제 1 쓰기 데이터를 제 1 데이터 캐시의 제 1 쓰기 버퍼에 저장하는 단계;
상기 제 2 쓰기 데이터를 제 2 데이터 캐시의 제 2 쓰기 버퍼에 저장하는 단계;
상기 제1 프로세서의 제 1 DMR 레지스터 값에 기반하여 듀얼 모듈러 리던던시 모드의 활성화 여부를 판단하는 단계;
듀얼 모듈러 리던던시 모드의 활성화 여부에 기반하여 상기 제 1 쓰기 데이터와, 상기 제 2 쓰기 데이터를 비교하는 단계;
상기 제 1 쓰기 데이터 및 상기 제 2 쓰기 데이터의 오류를 검출하는 단계; 그리고
상기 비교 결과에 따라 상기 제 1 데이터 캐시에 저장된 상기 제 1 쓰기 데이터를 메인 메모리 또는 주변 장치에 쓰는 단계를 포함하되,
상기 제 2 데이터 캐시로부터 상기 메인 메모리 또는 상기 주변 장치로의 쓰기 동작은 차단되는 캐시 관리 방법. - 제 14 항에 있어서,
상기 제 1 데이터 캐시에는 상기 제 1 쓰기 데이터의 업데이트를 관리하기 위한 더티 비트가 저장되는 캐시 관리 방법. - 제 14 항에 있어서,
상기 비교하는 단계에서 상기 제 1 쓰기 데이터와 상기 제 2 쓰기 데이터가 다른 경우, 상기 제 1 프로세서와 상기 제 2 프로세서의 동작 오류를 정정하기 위한 오류 트랩 신호를 생성하는 단계를 더 포함하는 캐시 관리 방법. - 제 14 항에 있어서,
상기 듀얼 모듈러 리던던시 모드시, 상기 제 1 프로세서의 동작 주파수는 상기 제 2 프로세서의 동작 주파수보다 높은 캐시 관리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/832,862 US10740167B2 (en) | 2016-12-07 | 2017-12-06 | Multi-core processor and cache management method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160166172 | 2016-12-07 | ||
KR20160166172 | 2016-12-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180065881A KR20180065881A (ko) | 2018-06-18 |
KR102376396B1 true KR102376396B1 (ko) | 2022-03-21 |
Family
ID=62765738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170137655A KR102376396B1 (ko) | 2016-12-07 | 2017-10-23 | 멀티 코어 프로세서 및 그것의 캐시 관리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102376396B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627857B (zh) * | 2023-05-25 | 2023-11-24 | 合芯科技有限公司 | 一种处理器核外缓存模型及模拟方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073357A1 (en) | 2000-12-11 | 2002-06-13 | International Business Machines Corporation | Multiprocessor with pair-wise high reliability mode, and method therefore |
US20040068618A1 (en) * | 2002-09-19 | 2004-04-08 | Ip-First, Llc | Store-induced instruction coherency mechanism |
US20070022348A1 (en) * | 2005-06-30 | 2007-01-25 | Racunas Paul B | Reducing the uncorrectable error rate in a lockstepped dual-modular redundancy system |
US20140108778A1 (en) * | 2012-10-16 | 2014-04-17 | Dell Products L.P. | Method for Reducing Execution Jitter in Multi-Core Processors Within an Information Handling System |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100928187B1 (ko) * | 2007-11-30 | 2009-11-25 | 한국전기연구원 | 듀얼 프로세서 제어 장치의 고장 안전 구조 |
-
2017
- 2017-10-23 KR KR1020170137655A patent/KR102376396B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073357A1 (en) | 2000-12-11 | 2002-06-13 | International Business Machines Corporation | Multiprocessor with pair-wise high reliability mode, and method therefore |
US20040068618A1 (en) * | 2002-09-19 | 2004-04-08 | Ip-First, Llc | Store-induced instruction coherency mechanism |
US20070022348A1 (en) * | 2005-06-30 | 2007-01-25 | Racunas Paul B | Reducing the uncorrectable error rate in a lockstepped dual-modular redundancy system |
US20140108778A1 (en) * | 2012-10-16 | 2014-04-17 | Dell Products L.P. | Method for Reducing Execution Jitter in Multi-Core Processors Within an Information Handling System |
Also Published As
Publication number | Publication date |
---|---|
KR20180065881A (ko) | 2018-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8850262B2 (en) | Inter-processor failure detection and recovery | |
US8856588B2 (en) | Information processing apparatus, control method, and computer-readable recording medium | |
US7650467B2 (en) | Coordination of multiprocessor operations with shared resources | |
KR100267029B1 (ko) | 메모리갱신이력보존장치를구비한컴퓨터시스템 | |
US10514990B2 (en) | Mission-critical computing architecture | |
US8321635B2 (en) | Synchronizing commands for preventing data corruption | |
US20110179311A1 (en) | Injecting error and/or migrating memory in a computing system | |
US7620954B2 (en) | Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors | |
US9519502B2 (en) | Virtual machine backup | |
TWI510912B (zh) | 多核電路中之容錯 | |
KR100406575B1 (ko) | 멀티프로세서 데이터 처리 시스템에서 복구 불가능한에러를 허용하는 방법 및 장치 | |
US10642782B2 (en) | Multi-core processor and operation method thereof | |
US10740167B2 (en) | Multi-core processor and cache management method thereof | |
KR102376396B1 (ko) | 멀티 코어 프로세서 및 그것의 캐시 관리 방법 | |
JPH0567976B2 (ko) | ||
KR102377729B1 (ko) | 멀티 코어 프로세서 및 그것의 동작 방법 | |
CN115576734B (zh) | 一种多核异构日志存储方法和*** | |
US7577890B2 (en) | Systems and methods for mitigating latency associated with error detection and correction | |
US8725954B2 (en) | Information processing apparatus and memory control apparatus | |
US20190065233A1 (en) | Method and system for preventing execution of a dirty virtual machine on an undesirable host server in a virtualization cluster environment | |
JP6632416B2 (ja) | 共有メモリ制御回路及び共有メモリ制御方法 | |
US20150269092A1 (en) | Information processing device and shared memory management method | |
US9436613B2 (en) | Central processing unit, method for controlling central processing unit, and information processing apparatus | |
US10656867B2 (en) | Computer system, data management method, and data management program | |
JP5163061B2 (ja) | マルチプロセッサシステム、マイクロプロセッサ、及びマイクロプロセッサの障害処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |