KR20180028570A - 멀티 코어 시스템 및 이의 구동 방법 - Google Patents

멀티 코어 시스템 및 이의 구동 방법 Download PDF

Info

Publication number
KR20180028570A
KR20180028570A KR1020160115413A KR20160115413A KR20180028570A KR 20180028570 A KR20180028570 A KR 20180028570A KR 1020160115413 A KR1020160115413 A KR 1020160115413A KR 20160115413 A KR20160115413 A KR 20160115413A KR 20180028570 A KR20180028570 A KR 20180028570A
Authority
KR
South Korea
Prior art keywords
core
code
memory
data
shared memory
Prior art date
Application number
KR1020160115413A
Other languages
English (en)
Inventor
채성민
Original Assignee
현대오트론 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 현대오트론 주식회사 filed Critical 현대오트론 주식회사
Priority to KR1020160115413A priority Critical patent/KR20180028570A/ko
Publication of KR20180028570A publication Critical patent/KR20180028570A/ko

Links

Images

Classifications

    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은 멀티 코어 시스템에 관한 것으로, 보다 상세하게는 제1 코드를 실행하여 제1 처리 데이터를 생성하는 제1 코어, 생성된 제1 처리 데이터를 분기시켜 제1 로컬 메모리와 제1 공유 메모리로 입력하는 제1 데이터 버스; 제2 코드를 실행하여 제2 처리 데이터를 생성하는 제2 코어, 생성된 제2 처리 데이터를 분기시켜 제2 로컬 메모리와 제2 공유 메모리로 입력하는 제2 데이터 버스 및 제2 코드를 미리 저장하는 제1 백업 코드 메모리를 포함하는 것을 특징으로 한다.

Description

멀티 코어 시스템 및 이의 구동 방법{Multi core system and method of driving the same}
본 발명은 멀티 코어 시스템 및 이의 구동 방법에 관한 것으로, 보다 상세하게는 제2 코어가 정상 동작하지 않는 것으로 진단되면, 제1 코어가 제2 코어가 실행하는 제2 코드와 제2 코드를 실행하여 생성된 제2 처리 데이터를 각각 제1 백업 코드 메모리와 제2 공유 메모리로부터 입력받아 제2 코드를 실행하는 멀티 코어 시스템 및 이의 구동 방법에 관한 것이다.
단일 코어 기반의 시스템은 추가 성능 향상과 저전력 구현의 한계로 인하여, 멀티 코어 시스템 구조의 점유율이 증가하고 있고, 앞으로도 멀티 코어 시스템이 대세로 자리 잡게 될 것이다.
멀티 코어 시스템 환경에서 중요한 것은 다수의 코어 중에서 일부 코어에 고장이 발생하더라도 고장이 발생하지 않은 다른 코어를 이용하여 지속적으로 시스템을 구동시키는 구동 안정성이다.
즉, 멀티 코어 시스템은 다수의 코어 중 일부 코어에 고장이 발생하여도, 해당 고장 코어를 시스템에서 차단하여 나머지 정상 코어들에게 영향이 가지 않도록 한다면 정상적으로 동작할 수 있다. 따라서, 멀티 코어 시스템은 정확한 고장 진단을 통해 고장 코어를 판별하고, 여분의 정상 코어로 대체하거나 고장 코어를 차단하여 다소의 성능감소를 감안한 채 구동 안정성을 유지하게 된다.
이를 위하여, 다수의 코어 각각은 코드를 실행한 결과로 생성되는 처리 데이터를 로컬 메모리와 공유 메모리에 각각 저장하게 된다. 즉, 일부의 코어에 고장이 발생하는 경우, 고장이 발생하지 않은 코어에서 고장이 발생한 코어를 대신해 코드를 실행하기 위하여 공유 메모리에 고장이 발생한 코어가 고장 전까지 생성한 처리 데이터를 저장한다.
이에 따라, 다수의 코어는 처리 데이터를 공유하기 위하여 코드 실행 결과 생성된 처리 데이터를 로컬 메모리뿐만 아니라 공유 메모리에 추가로 저장함으로써, 처리 데이터의 저장에 소요되는 코어 로드가 부가되는 문제점이 있다.
본 발명은 제1 코어가 제2 코어의 정상 동작 여부의 진단 결과에 기초하여 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리에 저장된 제2 코드를 실행함으로써, 제2 코어가 정상 동작을 하지 않는 경우에도 제1 코어를 통해 제2 코드를 실행할 수 있는 구동 안정성이 향상된 멀티 코어 시스템 및 이의 구동 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 제1 데이터 버스를 이용하여 제1 코어가 제1 코드를 실행하여 생성한 제1 처리 데이터를 분기시켜 제1 로컬 메모리와 제1 공유 메모리로 입력함으로써, 로컬 메모리와 공유 메모리 모두에 처리 데이터를 저장하는데 소요되는 코어 로드를 감소시킬 수 있는 멀티 코어 시스템 및 이의 구동 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 제1 코어와 제2 코어로 진단 계산식을 각각 송신하고, 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 제1 코어와 제2 코어의 정상 동작 여부를 각각 진단함으로써, 제1 코어와 제2 코어의 정상 동작 여부를 정확하게 진단할 수 있는 멀티 코어 시스템 및 이의 구동 방법을 제공하는 것을 목적으로 한다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상술된 목적을 달성하기 위한 본 발명의 일 실시예에 따른 멀티 코어 시스템은 제1 코드를 실행하여 제1 처리 데이터를 생성하는 제1 코어, 생성된 제1 처리 데이터를 분기시켜 제1 로컬 메모리와 제1 공유 메모리로 입력하는 제1 데이터 버스; 제2 코드를 실행하여 제2 처리 데이터를 생성하는 제2 코어, 생성된 제2 처리 데이터를 분기시켜 제2 로컬 메모리와 제2 공유 메모리로 입력하는 제2 데이터 버스 및 제2 코드를 미리 저장하는 제1 백업 코드 메모리를 포함하는 것을 특징으로 한다.
일 실시예에서, 제1 코어는 제2 코어의 정상 동작 여부의 진단 결과에 기초하여 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리에 저장된 제2 코드를 실행할 수 있다.
일 실시예에서, 멀티 코어 시스템은 제1 코어와 제2 코어로 진단 계산식을 각각 송신하고, 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 제1 코어와 제2 코어의 정상 동작 여부를 각각 진단하는 진단부를 더 포함할 수 있다.
일 실시예에서, 제1 코어는 제2 코어가 정상 동작하지 않는 것으로 진단되면, 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리에 저장된 제2 코드를 실행할 수 있다.
일 실시예에서, 제1 코어는 제2 코어가 정상 동작하지 않는 것으로 진단되면, 제2 코드를 실행하여 제2 처리 데이터를 생성하고, 생성된 제2 처리 데이터를 제2 공유 메모리로 출력할 수 있다.
일 실시예에서, 제2 코어는 동작 상태가 정상 동작으로 복구되면 제1 코어로부터 출력되어 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제2 코드를 실행할 수 있다.
상술된 목적을 달성하기 위한 본 발명의 일 실시예에 따른 멀티 코어 시스템의 구동 방법은 제1 코어가 제1 코드를 실행하여 제1 처리 데이터를 생성하는 단계, 제1 데이터 버스가 생성된 제1 처리 데이터를 분기시켜 제1 로컬 메모리와 제1 공유 메모리로 입력하는 단계, 제2 코어가 제2 코드를 실행하여 제2 처리 데이터를 생성하는 단계, 제2 데이터 버스가 생성된 제2 처리 데이터를 분기시켜 제2 로컬 메모리와 제2 공유 메모리로 입력하는 단계, 제1 백업 코드 메모리에 제2 코드를 미리 저장하는 단계 및 제1 코어가 제2 코어의 정상 동작 여부의 진단 결과에 기초하여 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리에 저장된 제2 코드를 실행하는 단계를 포함하는 것을 특징으로 한다.
일 실시예에서, 멀티 코어 시스템의 구동 방법은 진단부가 제1 코어와 제2 코어로 진단 계산식을 각각 송신하고, 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 제1 코어와 제2 코어의 정상 동작 여부를 각각 진단하는 단계를 더 포함할 수 있다.
일 실시예에서, 멀티 코어 시스템의 구동 방법은 제2 코어가 정상 동작하지 않는 것으로 진단되면, 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리에 저장된 제2 코드를 실행하는 단계를 더 포함할 수 있다.
일 실시예에서, 멀티 코어 시스템의 구동 방법은 제2 코어가 정상 동작하지 않는 것으로 진단되면, 제1 코어가 제2 코드를 실행하여 제2 처리 데이터를 생성하고, 생성된 제2 처리 데이터를 제2 공유 메모리로 출력하는 단계를 더 포함할 수 있다.
일 실시예에서, 멀티 코어 시스템의 구동 방법은 제2 코어가 동작 상태가 정상 동작으로 복구되면 제1 코어로부터 출력되어 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제2 코드를 실행하는 단계를 더 포함할 수 있다.
전술한 바와 같은 본 발명에 의하면 제1 코어가 제2 코어의 정상 동작 여부의 진단 결과에 기초하여 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리에 저장된 제2 코드를 실행함으로써, 제2 코어가 정상 동작을 하지 않는 경우에도 제1 코어를 통해 제2 코드를 실행하여 구동 안정성을 향상시키는 효과가 있다.
또한, 본 발명에 의하면 제1 데이터 버스를 이용하여 제1 코어가 제1 코드를 실행하여 생성한 제1 처리 데이터를 분기시켜 제1 로컬 메모리와 제1 공유 메모리로 입력함으로써, 로컬 메모리와 공유 메모리 모두에 처리 데이터를 저장하는데 소요되는 코어 로드를 감소시킬 수 있는 효과가 있다.
또한, 본 발명에 의하면 제1 코어와 제2 코어로 진단 계산식을 각각 송신하고, 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 제1 코어와 제2 코어의 정상 동작 여부를 각각 진단함으로써, 제1 코어와 제2 코어의 정상 동작 여부를 정확하게 진단할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 멀티 코어 시스템의 구성을 도시한 도면.
도 2는 본 발명의 일 실시예에 따른 멀티 코어 시스템의 제1 코어부와 제2 코어부의 데이터 흐름을 도시한 도면.
도 3 및 도 4는 본 발명의 일 실시예에 따른 멀티 코어 시스템의 제2 코어부가 정상 동작하지 않는 경우 제1 코어부의 데이터 흐름을 도시한 도면.
도 5는 본 발명의 일 실시예에 따른 멀티 코어 시스템의 제2 코어부가 복구되는 경우 제1 코어부와 제2 코어부의 데이터 흐름을 도시한 도면.
도 6은 본 발명의 일 실시예에 따른 멀티 코어 시스템의 구동 방법을 도시한 순서도.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 감지되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.
도 1은 본 발명의 일 실시예에 따른 멀티 코어 시스템의 구성을 도시한 도면이고, 도 2는 본 발명의 일 실시예에 따른 멀티 코어 시스템의 제1 코어부와 제2 코어부의 데이터 흐름을 도시한 도면이다.
도 1 및 도 2를 참조하면, 본 발명의 일 실시예에 따른 멀티 코어 시스템(1000)은 제1 코어부(100), 제2 코어부(200), 공유 메모리부(10) 및 진단부(20)를 포함하여 구성될 수 있다. 도 1 및 도 2에 도시된 멀티 코어 시스템(1000)은 일 실시예에 따른 것이고, 그 구성요소들이 도 1 및 도 2에 도시된 실시예에 한정되는 것은 아니며, 필요에 따라 일부 구성요소가 부가, 변경 또는 삭제될 수 있다.
본 발명의 일 실시예에 따른 멀티 코어 시스템(1000)의 제1 코어부(100)와 제2 코어부(200)가 정상 동작하는 경우 멀티 코어 시스템(1000)에 포함된 구성의 동작에 대해 설명하도록 한다.
제1 코어부(100)와 제2 코어부(200)는 코드를 실행하고, 실행 결과에 따른 처리 데이터를 생성하는 역할을 수행할 수 있다. 또한, 제1 코어부(100)와 제2 코어부(200) 중 어느 하나의 코어부가 정상 동작하지 않는 경우, 정상 동작하는 코어부가 정상 동작하지 않는 코어부를 대신하여 코드를 실행하고, 실행 결과에 따른 처리 데이터를 생성할 수 있다.
보다 구체적으로, 제1 코어부(100)는 제1 주 코드 메모리(110), 제1 백업 코드 메모리(120), 제1 코어(130), 제1 데이터 버스(140) 및 제1 로컬 메모리(150)를 포함하여 구성될 수 있다.
제1 주 코드 메모리(110)는 제1 코어부(100)의 제1 코어(130)가 실행하는 제1 코드를 저장하는 역할을 수행할 수 있다. 여기서, 제1 주 코드 메모리(110)는 저장된 제1 코드가 외부 전원의 공급여부에 따라 삭제되지 않도록 비휘발성 메모리일 수 있다.
제1 백업 코드 메모리(120)는 후술되는 제2 코어부(200)의 제2 코어(230)가 실행하는 제2 코드를 미리 저장하는 역할을 수행 할 수 있다. 제1 백업 코드 메모리(120)는 저장된 제2 코드가 외부 전원의 공급여부에 따라 삭제되지 않도록 비휘발성 메모리일 수 있다.
일 실시예에서, 제1 주 코드 메모리(110)와 제1 백업 코드 메모리(120)는 하나의 비휘발성 메모리에 포함될 수 있다. 이때, 제1 주 코드 메모리(110)와 제1 백업 코드 메모리(120)가 하나의 비휘발성 메모리에 포함된 경우, 하나의 비휘발성 메모리는 서로 다른 두 영역으로 분할되어 각각 제1 주 코드 메모리(110)와 제1 백업 코드 메모리(120)로 설정될 수 있다.
제1 코어(130)는 제2 코어부(200)의 제2 코어(230)가 정상 동작하는 경우, 제1 주 코드 메모리(110)에 저장된 제1 코드를 실행하는 역할을 수행할 수 있다. 또한, 제1 코어(130)는 제1 코드를 실행하고, 실행 결과에 따른 제1 처리 데이터를 생성할 수 있다.
이때, 제1 처리 데이터는 제1 데이터 버스(140)에 입력되고, 제1 데이터 버스(140)는 입력된 제1 처리 데이터를 분기시켜 제1 로컬 메모리(150)와 공유 메모리부(10)의 제1 공유 메모리(11)로 입력할 수 있다.
즉, 제1 코어(130)는 입력된 데이터를 분기시켜 제1 로컬 메모리(150)와 공유 메모리부(10)의 제1 공유 메모리(11)로 동시에 입력시키는 제1 데이터 버스(140)로 한차례 출력하는 과정을 수행할 수 있다.
이를 통해, 제1 코어(130)는 제1 처리 데이터를 제1 로컬 메모리(150)와 제1 공유 메모리(11)로 각각 별도로 출력하는 출력 과정을 두차례 수행하지 않음으로써, 제1 처리 데이터를 저장하는 과정에서 소요되는 코어 로드를 감소시킬 수 있다.
제2 코어부(200)는 제2 주 코드 메모리(210), 제2 백업 코드 메모리(220), 제2 코어(230), 제2 데이터 버스(240) 및 제2 로컬 메모리(250)를 포함하여 구성될 수 있다.
제2 주 코드 메모리(210)는 제2 코어부(200)의 제2 코어(230)가 실행하는 제2 코드를 저장하는 역할을 수행할 수 있다. 여기서, 제2 주 코드 메모리(210)는 저장된 제2 코드가 외부 전원의 공급여부에 따라 삭제되지 않도록 비휘발성 메모리일 수 있다.
제2 백업 코드 메모리(220)는 제1 코어부(100)의 제1 코어(130)가 실행하는 제1 코드를 미리 저장하는 역할을 수행할 수 있다. 제2 백업 코드 메모리(220)는 저장된 제1 코드가 외부 전원의 공급여부에 따라 삭제되지 않도록 비휘발성 메모리일 수 있다.
일 실시예에서, 제2 주 코드 메모리(210)와 제2 백업 코드 메모리(220)는 하나의 비휘발성 메모리에 포함될 수 있다. 이때, 제2 주 코드 메모리(210)와 제2 백업 코드 메모리(220)가 하나의 비휘발성 메모리에 포함된 경우, 하나의 비휘발성 메모리는 서로 다른 두 영역으로 분할되어 각각 제2 주 코드 메모리(210)와 제2 백업 코드 메모리(220)로 설정될 수 있다.
제2 코어(230)는 제1 코어부(100)의 제1 코어(130)가 정상 동작하는 경우, 제2 주 코드 메모리(210)에 저장된 제2 코드를 실행하는 역할을 수행할 수 있다. 또한, 제2 코어(230)는 제2 코드를 실행하고, 실행 결과에 따른 제2 처리 데이터를 생성할 수 있다.
이때, 제2 처리 데이터는 제2 데이터 버스(240)에 입력되고, 제2 데이터 버스(240)는 입력된 제2 처리 데이터를 분기시켜 제2 로컬 메모리(250)와 공유 메모리부(20)의 제2 공유 메모리(21)로 입력할 수 있다.
즉, 제2 코어(230)는 입력된 데이터를 분기시켜 제2 로컬 메모리(250)와 공유 메모리부(20)의 제2 공유 메모리(11)로 동시에 입력시키는 제2 데이터 버스(240)로 한차례 출력하는 과정을 수행할 수 있다.
이를 통해, 제2 코어(230)는 제2 처리 데이터를 제2 로컬 메모리(250)와 제2 공유 메모리(11)로 각각 별도로 출력하는 출력 과정을 두차례 수행하지 않음으로써, 제2 처리 데이터를 저장하는 과정에서 소요되는 코어 로드를 감소시킬 수 있다.
공유 메모리부(10)는 제1 공유 메모리(11) 및 제2 공유 메모리(12)를 포함할 수 있다. 상술한 바와 같이, 제1 공유 메모리(11)는 제1 코어(130)의 제1 코드 실행 결과에 따른 제1 처리 데이터를 제1 데이터 버스(140)로부터 입력받아 저장하는 역할을 수행할 수 있다.
이와 유사하게, 제2 공유 메모리(21)는 제2 코어(230)의 제2 코드 실행 결과에 따른 제2 처리 데이터를 제2 데이터 버스(240)로부터 입력받아 저장하는 역할을 수행할 수 있다.
진단부(20)는 제1 코어(130)와 제2 코어(230)로 각각 진단 계산식을 송신하고, 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 제1 코어와 제2 코어의 정상 동작 여부를 진단하는 역할을 수행할 수 있다.
보다 구체적으로, 진단부(20)는 제1 코어(130)로 정상 동작 여부를 진단하기 위한 진단 계산식을 주기적으로 송신할 수 있다.
이후, 진단부(20)는 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 제1 코어(130)의 정상 동작 여부를 진단할 수 있다.
예를 들어, 진단부(20)는 제1 코어(130)로부터 진단 데이터가 수신되지 않거나 진단 계산식에 대응하는 진단 데이터가 수신되지 않는 경우, 제1 코어(130)가 정상 동작하지 않는 것으로 진단할 수 있다.
이를 위하여, 제1 코어(130)는 진단부(20)로부터 진단 계산식을 수신하는 경우, 진단 계산식을 연산하고 진단 계산식을 연산한 결과인 진단 데이터를 진단부(20)로 송신할 수 있다.
이와 유사하게, 진단부(20)는 제2 코어(230)로 정상 동작 여부를 진단하기 위한 진단 계산식을 주기적으로 송신할 수 있다.
이후, 진단부(20)는 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 제2 코어(230)의 정상 동작 여부를 진단할 수 있다.
예를 들어, 진단부(20)는 제2 코어(230)로부터 진단 데이터가 수신되지 않거나 진단 계산식에 대응하는 진단 데이터가 수신되지 않는 경우, 제2 코어(230)가 정상 동작하지 않는 것으로 진단할 수 있다.
이를 위하여, 제2 코어(230)는 진단부(20)로부터 진단 계산식을 수신하는 경우, 진단 계산식을 연산하고 진단 계산식을 연산한 결과인 진단 데이터를 진단부(20)로 송신할 수 있다.
상술한 바와 같이, 일 실시예에 따른 진단부(20)는 하나로 구성되어 제1 코어(130)와 제2 코어(230)의 정상 동작 여부를 진단할 수 있다. 다른 실시예에 따른 진단부(20)는 제1 코어부(100)에 포함되는 제1 진단부(미도시)와 제2 코어부(200)에 포함되는 제2 진단부(미도시)를 포함할 수 있다.
이를 통해, 다른 실시예에 따른 진단부(20)는 코어부별로 개별로 구성된 제1 진단부와 제2 진단부를 이용하여 제1 코어(130)와 제2 코어(230)의 정상 동작 여부를 각각 진단할 수 있다.
다음으로, 본 발명의 일 실시예에 따른 멀티 코어 시스템(1000)의 제2 코어부(200)가 정상 동작하지 않는 경우 멀티 코어 시스템(1000)에 포함된 구성의 동작에 대해 설명하도록 한다.
도 3 및 도 4는 본 발명의 일 실시예에 따른 멀티 코어 시스템(1000)의 제2 코어부(200)가 정상 동작하지 않는 경우 제1 코어부(100)의 데이터 흐름을 도시한 도면이다.
도 3을 참조하면, 진단부(20)는 제2 코어(230)로 진단 계산식을 송신한 뒤 진단 데이터가 수신되지 않거나 진단 계산식에 대응하는 진단 데이터가 수신되지 않는 경우, 제2 코어(230)가 정상 동작하지 않는 것으로 진단할 수 있다.
이후, 진단부(20)는 제1 코어부(100)의 제1 코어(130)로 제2 코어(230)가 정상 동작하지 않음을 알리는 제2 코어 비정상 동작 신호를 송신할 수 있다.
제1 코어(130)는 진단부(20)로부터 제2 코어 비정상 동작 신호를 수신하는 경우, 제1 코드의 실행을 중단하고 제1 백업 코드 메모리(120)에 저장된 제2 코드를 실행할 수 있다.
보다 구체적으로, 제1 코어(130)는 제2 코어(230)에 고장이 발생하기 전까지 제2 코어(230)가 제2 코드를 실행하여 생성한 제2 처리 데이터를 이용하여 제2 코드를 실행할 수 있다.
이를 위하여, 제1 코어(130)는 제2 코어(230)에서 생성되어 제2 데이터 버스(240)를 통해 제2 공유 메모리(12)에 저장된 제2 처리 데이터를 입력받을 수 있다.
즉, 제1 코어(130)는 제2 코어(230)가 정상 동작하지 않는 경우, 제2 공유 메모리(12)에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리(120)에 저장된 제2 코드를 실행할 수 있다.
이를 통해, 제2 코어(230)가 정상 동작하지 않는 경우, 제1 코어(130)가 정상 동작하지 않는 제2 코어(230)를 대신하여 제2 코드를 실행할 수 있다.
한편, 제1 코어(130)는 제2 코드를 실행하고, 제2 코드의 실행에 따라 제2 처리 데이터를 생성할 수 있다. 이때, 제1 코어(130)가 생성한 제2 처리 데이터는 제2 공유 메모리(12)로 입력되어 제2 처리 데이터를 업데이트할 수 있다.
상술된 설명에서는 제2 코어(230)가 정상 동작하지 않는 경우, 제1 코어(130)가 제2 코드를 대신하여 실행하는 과정에 대해서만 설명하였다. 하지만, 본 발명에 따른 멀티 코어 시스템(1000)은 제1 코어(130)가 정상 동작하지 않는 경우, 제2 코어(230)가 제1 코어(130)를 대신하여 제1 코드를 실행하고 제1 코드 실행에 따라 제1 처리 데이터를 생성할 수 있다.
한편, 도 4를 참조하면, 제1 코어(130)는 제2 코어(230)가 정상 동작하지 않는 경우, 제2 공유 메모리(12)에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리(120)의 제2 코드를 실행하는 과정만을 수행하지 않을 수 있다.
즉, 제1 코어(130)는 제2 코어(230)가 정상 동작하지 않는 경우, 미리 설정된 주기에 따라 제2 코드와 제1 코드의 실행을 한차례씩 반복할 수 있다.
이를 위해, 제1 코어(130)는 제2 코드를 실행한 이후 제1 코드를 실행하기 위하여, 제1 공유 메모리(11)에 저장된 제1 처리 데이터를 입력받고, 입력받은 제1 처리 데이터를 이용하여 제1 주 코드 메모리(110)에 저장된 제1 코드를 실행할 수 있다.
이를 통해, 제1 코어(130)는 제2 코드를 실행하기 전에 제1 코드의 실행에 따라 생성된 최신의 제1 처리 데이터를 이어서 이용하여 제1 코드를 실행할 수 있다.
다음으로, 본 발명의 일 실시예에 따른 멀티 코어 시스템(1000)의 제2 코어부(200)가 복구되는 경우 제1 코어부(100)와 제2 코어부(200)의 데이터 흐름을 도시한 도면이다.
도 5를 참조하면, 진단부(20)는 정상 동작하지 않는 것으로 진단된 제2 코어(230)로 주기적으로 진단 계산식을 송신할 수 있다. 이후, 진단부(20)는 제2 코어(230)로부터 진단 계산식 대응하는 진단 데이터가 수신되는 경우, 정상 동작하지 않던 제2 코어(230)가 정상 동작하는 것으로 진단할 수 있다.
진단부(20)는 정상 동작하지 않던 제2 코어(230)가 정상 동작하는 것으로 진단되면, 제2 코어(230)로 제2 코어 복구 신호를 송신할 수 있다.
제2 코어(230)는 진단부(20)로부터 제2 코어 복구 신호를 수신하는 경우, 제2 공유 메모리(12)로부터 제2 처리 데이터를 입력받아 제2 주 코드 메모리(210)에 저장된 제2 코드를 실행할 수 있다.
이때, 제2 공유 메모리(12)에는 정상 동작하지 않던 제2 코어(230)가 정상 동작하는 것으로 진단되기 전까지 제1 코어(130)가 제2 코드를 실행하여 생성한 제2 처리 데이터가 저장될 수 있다.
이후, 정상 동작하지 않던 제2 코어(230)는 복구된 후에 제1 코어(130)가 제2 코드를 실행하여 생성한 최신의 제2 처리 데이터를 이어서 이용하여 제2 코드를 실행할 수 있다.
한편, 진단부(20)는 정상 동작하지 않던 제2 코어(230)가 정상 동작하는 것으로 진단되면, 제1 코어(130)로도 제2 코어 복구 신호를 송신할 수 있다.
제1 코어(130)는 진단부(20)로부터 제2 코어 복구 신호를 수신하는 경우, 제1 공유 메모리(11)로부터 제1 처리 데이터를 입력받아 제1 주 코드 메모리(210)에 저장된 제1 코드를 실행할 수 있다.
즉, 제1 코어(130)는 제2 코어(230)가 복구되면 제1 코어(130)의 주 실행 코드인 제1 코드를 실행할 수 있다. 이를 위해, 제1 코어(130)는 제1 공유 메모리(11)에 저장된 최신의 제1 처리 데이터를 이어서 이용하여 제1 코드를 실행할 수 있다.
도 6은 본 발명의 일 실시예에 따른 멀티 코어 시스템의 구동 방법을 도시한 순서도이다.
도 6을 참조하면, 제1 코어부의 제1 코어가 제1 주 코드 메모리에 저장된 제1 코드를 실행하여 제1 처리 데이터를 생성하고(S101), 제1 데이터 버스는 생성된 제1 처리 데이터를 분기시켜 제1 로컬 메모리와 공유 메모리부의 제1 공유 메모리에 저장하게 된다(S201).
이후, 진단부가 주기적으로 제1 코어부의 제1 코어와 제2 코어부의 제2 코어로 진단 계산식을 송신하고, 진단 계산식에 대응하는 진단 데이터의 수신 여부에 따라 제1 코어와 제2 코어의 정상 동작 여부를 진단한다(S301).
진단부로부터 제2 코어가 정상 동작하지 않음을 알리는 비정상 동작 신호가 수신되지 않으면 S101 단계로 돌아가 제1 코어가 제1 코드를 지속하여 실행한다.
반대로, 제2 코어를 정상 동작하지 않는 것으로 진단한 진단부로부터 제2 코어 비정상 동작 신호가 수신되면 제1 코어는 제2 공유 메모리에 저장된 제2 처리 데이터를 이용하여 제1 백업 코드 메모리에 저장된 제2 코드를 실행한다(S401).
이를 통해, 제1 코어는 정상 동작하지 않은 제2 코어를 대신하여 제2 코드를 실행할 수 있다.
다음으로, 제1 코어는 제2 코드를 실행하고, 제2 코드의 실행에 따른 제2 처리 데이터를 생성하여 제2 공유 메모리로 출력함으로써 제2 처리 데이터를 제2 공유 메모리에 저장한다(S501).
이때, 제1 코어는 제2 코드만을 실행하지 않고 미리 설정된 주기에 따라 제1 코드와 제2 코드를 반복하여 실행할 수 있다.
이후, 진단부가 정상 동작하지 않던 제2 코어로부터 진단 계산식에 대응하는 진단 데이터를 수신하면 제2 코어가 정상 동작하는 것으로 진단한다. 이에 따라, 진단부는 정상 동작하지 않던 제2 코어가 복구됨을 알리는 제2 코어 복구 신호를 제1 코어로 송신한다(S601).
진단부로부터 제2 코어가 복구됨을 알리는 제2 코어 복구 신호가 수신되지 않으면 S401 단계로 돌아가 제1 코어가 제2 코드를 지속하여 실행한다.
반대로, 제2 코어를 정상 동작하는 것으로 진단한 진단부로부터 제2 코어 복구 신호가 수신되면 제1 코어는 S101 단계로 돌아가 제1 공유 메모리에 저장된 제1 처리 데이터를 이용하여 제1 주 코드 메모리에 저장된 제1 코드를 실행한다.
이를 통해, 제2 코어가 정상 동작하지 않는 경우 제1 코어가 제2 코드를 실행할 뿐만 아니라, 정상 동작하지 않던 제2 코어가 정상 동작하는 경우 제1 코어는 주 실행 코드인 제1 코드의 실행으로 돌아감으로써 멀티 코어 시스템의 안정성을 향상시킬 수 있다.
전술한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
1000 : 멀티 코어 시스템
100 : 제1 코어부
110 : 제1 주 코드 메모리 120 : 제1 백업 코드 메모리
130 : 제1 코어 140 : 제1 데이터 버스
150 : 제1 로컬 메모리
200 : 제2 코어부
210 : 제2 주 코드 메모리 220 : 제2 백업 코드 메모리
230 : 제2 코어 240 : 제2 데이터 버스
250 : 제2 로컬 메모리
10 : 공유 메모리부
11 : 제1 공유 메모리 12 : 제2 공유 메모리
20 : 진단부

Claims (10)

  1. 제1 코드를 실행하여 제1 처리 데이터를 생성하는 제1 코어;
    상기 생성된 제1 처리 데이터를 분기시켜 제1 로컬 메모리와 제1 공유 메모리로 입력하는 제1 데이터 버스;
    제2 코드를 실행하여 제2 처리 데이터를 생성하는 제2 코어;
    상기 생성된 제2 처리 데이터를 분기시켜 제2 로컬 메모리와 제2 공유 메모리로 입력하는 제2 데이터 버스; 및
    상기 제2 코드를 미리 저장하는 제1 백업 코드 메모리를 포함하고,
    상기 제1 코어는
    상기 제2 코어의 정상 동작 여부의 진단 결과에 기초하여 상기 제2 공유 메모리에 저장된 상기 제2 처리 데이터를 이용하여 상기 제1 백업 코드 메모리에 저장된 상기 제2 코드를 실행하는 멀티 코어 시스템.
  2. 제1항에 있어서,
    상기 제1 코어와 상기 제2 코어로 진단 계산식을 각각 송신하고, 상기 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 상기 제1 코어와 상기 제2 코어의 정상 동작 여부를 각각 진단하는 진단부를
    더 포함하는 멀티 코어 시스템.
  3. 제1항에 있어서,
    상기 제1 코어는
    상기 제2 코어가 정상 동작하지 않는 것으로 진단되면, 상기 제2 공유 메모리에 저장된 상기 제2 처리 데이터를 이용하여 상기 제1 백업 코드 메모리에 저장된 상기 제2 코드를 실행하는 멀티 코어 시스템.
  4. 제1항에 있어서,
    상기 제1 코어는
    상기 제2 코어가 정상 동작하지 않는 것으로 진단되면, 제2 코드를 실행하여 제2 처리 데이터를 생성하고, 상기 생성된 제2 처리 데이터를 상기 제2 공유 메모리로 출력하는 멀티 코어 시스템.
  5. 제4항에 있어서,
    상기 제2 코어는
    동작 상태가 정상 동작으로 복구되면 상기 제1 코어로부터 출력되어 상기 제2 공유 메모리에 저장된 상기 제2 처리 데이터를 이용하여 상기 제2 코드를 실행하는 멀티 코어 시스템.
  6. 제1 코어가 제1 코드를 실행하여 제1 처리 데이터를 생성하는 단계;
    제1 데이터 버스가 상기 생성된 제1 처리 데이터를 분기시켜 제1 로컬 메모리와 제1 공유 메모리로 입력하는 단계;
    제2 코어가 제2 코드를 실행하여 제2 처리 데이터를 생성하는 단계;
    제2 데이터 버스가 상기 생성된 제2 처리 데이터를 분기시켜 제2 로컬 메모리와 제2 공유 메모리로 입력하는 단계;
    제1 백업 코드 메모리에 상기 제2 코드를 미리 저장하는 단계; 및
    상기 제1 코어가 상기 제2 코어의 정상 동작 여부의 진단 결과에 기초하여 상기 제2 공유 메모리에 저장된 상기 제2 처리 데이터를 이용하여 상기 제1 백업 코드 메모리에 저장된 상기 제2 코드를 실행하는 단계를 포함하는 멀티 코어 시스템의 구동 방법.
  7. 제6항에 있어서,
    진단부가 상기 제1 코어와 상기 제2 코어로 진단 계산식을 각각 송신하고, 상기 송신된 진단 계산식에 대응하는 진단 데이터의 수신 여부에 기초하여 상기 제1 코어와 상기 제2 코어의 정상 동작 여부를 각각 진단하는 단계를
    더 포함하는 멀티 코어 시스템의 구동 방법.
  8. 제6항에 있어서,
    상기 제2 코어가 정상 동작하지 않는 것으로 진단되면, 상기 제2 공유 메모리에 저장된 상기 제2 처리 데이터를 이용하여 상기 제1 백업 코드 메모리에 저장된 상기 제2 코드를 실행하는 단계를
    더 포함하는 멀티 코어 시스템의 구동 방법.
  9. 제6항에 있어서,
    상기 제2 코어가 정상 동작하지 않는 것으로 진단되면, 상기 제1 코어가 제2 코드를 실행하여 제2 처리 데이터를 생성하고, 상기 생성된 제2 처리 데이터를 상기 제2 공유 메모리로 출력하는 단계를
    더 포함하는 멀티 코어 시스템의 구동 방법.
  10. 제9항에 있어서,
    상기 제2 코어가 동작 상태가 정상 동작으로 복구되면 상기 제1 코어로부터 출력되어 상기 제2 공유 메모리에 저장된 상기 제2 처리 데이터를 이용하여 상기 제2 코드를 실행하는 단계를
    더 포함하는 멀티 코어 시스템의 구동 방법.
KR1020160115413A 2016-09-08 2016-09-08 멀티 코어 시스템 및 이의 구동 방법 KR20180028570A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160115413A KR20180028570A (ko) 2016-09-08 2016-09-08 멀티 코어 시스템 및 이의 구동 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160115413A KR20180028570A (ko) 2016-09-08 2016-09-08 멀티 코어 시스템 및 이의 구동 방법

Publications (1)

Publication Number Publication Date
KR20180028570A true KR20180028570A (ko) 2018-03-19

Family

ID=61911246

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160115413A KR20180028570A (ko) 2016-09-08 2016-09-08 멀티 코어 시스템 및 이의 구동 방법

Country Status (1)

Country Link
KR (1) KR20180028570A (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003330737A (ja) * 2002-05-15 2003-11-21 Hitachi Ltd 計算機システム
JP2009274569A (ja) * 2008-05-14 2009-11-26 Denso Corp 車両制御装置
JP2010218277A (ja) * 2009-03-17 2010-09-30 Toyota Motor Corp 故障診断システム、電子制御ユニット、故障診断方法
JP2015118493A (ja) * 2013-12-18 2015-06-25 三菱電機株式会社 トレース装置及びトレースプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003330737A (ja) * 2002-05-15 2003-11-21 Hitachi Ltd 計算機システム
JP2009274569A (ja) * 2008-05-14 2009-11-26 Denso Corp 車両制御装置
JP2010218277A (ja) * 2009-03-17 2010-09-30 Toyota Motor Corp 故障診断システム、電子制御ユニット、故障診断方法
JP2015118493A (ja) * 2013-12-18 2015-06-25 三菱電機株式会社 トレース装置及びトレースプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
일본 공개특허공보 특개2010-218277호(2010.09.30.) 1부. *
일본 특허공보 특허 제 4030951호(2008.01.09.) 1부. *

Similar Documents

Publication Publication Date Title
JP5660798B2 (ja) 情報処理装置
US10394675B2 (en) Vehicle control device
CN103678031A (zh) 二乘二取二冗余***及方法
US20180180672A1 (en) Semiconductor device and diagnostic test method
CN104781792A (zh) 判断在工业控制***中的故障的冗余设备单元和方法,工业控制***和包括冗余设备单元的工业***
CN103475514B (zh) 无bmc的节点、集群***及bios修复和升级方法
JP2009116642A (ja) Pciバス障害リカバリ方法及びプログラム
KR20180028570A (ko) 멀티 코어 시스템 및 이의 구동 방법
JP5960632B2 (ja) 車両用電子制御装置
TWI615718B (zh) 電腦系統
CN110088735B (zh) 控制装置以及控制装置的故障时处理方法
JP2010244158A (ja) 制御装置及び通信管理方法
JP2007304972A (ja) マイクロプロセッサシステム
CN110673793B (zh) 存储设备节点事件管理方法、***及电子设备和存储介质
JP2007039206A (ja) エレベーター制御システム
JP4232589B2 (ja) 二重化コントローラ、その等値化モード決定方法
CN110399258B (zh) 一种服务器***的稳定性测试方法、***及装置
KR101631631B1 (ko) 보호계전기의 고장진단 및 복구방법
JP2008146222A (ja) 計算機故障検出システムおよび計算機故障検出方法
EP3296874B1 (en) Apparatus and associated method
CN112416665B (zh) 检测处理器运行状态的装置和方法
JP2015106226A (ja) 二重化システム
JP6546008B2 (ja) 保護リレー装置
JP7268826B1 (ja) 三重化冗長回路における復元装置及び復元方法
JP2014146110A (ja) 情報処理装置、エラー検出機能診断方法およびコンピュータプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
E601 Decision to refuse application
E801 Decision on dismissal of amendment