KR102269504B1 - 자동차용 제어 장치 - Google Patents

자동차용 제어 장치 Download PDF

Info

Publication number
KR102269504B1
KR102269504B1 KR1020167014486A KR20167014486A KR102269504B1 KR 102269504 B1 KR102269504 B1 KR 102269504B1 KR 1020167014486 A KR1020167014486 A KR 1020167014486A KR 20167014486 A KR20167014486 A KR 20167014486A KR 102269504 B1 KR102269504 B1 KR 102269504B1
Authority
KR
South Korea
Prior art keywords
processor cores
unit
memory
data
processor
Prior art date
Application number
KR1020167014486A
Other languages
English (en)
Other versions
KR20160093621A (ko
Inventor
알렉산더 비버
디터 토쓰
옌스 글라디가우
크리스티안 하우벨트
Original Assignee
로베르트 보쉬 게엠베하
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 로베르트 보쉬 게엠베하 filed Critical 로베르트 보쉬 게엠베하
Publication of KR20160093621A publication Critical patent/KR20160093621A/ko
Application granted granted Critical
Publication of KR102269504B1 publication Critical patent/KR102269504B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/173Vehicle or other transportation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Microcomputers (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 자동차용 제어 장치(10)에 관한 것으로, 상기 제어 장치(10)는 2개 이상의 프로세서 코어(110, 120, 130) 및 하나의 전역 메모리(300)(global memory)를 포함하며, 상기 각각의 프로세서 코어(110, 120, 130)는 로컬 메모리(112)(local memory)를 각각 하나씩 포함하고, 이때 각각의 프로세서 코어는, 자신의 고유 로컬 메모리에만 액세스할 수 있고 나머지 프로세서 코어의 로컬 메모리와 전역 메모리(300)에는 액세스할 수 없도록 설계되며, 이 경우 조정 유닛(200)(coordination unit)은, 제어 장치(10)의 전역 메모리(300)로부터 데이터를 판독하여 개별 프로세서 코어(110, 120, 130)의 로컬 메모리(112)에 기록하고, 개별 프로세서 코어(110, 120, 130)의 로컬 메모리(112)로부터 데이터를 판독하여 전역 메모리(300) 및/또는 나머지 프로세서 코어의 로컬 메모리에 기록하도록 설계된다.

Description

자동차용 제어 장치{CONTROL DEVICE FOR A MOTOR VEHICLE}
본 발명은 자동차용 제어 장치에 관한 것이다.
최근의 자동차 제어 장치는 대부분 하나의 멀티 코어 프로세서(multicore processor)를 갖는다. 이 경우, 멀티 코어 프로세서는 복수의 (2개 이상의) 프로세서 코어(core)를 포함한다. 이때, 하나의 프로세서 코어 또는 코어는 하나의 산술 논리 유닛(ALU)을 포함하고, 이 산술 논리 유닛은 태스크(task), 프로그램, 계산 명령 등을 실행하기 위한 고유 전자 연산 장치이다. 하나의 프로세서 코어는 또한 하나의 로컬 메모리(local memory)를 포함한다. 이러한 로컬 메모리는 특히 하나 또는 복수의 레지스터로 구성된 레지스터 세트로서 형성된다. 제어 장치들은 또한 하나의 전역 메모리(global memory)를 포함한다. 이 전역 메모리는 예를 들어 플래시 메모리, NOR 플래시 메모리 또는 RAM 메모리를 포함할 수 있다. 예를 들어 센서와 같은 주변 모듈도 이 전역 메모리에 속할 수 있다.
자동차의 제어 장치 내에서는 끊임없이 개별 프로세서 코어에 의해 프로세스가 실행된다. 태스크 또는 프로세스를 실행하기 위해, 프로세서 코어는 특히 상응하는 프로그램 코드 및 경우에 따라 입력 데이터를 필요로 한다. 이와 같은 프로그램 코드는 예를 들어 전역 메모리의 플래시 메모리 및/또는 NOR 플래시 메모리 내에 저장될 수 있다. 입력 데이터는 예를 들어 주변 모듈에 의해 수집된 측정 데이터, 예를 들면 모터 회전수, 온도, 압력 등일 수 있다.
태스크 또는 프로세스를 실행할 수 있기 위해, 프로세서 코어는 먼저 상응하는 데이터, 특히 프로그램 코드 및 필요한 입력 데이터를 자신의 로컬 메모리에 로딩(loading) 하는데, 그 이유는 프로세서 코어가 전역 메모리에 액세스하는 것보다 훨씬 더 적은 (그리고 예측 가능한) 액세스 시간으로 자신의 로컬 메모리에 액세스할 수 있기 때문이다. 하나의 프로세서 코어는 대부분 1 클럭 이내에 자신의 로컬 메모리에 액세스할 수 있는 반면, 전역 메모리로의 액세스의 경우는 대개 3 내지 10 클럭이 필요할 수 있다.
제어 장치 및 이 제어 장치상에서 실행되는 프로세스는, 예를 들어 ISO 표준 ISO26262에 기술되는 특정 안전 요건들을 충족시켜야 한다. 다른 무엇보다 제어 장치는 실시간 처리가 가능해야 한다. 즉, 하나의 프로세스가 미리 결정된 최대 실행 시간 안에 성공적으로 실행되는 것이 보장되어야 한다. 하지만, 이 실행 시간은 주로 로컬 메모리에 의해 결정된다. 이전에 어느 프로그램 코드가 실행되었는지에 따라, 또는 예를 들어 인터럽트(interrupt)가 발생했는지의 여부에 따라, 로컬 메모리 내에 적합한 데이터가 더 많이 혹은 더 적게 존재한다. 그러므로 큰 안전 여유(safety margin)가 필요하기 때문에, 최대 실행 시간이 결정되기 어려울 수 있다. 따라서, 이러한 계획된 "안전 버퍼(safety buffer)"에 의해서는, 각각의 프로세서 코어의 유효 계산 처리 능력이 저하된다.
2개의 프로세서 코어가 동시에 동일한 자원(resource)에, 특히 전역 메모리에 액세스하면, 액세스 충돌이 발생할 수 있다. 물론 이와 같은 액세스 충돌은 드물게 발생하기도 하고, 멀티 코어 프로세서의 평균 계산 처리 능력을 거의 저하시키지 않는다. 하지만, 실시간 처리 능력을 보장할 수 있기 위해서는, 이와 같은 액세스 충돌이 최대 실행 기간 동안("최악의 경우") 고려되어야 한다. 그러나 그렇게 하기는 매우 어렵거나 전혀 불가능한 경우가 다반사다. 그 대신, 안전 여유는 더욱 증대될 수 있는데, 이는 다시 유효 계산 처리 능력에 부정적으로 작용한다.
그렇기 때문에, 멀티 코어 프로세서를 구비한 자동차를 위한 개선된 제어 장치를 제공하는 것이 요구된다. 특히 이 경우, 제어 장치의 실시간 처리 능력이 용이하게 보장되어야 하고, 유효 계산 처리 능력도 증대되어야 한다.
본 발명에 따라, 특허 청구항 1의 특징들을 갖는 자동차용 제어 장치가 제안된다. 바람직한 실시예들은 종속 청구항들 및 이하의 상세한 설명의 대상이다.
본원에서, 제어 장치는 하나 이상의 멀티 코어 프로세서를 포함하거나, 2개 이상의 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함한다. 그렇기 때문에, 제어 장치는 2개 이상의 프로세서 코어를 포함한다. 본 발명에 따르면, 각각의 프로세서 코어는 자신의 고유 로컬 메모리에만 액세스할 수 있다. 종래의 프로세서와 달리, 개별 프로세서 코어는 나머지 프로세서 코어의 로컬 메모리뿐만 아니라 전역 메모리에도 액세스 할 수 없다.
본 발명에 따르면, 그 대신 각각의 개별 프로세서 코어의 로컬 메모리 및 전역 메모리에 액세스하는 것은 오직 조정 유닛(coordination unit)만 가능하다. 이때, 조정 유닛은 제어 장치의 전역 메모리로부터 데이터를 판독하여, 이 데이터를 개별 프로세서 코어의 로컬 메모리에 기록할 수 있다. 다른 한 편으로, 조정 유닛은 개별 프로세서 코어의 로컬 메모리로부터 데이터를 판독하여, 이 데이터를 제어 장치의 전역 메모리 및/또는 나머지 프로세서 코어의 로컬 메모리에 기록할 수 있다.
각각의 프로세서 코어는 자신의 고유 로컬 메모리에만 액세스할 수 있다. 종래의 제어 장치와 달리, 개별 프로세서 코어는 전역 메모리에 혹은 나머지 프로세서 코어의 로컬 메모리에 액세스하는 것이 더 이상 불가능하다. 본 발명에 따라, 조정 유닛은 개별 프로세서 코어의 로컬 메모리들과 전역 메모리 간의 데이터 교환, 및 개별 프로세서 코어의 로컬 메모리들 상호간의 데이터 교환을 담당하거나 조정한다. 이로써, 액세스 충돌이 발생하는 상황이 방지될 수 있다. 본 발명에 따르면, 상이한 프로세서 코어들이 전역 메모리에 동시에 액세스하거나 전역 메모리의 동일한 데이터에 동시에 액세스하는 상황이 방지될 수 있다.
더 나아가 개별 프로세서 코어는 언로딩(unloading) 될 수 있는데, 그 이유는 이들 프로세서 코어가 더 이상 데이터 전송 및 교환에 관여할 필요가 없기 때문이다. 종래의 제어 장치 내에 있는 프로세서 코어가 데이터 교환을 위해 소비해야 하는 시간 및 계산 처리 능력이 절약될 수 있고, 프로세서 코어의 고유 기능을 위해 이용될 수 있다. 데이터 교환은 특히 개별 프로세서 코어와 무관하게 오로지 조정 유닛을 통해서만 이루어진다. 이로써, 특히 통신 또는 데이터 교환과, 태스크 또는 프로세스의 실행이 분리된다. 이로써, 상응하는 프로세서 코어에게 데이터 교환 또는 메모리 전송을 수행할 것을 명령하는 특수 프로그래밍이 절약될 수 있다. 그럼으로써, 특히 개별 프로세서 코어 상에서 처리되거나 실행되는 소프트웨어 또는 프로그램 코드가 간소화된다. 이로써, 특히 프로세서 코어 상에서 태스크 또는 프로세스를 실행하기 위해 필요한 실행 시간이 단축된다. 그럼으로써, 프로세서 코어의 계산 처리 능력이 증대될 수 있다.
제어 장치의 전역 메모리는 예를 들어 플래시 메모리 또는 RAM 메모리로서 형성될 수 있다. 프로세서 코어의 로컬 메모리도 특히 각각 플래시 메모리, NOR 플래시 메모리 또는 RAM 메모리로서 형성될 수 있다. 전역 메모리는 주변 모듈도 포함할 수 있다. 이와 같은 주변 모듈은 특히 센서, 액추에이터, 아날로그/디지털 변환기, PWM 제너레이터 및/또는 타이머이다. 이와 같은 주변 모듈은 특히, 프로세서 코어가 특히 자신의 기능 또는 태스크를 실행하기 위해 필요로 하는 데이터를 제공한다. 그렇기 때문에, "전역 메모리"라는 용어에는 이와 같은 주변 모듈도 포함되어야 한다.
본원에서, 프로세서 코어들은 각각 상이하게 형성될 수 있다. 예를 들어, 프로세서 코어들은 각각 상이한 능력을 갖춘 유니버설 코어(16, 32, 64 비트, 플로트 유닛(float unit) 포함 또는 미포함 등) 또는 특수 코어(DSP, 화상 처리 장치, FFT, 패턴 인식 장치 등)로서 형성될 수 있다.
본 발명에 의해, 하나의 프로세서 코어가 항상 매우 신속하게 데이터에 액세스할 수 있는데, 그 이유는 데이터가 로컬 메모리 내에 존재하기 때문이다. 이와 같은 액세스는 캐시(cache)에 액세스하는 것과 대등하다. 비내장 시스템(예컨대 PC)에서는, 로컬 메모리 대신 캐시가 자주 사용된다. 그와 달리, 로컬 메모리는 대개 내장 시스템에서 제어 장치들 및 이들 제어 장치의 멀티 코어 프로세서 내에서만 사용된다. 캐시는, 각각의 임의의 소프트웨어를 개별적으로 조정할 필요 없이, 상기 소프트웨어 각각의 데이터 액세스를 가속화하는 장점을 갖는다. 캐시의 단점은, 상기 캐시의 내용 및 이와 더불어 프로세서 코어에 의한 데이터 액세스 시간의 예측이 불가한 점에 있는데, 이때 데이터가 이미 캐시 내에 존재하는 경우에는 (cache hit), 상기 데이터에 대한 액세스가 매우 신속할 수 있다. 하지만, 데이터가 먼저 캐시 내에 로딩되어야 하는 경우에는(cache miss), 상기 데이터에 대한 액세스에 더 긴 시간이 소요될 수도 있다. 그래서 종래의 제어 장치에서는, 예측성을 위해 캐시의 사용이 포기되는 경우가 많다. 그러나 조정 유닛을 통해 더 신속한 데이터 액세스(캐시와 유사함)가 가능해질 수 있다. 이때, 조정 유닛은 특히 전역 메모리 및 로컬 메모리를 위해 상응하는 어드레스 신호 및 제어 신호를 동시에 발생시킨다. 이로써, 데이터가 로컬 메모리로부터 직접 전역 메모리로 (그리고 그 반대로) 유동할 수 있다. 이는 특히, 조정 유닛이 (캐시 컨트롤러와 유사하게) 특히 메모리들 간에 전송을 수행함으로써 가능해진다.
이로써, 본 발명에 의해서는, 데이터가 전역 메모리와 로컬 메모리 사이에서 (또는 로컬 메모리와 전역 메모리 사이에서) 훨씬 더 신속하게 교환될 수 있는데, 그 이유는 데이터가 (캐시에서와 유사하게) 바로, 즉 임시 저장 없이 전송되기 때문이다. 이러한 데이터 전송은 특히, 프로세서 코어의 (비교적) 작은(통상 32비트의) 데이터 워드 길이로써 수행되지 않고, 오히려 특히 캐시 또는 캐시 컨트롤러의 큰(통상 64 내지 256 비트의) 데이터 워드 길이로써 수행된다. 그럼으로써, 데이터 전송이 10배 이하까지 가속화될 수 있다.
더 나아가, 본 발명에 의해서는, 캐시가 통상적으로 야기하는 단점들이 극복될 수 있다. 제어 장치 내에 조정 유닛을 구현하는 것은 캐시를 구현하는 것보다 훨씬 덜 복잡하면서도 더 경제적이다. 그와 달리 캐시 데이터가 소위 캐시 미스(모든 캐시의 검색에 실패한 경우, 다시 말해 어떤 캐시 내에도 상응하는 데이터가 존재하지 않는 경우) 시 비로소 로딩되어 캐시의 시간 거동을 예측하기가 어려운 곳에서는, 조정 유닛이 데이터를 효과적이면서도 선조치적으로(proactively) 전역 메모리 또는 로컬 메모리에 로딩한다. 그와 달리 조정 유닛에 의해서는, 시간 거동을 훨씬 더 쉽게 예측할 수 있고, 제어 장치 또는 멀티 코어 프로세서의 실시간 처리성이 보장될 수 있다.
이로써, 각각의 프로세서 코어는 캐시에 액세스하는 것과 정확히 동일한 속도로 또는 거의 비슷한 속도로 자신의 로컬 메모리에 액세스할 수 있다. 또한, 종래의 제어 장치에서 전역 RAM 메모리 및 플래시 메모리에 액세스할 때 발생할 수 있는 대기 시간도 방지된다. 액세스 충돌 및 이에 기인하는 대기 시간도 마찬가지로 방지된다. 이로써, (특히 분배된 자원, 즉, 전역 메모리에 동시에 액세스함으로써 발생하는) 예측 불가능한 지연이 방지된다. 이로써, 태스크 또는 프로세스 또는 소프트웨어의 최대 실행 기간이 정확하게 결정될 수 있다. 개별 프로세서 코어의 총 계산 처리 능력이 이와 같은 태스크 또는 프로세스 또는 소프트웨어의 실행을 위해 이용될 수 있다. 또한, 이로써 정해진 실행 기간이 보증될 수 있고, 실시간 처리 능력이 보장될 수 있다. 그 밖에도 보증된 실행 시간이 단축될 수 있다. 안전 여유가 회피된다.
각각의 프로세서 코어가 자신의 고유 로컬 메모리에만 액세스할 수 있기 때문에, 개별 프로세서 코어는 (완전히) 밀봉된다. 그럼으로써, 개별 프로세서 코어가 나머지 시스템 또는 나머지 프로세서 코어를 방해할 수 없게 된다. 이로써, ISO26262에 따라 요구되는 또 다른 안전 요건, 이른바 "간섭으로부터의 자유(freedom of interference)"가 충족될 수 있다. 이 요건에 따르면, 소프트웨어 구성요소들이 상호 방해하지 않으며, (일 프로세서 코어에서의) 태스크의 실행이 (다른 프로세서 코어에서의) 다른 태스크의 실행을 방해하지 않는 점이 보장된다. 조정 유닛에 의해 이러한 "간섭으로부터의 자유"가 개념적으로 제공된다.
특히, 조정 유닛은 데이터 변환 또는 데이터의 변형을 수행한다. 특히, 조정 유닛은 이 경우 데이터를 리틀 엔디안(Little Endian) 포맷으로 판독하여 빅 엔디안(Big Endian) 포맷으로 (그리고 그 반대로) 기록한다. 더 특별하게는, 조정 유닛이 데이터를 부동 소수점 값(double, float)으로서 판독하여 데이터를 정수 값(integer)으로서 (그리고 그 반대로) 기록할 수 있다. 이때, 데이터 변환은 조정 유닛 내에서 데이터 전송(다시 말해 데이터 판독 및 기록)의 파라미터로서 또는 특수 데이터 전송 방식으로서 실현될 수 있다.
조정 유닛은 특히 제어 장치의 통신 인프라 구조를 통해서 제어 장치의 전역 메모리에 액세스할 수 있다. 특히, 조정 유닛은 분리되거나 합쳐진 버스들을 통해 전역 메모리에 액세스한다. 또한, 조정 유닛은 특히 하나의 단일 버스를 통해 프로세서 코어의 로컬 메모리에 액세스한다. 특히, 이 경우에는 크로스바(Crossbar) 또는 교환 행렬(switch matrix)이 불필요하다. 이때, 상기 버스는 특히 높은 처리량을 갖는다. 데이터가 조정 유닛에 의해 특히 큰 덩어리들로 항상 한 방향으로 전송되기 때문에, 버스는 특히 긴 대기 시간(high latency)을 가질 수 있다. 그럼으로써, 구현(implementation)이 현저히 간소화될 수 있다. 안전 요건들을 충족시키고, 데이터의 전송 및 저장 시의 오류를 조정 유닛을 통해 검출하여 경우에 따라 보정하기 위해, 상기 버스 및 전역 메모리 및/또는 로컬 메모리는 특히 오류 보정기법, 특히 오류 정정 코드(Error Correcting Code; ECC)를 이용해서 보호될 수 있다.
바람직하게, 데이터의 판독 및 기록은 조정 유닛에 의해서 전용형으로(application-specifically), 특히 특정 흐름도(flow chart)에 따라 이루어진다. 이때, 조정 유닛에는 개별 프로세서 코어가 특정 태스크 또는 프로세스를 처리하는 기준이 되는 특정 흐름도가 공지된다. 상기 흐름도에 의해서 조정 유닛에는, 어느 시점에 어느 프로세서 코어가 어느 데이터를 필요로 하는지, 다시 말해 어느 시점에 어느 데이터가 개별 프로세서 코어의 로컬 메모리에 기록되어야 하는지가 공지된다. 그럼으로써, 다른 한 편으로 조정 유닛에는, 어느 시점에 어느 프로세서 코어가 데이터를 제공하는지, 다시 말해 어느 시점에 데이터가 개별 프로세서 코어의 로컬 메모리로부터 판독될 수 있는지가 공지된다. 이와 같은 흐름도를 위해서는, 특히 특정 태스크 또는 특정 프로세스의 주기가 고려된다. 상기 주기는, 태스크 또는 프로세스가 프로세서 코어에 의해 실행되는 시간 간격이다. 이로써, 상기 주기는 개별 태스크 또는 프로세스의 실행 시점을 기술한다. 하지만, 태스크 또는 프로세스가 반드시 정해진 주기 내에 실행될 필요는 없다. 대안적으로, 조정 유닛에 태스크 또는 프로세스의 시간적으로 예측 가능한 다른 실행도 공지될 수 있다.
이로써, 조정 유닛은 데이터의 판독 및 기록을 바람직하게 시간 구동 방식으로 수행하고, 더욱 특별하게는 개별 태스크 또는 개별 프로세스의 주기 또는 실행 시점에 상응하게 수행한다. 이로써, 조정 유닛은 데이터의 판독 및 기록을 개별 프로세서 코어와 무관하게 수행한다. 예를 들어, 조정 유닛은, 특정 태스크 또는 프로세스를 공지된 주기로 실행하기 전에, 규칙적인 시간 간격으로 전역 메모리의 데이터를 프로세서 코어의 로컬 메모리로 기록할 수 있다. 데이터의 시간 구동적인 판독 및 기록을 실행된 태스크 또는 프로세스의 주기와 일치시키기 위하여, 조정 유닛과 프로세서 코어는 특히 하나의 공통 타임 베이스(time base)를 갖는다. 상기 공통 타임 베이스는 예를 들어 하나의 공통 클럭 또는 적합한 동기화 메커니즘을 통해 실현될 수 있다. 또는 조정 유닛이 고유한 클럭을 가질 수도 있다.
한 바람직한 실시예에서, 조정 유닛은, 실행할 태스크의 프로그램 코드 및/또는 실행할 태스크를 위해 필요한 입력 데이터를 전역 메모리로부터 판독한다. 조정 유닛은 상기 판독된 프로그램 코드 또는 상기 판독된 입력 데이터를 데이터로서 일 프로세서 코어의 로컬 메모리에 기록한다. 이때, 하나의 태스크가 1개의 소프트웨어이다. 하나의 태스크를 실행 또는 처리하기 위해서는 입력 데이터가 필요하다. 이때, 입력 데이터는 특히 주변 모듈, 특히 센서에 의해 수집된 측정 데이터, 예를 들어 모터 회전수, 온도 및/또는 압력이다.
종래의 제어 장치와 달리, 하나의 프로세서 코어가 상응하는 태스크를 실행해야 하는 경우에는, 상기 프로세서 코어가 프로그램 코드 및 입력 데이터를 자발적으로 전역 메모리로부터 자신의 로컬 메모리로 로딩할 필요가 없다. 그 대신, 상기 프로세서 코어에는 상응하는 프로그램 코드/입력 데이터가 외부로부터 조정 유닛에 의해 제공된다.
이때, 조정 유닛은 하나의 프로그램 코드를 블록 단위로 로컬 메모리에 기록할 수 있거나, 복수의 태스크의 프로그램 코드들을 동시에 기록할 수도 있다. 특히, 조정 유닛은 상응하는 프로세서 코어에 의해 실행될 다음 태스크를 위한 프로그램 코드를 상응하는 로컬 메모리에 기록할 수 있다. 조정 유닛은 또한, 예를 들어 어느 프로세서 코어가 어느 태스크를 실행해야 하는지가 계속 바뀔 경우, 지속적(persistent) 입력 데이터를 산발적으로 로컬 메모리에 기록할 수 있다.
대안적으로, 실행될 태스크의 프로그램 코드가 미리 프로세서 코어의 로컬 메모리에 자징될 수 있다. 예를 들어, 상기 프로그램 코드는 제어 장치의 초기화 단계의 진행 중에 로컬 메모리에 기록될 수 있다. 또한, 프로그램 코드가 계속해서 선행 태스크 실행으로부터 로컬 메모리에 저장되어 있는 것도 가능하다. 이 경우, 프로그램 코드가 계속해서 프로세서 코어의 로컬 플래시 메모리 또는 (비휘발성) RAM 메모리에 저장되어 있는 것도 가능하다. 이들 경우에는, 조정 유닛이 프로그램 코드를 다시 전역 메모리로부터 판독하여 로컬 메모리에 기록할 필요가 없으며, 오히려 프로세서 코어에 태스크를 실행하라는 명령만 하면 된다.
상응하는 프로그램 코드가 이미 프로세서 코어의 로컬 메모리 내에 저장되어 있다면, 조정 유닛은 입력 데이터만 로컬 메모리에 저장할 수도 있다. 이때, 조정 유닛은 입력 데이터를 예를 들어 제어 장치의 전역 플래시 메모리 또는 전역 RAM 메모리로부터 판독할 수 있거나, 직접 개별 주변 모듈로부터, 특히 개별 센서로부터 판독할 수 있다.
또 다른 한 바람직한 실시예에서, 조정 유닛은, 프로세서 코어가 하나의 태스크를 실행한 후 자신의 로컬 메모리에 저장하는 출력 데이터를 상기 로컬 메모리로부터 판독한다. 조정 유닛은 상기 판독된 출력 데이터를 전역 메모리에 데이터로서 기록하고, 그리고/또는 나머지 프로세서 코어들 중 하나의 로컬 메모리에 데이터로서 기록한다. 태스크의 실행을 통해 프로세서 코어는 상응하는 출력 데이터를 결정한다. 출력 데이터는 예를 들어 분사 시간 및/또는 분사량일 수 있다.
일 프로세서 코어의 출력 데이터는 다시 다른 프로세서 코어의 입력 데이터로서 이용될 수 있거나, 다른 프로세서 코어에 의해 추가 처리될 수 있다. 이 경우, 조정 유닛이 상기 출력 데이터를 상응하는 프로세서 코어의 로컬 메모리에 기록한다.
종래의 제어 장치와 달리, 개별 프로세서 코어는 하나의 태스크를 실행하는 동안에 또는 실행한 후에 출력 데이터를 자발적으로 전역 메모리에 또는 다른 프로세서 코어의 로컬 메모리에 기록한다. 또한, 종래의 제어 장치와 달리, 프로세서 코어들은, 제어 신호 형태의 출력 데이터를 이용해서 주변 모듈, 예를 들어 액추에이터를 직접 제어하는 것이 허용되지 않는다. 그 대신, 상응하는 출력 데이터가 외부로부터 조정 유닛에 의해서 호출된다.
일 프로세서 코어가 하나의 태스크를 성공적으로 실행하는 즉시, 또는 출력 데이터가 이미 로컬 메모리에 기록된 상태에서 이미 태스크가 계속 실행되고 있는동안에도, 조정 유닛이 출력 데이터를 판독할 수 있다. 복수의 태스크가 실행된 후에는, 조정 유닛이 예를 들어 상기 복수의 태스크의 출력 데이터를 블록 단위로 판독할 수도 있다. 여러번 실행된 하나의 태스크의 출력 데이터의 블록 단위 판독도 고려될 수 있다.
일 프로세서 코어에 의한 하나의 태스크의 실행 종료는 예를 들어 시간 경과에 의해 추정되거나 예측될 수 있다. 프로세서 코어는 태스크의 실행 종료를 조정 유닛에 시그널링할 수도 있는데, 예를 들어 인터럽트로써 또는 자신의 로컬 메모리에서의 날짜 세팅을 통해 전달할 수 있다.
출력 데이터는 특히 주변 모듈을 제어하기 위한 제어 신호일 수 있거나, 주변 모듈을 제어할 수 있는 방법에 대한 정보를 포함할 수 있다. 이 경우, 조정 유닛은 주변 모듈을 상기 제어 신호에 상응하게 제어한다.
바람직하게, 조정 유닛은 개별 프로세서 코어에 실행할 태스크를 할당하고, 그리고/또는 개별 프로세서 코어에 특정 태스크를 실행하라는 명령을 한다. 이로써, 조정 유닛은 특히 어떤 태스크가 어느 프로세서 코어에 의해서 실행될지를 조정한다. 이 경우, 특히 조정 유닛은 전술된 흐름도에 따라 개별 태스크를 조정한다. 이때, 조정 유닛은 특히 개별 프로세서 코어에 상응하는 태스크의 상응하는 시작 어드레스(start address)를 알려준다. 더 특별하게, 조정 유닛은, 개별 프로세서 코어가 개별 태스크의 실행을 언제 시작해야 하는지를 개별 프로세서 코어에 시그널링한다. 이는 예를 들어 상응하는 프로세서 코어에서 인터럽트에 의해 실현될 수 있거나, 상기 프로세서 코어에서 타이머 설정을 통해 실현될 수 있다. 조정 유닛은 또한, 현재의 태스크를 성공적으로 실행한 직후에 상응하는 프로세서 코어에게 새로운 태스크를 시작하라는 명령을 할 수 있다.
특히, 조정 유닛은, 상이한 소스로부터 유래하는 태스크 또는 상응하는 소프트웨어 구성 요소가 상이한 프로세서 코어에서 실행되도록, 개별 프로세서 코어에 실행할 태스크를 할당한다. 이 경우, 조정 유닛이 입력 데이터를 개별 프로세서 코어의 로컬 메모리에 올바르게 저장하고 출력 데이터를 상응하게 판독할 수 있도록 하기 위해, 각각의 소프트웨어 구성 요소를 위해 상응하는 입력 데이터 및 출력 데이터가 규정된다. 이때, 조정 유닛은 특히 개별 태스크 또는 소프트웨어 구성 요소의 실행 기간과 관련된 정보를 갖고 있다. 소프트웨어 구성 요소는 임의의 툴 체인(toolchain)을 사용해서 목적에 부합하는 프로그래밍 언어로 생성될 수 있다. 소프트웨어 구성 요소는 특히 완성된 프로그램 코드 또는 목적 코드(object code)로서 존재한다. 이 경우, 상기 프로그램 코드가 재배치(특정 메모리 어드레스에 맞추어 조정) 가능해야 할 필요는 없는데, 그 이유는 각각의 프로세서 코어가 자신의 고유 로컬 메모리 및 이와 더불어 자신의 고유 어드레스 공간을 갖기 때문이다.
조정 유닛이 데이터를 신속하게 변환 또는 변형할 수 있기 때문에, 데이터는 특히 상이하게 코딩될 수 있다. 이로써, 특히 실수(float)를 이용하는 최근의 소프트웨어 구성 요소는 정수(integer)를 이용하는 과거의 소프트웨어 구성 요소와 협력할 수 있다. 이 경우, 조정 유닛은 필요한 데이터 변환 및 이와 더불어 구체적으로 개별 데이터의 "번역(translation)"을 실시한다. 이로써, 상이하게 코딩된 소프트웨어 구성 요소가 더 현대적인 구조로 옮기고(migrate) 더 현대적인 프로그래밍 언어 및 툴 체인을 이용하는 것이 가능해진다. 대안적으로, 바람직하게는 상이한 구조들이 지속적으로 병용될 수도 있다.
바람직하게, 조정 유닛은 복수의 프로세서 코어에 특정 태스크를 실행하라는 명령을 한다. 이어서, 조정 유닛은 상기 프로세서 코어들의 개별 출력 데이터를 서로 비교한다. 대안적으로 또는 추가로, 조정 유닛은 프로세서 코어에 특정 태스크를 여러 번 실행하라는 명령을 한다. 이 경우에도, 조정 유닛은 상기 프로세서 코어에 의해 여러 번 실행된 태스크의 개별 출력 데이터를 서로 비교한다. 조정 유닛은 또한 다수결을 이용해서도 상기 출력 데이터를 서로 비교할 수 있다. 이와 같은 태스크의 반복 실행은 특히 안전 요건이 까다로운 경우에 바람직하다.
바람직하게, 조정 유닛은 개별 프로세서 코어를 제어한다. 제어가 진행되는 동안 조정 유닛은 개별 프로세서 코어를 일시 중단하고, 리셋하고, 정지시키고, 테스트하고, 절전 모드로 전환하고, 그리고/또는 개별 프로세서 코어의 클럭 주파수를 변경할 수 있다. 이로써, 조정 유닛은, 나머지 프로세서 코어에 영향을 미치거나 나머지 프로세서 코어를 방해하지 않으면서, 각각의 프로세서 코어를 목적에 맞게 제어할 수 있다. 특히, 조정 유닛은 규칙적인 시간 간격으로 개별 프로세서 코어를 테스트할 수 있다. 상황에 따라 결함을 가질 수 있는 "의심스러운" 프로세서 코어는 조정 유닛에 의해 작동이 정지될 수 있다. 이 경우에, 조정 유닛은 상기 작동 정지된 프로세서 코어에 할당된 태스크를 다른 프로세서 코어에 할당한다. 이 경우, 특히 이들 태스크는 비어 있는 예비 프로세서 코어에 할당될 수 있고, 이 예비 프로세서 코어에 의해 실행될 수 있다. 조정 유닛은 또한 작동 정지된 프로세서 코어에서 자가 테스트(BIST)를 실행할 수 있다.
바람직하게, 조정 유닛은 개별 프로세서 코어에서 하나의 또는 다양한 인터럽트를 발생시킬 수 있다. 그럼으로써, 예컨대 지연 또는 메모리 액세스 오류가 조정 유닛에 의해 안내될 수 있다. 인터럽트는 흐름도를 위해서도 이용될 수 있으며, 이 경우 일 프로세서 코어의 로컬 메모리로의 데이터 기록이 종료되는 즉시 조정 유닛이 인터럽트를 이용하여 프로세서 코어에 상응하는 태스크를 실행하라는 명령을 할 수 있다. 데이터 전송, 다시 말해 데이터의 판독 및 기록에는 특히 클럭 단위의 최대 기간이 할당될 수 있다. 데이터 전송이 상기 시간 이내에 종료되지 않았다면, 조정 유닛은 상응하는 프로세서 코어에 인터럽트를 발생시킨다. 더 나아가, 데이터 전송 동작에는 특히 클럭 단위의 최소 기간이 할당될 수 있다. 데이터 전송이 상기 최소 기간보다 짧은 시간 안에 종료되면, 나머지 클럭들은 대기하게 된다. 또한, 조정 유닛은 특히 모듈로(modulo) 대기 동작을 가능하게 한다. 따라서, 예를 들어 데이터 전송 기간이 가변적인 경우에는 특정 기간에 맞추어 동기화될 수 있다. 조정 유닛은 또한 절대 시간 대기 동작도 포함할 수 있으며, 이로써 특정 개수의 클럭이 대기하게 된다.
바람직하게, 프로세서 코어의 개별 로컬 메모리들은 각각 상이한 메모리 뱅크(memory bank)로 세분된다. 조정 유닛은, 개별 프로세서 코어가 어느 메모리 뱅크에 액세스할 수 있는지를 제어하거나 결정하거나 설정한다. 이로써, 조정 유닛은, 프로세서 코어의 동작에 영향을 미치지 않으면서, 상기 프로세서 코어가 액세스해서는 안 되는 프로세서 코어의 메모리 뱅크에 언제나 액세스할 수 있다. 이로써, 프로세서 코어의 실행 시간이 예측될 수 있다. 프로세서 코어가 액세스해도 되는 메모리 뱅크에서 상기 프로세서 코어가 동작하고 태스크를 실행하는 동안, 조정 유닛은 나머지 메모리 뱅크에서 이미 다음 태스크를 준비할 수 있고, 특히 상응하는 프로세서 코어가 다음으로 실행해야 하는 태스크의 프로그램 코드 및/또는 입력 데이터를 미리 상기 나머지 메모리 뱅크에 저장할 수 있다. 이로써, 복잡한 듀얼 포트 RAM(dual ported RAM)이 불필요하다. 특히, 각각의 프로세서 코어는 4개 이상의 메모리 뱅크를 갖는다. 그러나 메모리 뱅크의 개수 및 크기는 개별 프로세서 코어의 적용 분야에 따라 개별 프로세서 코어마다 상이하게 선택될 수도 있다.
본 발명의 한 바람직한 실시예에서, 조정 유닛은 프로세서 코어의 부분으로서 형성된다. 이 경우, 특히 복수의 프로세서 코어가 조정 유닛을 각각 하나씩 구비할 수 있다. 더욱 특별하게는, 각각의 프로세서 코어가 고유의 전용 조정 유닛을 갖는다. 이들 개별 조정 유닛은 각각 개별 관련 프로세서 코어의 데이터의 판독 및 기록을 조정한다. 복수의 조정 유닛이 동일한 데이터에 동시에 액세스하는 것을 방지하고, 이로써 액세스 충돌을 방지하기 위해, 개별 조정 유닛은 서로 연결되어 있고, 상호 조정될 수 있다.
대안적으로 또는 추가로, 조정 유닛은 바람직하게 별도의 부품 또는 하드웨어 요소로서 형성된다. 특히, 조정 유닛은 컨트롤러로서 또는 고유 프로세서 코어로서도 형성될 수 있다. 컨트롤러로서의 형성은 특히 마스터들 및 슬레이브들을 갖춘 버스 시스템에서 제공된다. 이 경우, 상기 조정 유닛이 여러 개 존재할 수도 있다. 이러한 조정 유닛은 특히 최고의 데이터 판독 속도 및 데이터 기록 속도, 최고의 안전 및 최고의 가용성을 보장해준다.
하드웨어 요소로서 형성된 조정 유닛은 특히 데이터를 판독 및 기록하기 위한 마스터 포트(master port)를 가지며, 더 특별하게는 하나의 고유한 로컬 메모리를 구비한다. 또한, 조정 유닛은 특히, 개별 프로세서 코어에 대한 하나 또는 복수의 (마스터) 인터페이스를 가지며, 상기 인터페이스는 특히 프로세서 코어 당 각각 하나 또는 복수의 슬레이브 포트(slave port)를 구비한다. 특히, 조정 유닛은 조정 유닛의 스타트 이후의 클럭 횟수를 검출하는 카운터(counter)도 구비할 수 있다.
더 나아가, 조정 유닛은 특히 목적에 부합하는 로직 또는 논리 유닛, 특히 산술 논리 유닛(ALU)을 구비한다. 상기 로직을 이용해서, 조정 유닛은 목적에 부합하는 프로그래밍을 실행할 수 있다. "조정 유닛"이라는 용어에는 특히 상기 프로그래밍, 또는 일반적으로 상응하는 하드웨어 요소에서 실행되는 소프트웨어도 포함될 수 있다. 따라서, "조정 유닛"이라는 용어는 상응하는 하드웨어 요소뿐만 아니라 상응하게 실행되는 소프트웨어도 포함한다.
이때, 상기 프로그래밍은 특히 조정 유닛의 로컬 메모리 내에 저장된다. 대안적으로, 이 프로그래밍은 제어 장치의 전역 메모리 내에 또는 일 프로세서 코어의 로컬 메모리 내에 저장될 수도 있다. 프로그래밍은 조정 유닛에 의해 특히 연속으로 처리된다. 프로그래밍은 특히 조정 유닛을 구성하는 데 이용된다.
프로세서 코어와 유사하게, 조정 유닛은 클럭으로 동작한다. 매 클럭에서 조정 유닛은 특히 하나의 동작을 처리하거나 슬립 모드(sleep)를 취할 수 있다. 이때, 클럭은 프로세서 클럭일 수도 있고, 예컨대 통신 매체의 클럭과 같이 프로세서 클럭과 비동기적일 수도 있다. 조정 유닛의 프로그래밍은 특히 데이터 전송 동작, 대기 동작 및 스킵(skip) 동작이 임의의 순서로 구성된 리스트일 수 있다. 이때, 데이터 전송 동작은 특히 판독될 데이터를 포함하는 판독 어드레스 및 데이터가 기록되어야 하는 메모리 어드레스를 포함한다. 더 나아가, 데이터 전송 동작은, 전송되어야 하는 일련의 데이터 워드, 및 선택적으로 데이터를 재부호화(recoding)하기 위한 명령을 포함한다. 대기 동작은 특히, 조정 유닛이 얼마나 많은 클럭 동안 슬립 상태에 있어야 하는지를 지시하는 수치값을 포함한다. 이때, 특수한 값(예컨대 0)은 특히 "추가 명령이 있을 때까지 슬립 모드 유지"를 의미한다. 스킵 동작은 특히, 조정 유닛에 의해 다음 순서로 처리되어야 하는 동작이 위치한 곳을 알려주는 메모리 어드레스를 포함한다.
본 발명의 또 다른 장점들 및 실시예들은 상세한 설명 및 첨부 도면을 참조한다.
전술한 특징들 및 하기에 추가로 설명될 특징들은 여기에 제시된 조합뿐만 아니라 다른 방식으로 조합된 형태로 또는 단독으로도 본 발명의 범주 내에서 적용될 수 있다.
본 발명은, 일 실시예를 토대로 도면에 개략적으로 도시되어 있고, 이하에서 그 도면을 참조하여 상세하게 설명될 것이다.
도 1은 본 발명에 따른 자동차용 제어 장치의 한 바람직한 실시예를 개략적으로 도시한다.
도 1에는, 본 발명에 따른 자동차용 제어 장치의 한 바람직한 실시예가 개략적으로 도시되어 있으며, 이 제어 장치는 도면 부호 (10)으로 표기되어 있다.
본 실시예에서, 제어 장치(10)는 하나의 멀티 코어 프로세서(100)를 포함한다. 멀티 코어 프로세서(100)는 본 실시예에서 3개의 프로세서 코어(110, 120 및 130)를 포함한다. 일 프로세서 코어의 구조를 이하에서 프로세서 코어(110)를 예로 들어 설명한다. 나머지 프로세서 코어(120 및 130)는 특히 프로세서 코어(110)와 유사하게 형성된다.
프로세서 코어(110)는 산술 논리 유닛(ALU)(111) 및 로컬 메모리(112)를 구비한다. 로컬 메모리(112)는 특히 로컬 플래시 메모리 또는 RAM 메모리로서 형성될 수 있다. 특히, 로컬 메모리(112)는 메모리 뱅크(112a 내지 112d)로 세분된다.
제어 장치(10)는 추가로 전역 메모리(300)도 구비한다. 상기 전역 메모리는 플래시 메모리(310), RAM 메모리(320)뿐만 아니라 주변 장치(330)도 포함할 수 있다. 이때, 주변 장치(330)는 예를 들어 센서, 액추에이터, 아날로그/디지털 변환기, PWM 제너레이터 또는 타이머로서 형성될 수 있는 주변 모듈(331 내지 334)을 포함한다.
각각의 프로세서 코어(110, 120 및 130)는 오직 자신의 고유 로컬 메모리에만 액세스할 수 있고, 다른 프로세서 코어의 로컬 메모리와 전역 메모리(300)에는 액세스할 수 없다. 따라서, 예를 들어 프로세서 코어(110)는 오직 자신의 고유 로컬 메모리(112)에만 액세스할 수 있고, 상기 로컬 메모리로부터만 데이터를 판독할 수 있고, 상기 로컬 메모리에만 데이터를 기록할 수 있다. 프로세서 코어(110)는 나머지 프로세서 코어(120 및 130)의 로컬 메모리와 전역 메모리(300)에는 액세스 할 수 없다.
더 나아가, 제어 장치(10)는 조정 유닛(200)을 구비한다. 상기 조정 유닛(200)은 특히 상응하는 소프트웨어가 실행되는 별도의 하드웨어 요소로서 형성된다. 조정 유닛(200)은 각각 버스(210 또는 220)를 통해서 멀티 코어 프로세서(100)의 프로세서 코어(110, 120 및 130) 및 전역 메모리(300)와 링크되어 있다.
조정 유닛(200)은 개별 프로세서 코어(110, 120, 130)에 다양한 태스크를 실행하도록 명령을 한다. 이 경우, 조정 유닛(200)은 먼저 전역 메모리(300)의 플래시 메모리(310) 또는 RAM 메모리(320)로부터 상응하는 프로그램 코드를 판독하고, 그 데이터를 태스크를 실행해야 하는 프로세서 코어의 로컬 메모리 내에 기록한다. 본 실시예에서는, 조정 유닛(200)이 프로그램 코드를 프로세서 코어(110)의 로컬 메모리(112)에 기록한다.
이때, 조정 유닛(200)은 프로그램 코드를 로컬 메모리(112)의 특정 메모리 뱅크에, 예를 들어 메모리 뱅크(112a)에 기록한다. 계속해서 조정 유닛(200)은, 프로세서 코어(110)가 태스크를 실행하기 위해서 필요로 하는 입력 데이터를 판독한다. 예를 들어, 상기 입력 데이터는 주변 장치(330) 내 센서(331)가 검출하는 측정값이다. 조정 유닛(200)은 상기 측정값을 판독하고, 이 측정값을 데이터로서 예를 들어 프로세서 코어(110)의 로컬 메모리(112)의 메모리 뱅크(112b) 내에 저장한다. 이때, 필요에 따라 조정 유닛(200)은 판독된 데이터와 기록될 데이터 간의 변환을 수행한다.
이어서 조정 유닛(200)은, 특히 인터럽트를 이용해서, 프로세서 코어(110)에 태스크를 실행하라는 명령을 한다. 프로세서 코어(110)의 ALU(111)는, 메모리 뱅크(112b) 내에 저장된 입력 데이터를 이용해서, 메모리 뱅크(112a) 내에 저장된 프로그램 코드를 실행한다. 이때, 출력 데이터가 발생하며, 이 출력 데이터를 프로세서 코어(110)가 예를 들어 마찬가지로 메모리 뱅크(112b) 내에 저장한다.
조정 유닛(200)은 메모리 뱅크(112b)로부터 상기 출력 데이터를 판독하고, 상기 출력 데이터를 예를 들어 전역 메모리(300)의 플래시 메모리(310) 또는 RAM 메모리(320) 내에 데이터로서 저장한다.

Claims (10)

  1. 제어 장치로서,
    적어도 2개의 프로세서 코어들을 갖는 멀티코어 프로세서;
    전역 메모리; 및
    조정 유닛(coordination unit)
    을 포함하고,
    상기 프로세서 코어들의 각각은 로컬 메모리를 포함하고,
    상기 프로세서 코어들의 각각은 자신의 고유 로컬 메모리에만 액세스하도록 구성되고,
    상기 프로세서 코어들의 각각은, 상기 프로세서 코어들 중 나머지 프로세서 코어들의 로컬 메모리와 전역 메모리에는 액세스할 수 없도록 구성되고,
    상기 조정 유닛은, 상기 조정 유닛이 이용 가능한 시퀀스 플랜(sequence plan)에 따라, 중간 저장 없이 직접, 상기 제어 장치의 전역 메모리로부터 상기 프로세서 코어들의 로컬 메모리들로 데이터를 전송하도록 구성되고,
    상기 조정 유닛은, 상기 조정 유닛이 이용 가능한 상기 시퀀스 플랜에 따라, 중간 저장 없이 직접, 상기 프로세서 코어들 중 개별 프로세서 코어들의 로컬 메모리들로부터, 상기 전역 메모리 또는 상기 프로세서 코어들 중 다른 프로세서 코어의 로컬 메모리 중 적어도 하나로 데이터를 전송하도록 구성되고,
    상기 조정 유닛은, 상기 조정 유닛이 이용 가능한 상기 시퀀스 플랜에 따라, 상기 적어도 2개의 프로세서 코어들 중 각각으로 태스크를 할당하고 그리고/또는 상기 조정 유닛이 이용 가능한 상기 시퀀스 플랜에 따라, 상기 적어도 2개의 프로세서 코어들 중 각각이 상기 태스크를 수행하도록 지시하도록 구성되고,
    상기 조정 유닛은 제어기 또는 프로세서를 포함하고,
    상기 조정 유닛은, 데이터 액세스 충돌의 발생을 방지하기 위해, 상기 멀티코어 프로세서의 프로세서 코어들의 로컬 메모리들 서로간의 데이터 교환 뿐만 아니라, 상기 전역 메모리와 상기 멀티코어 프로세서의 프로세서 코어들의 로컬 메모리들 사이의 데이터 교환을 조정하고,
    상기 조정 유닛은, 소프트웨어를 실행하도록 구성되고,
    상기 조정 유닛은, 상기 멀티코어 프로세서의 프로세서 코어들과 버스를 통해 네트워킹되는, 제어 장치.
  2. 제1항에 있어서,
    상기 조정 유닛은, 상기 프로세서 코어들의 로컬 메모리로의 중간 저장 없이 직접, 실행할 태스크를 위해 필요한 입력 데이터 및 실행할 태스크의 프로그램 코드 중 적어도 하나를, 상기 프로세서 코어들의 상기 로컬 메모리들로 전송함으로써, 상기 전역 메모리로부터의 데이터의 전송을 실행하도록 구성되는, 제어 장치.
  3. 제1항에 있어서,
    상기 조정 유닛은, 태스크 실행 후 프로세서 코어에 의해 자신의 로컬 메모리에 저장된 출력 데이터를, 중간 저장 없이 직접, 상기 자신의 로컬 메모리로부터 상기 전역 메모리 및 상기 다른 프로세서 코어들 중 하나의 프로세서 코어의 로컬 메모리 중 적어도 하나로 전송하도록 구성되는, 제어 장치.
  4. 제1항에 있어서,
    상기 조정 유닛은, 상기 프로세서 코어들 중 각각에서 실행할 태스크를 할당하도록, 그리고/또는 상기 프로세서 코어들 중 각각에 특정 태스크들을 실행하라는 명령을 하도록 구성되는, 제어 장치.
  5. 제1항에 있어서,
    상기 조정 유닛은, 복수의 프로세서 코어들에 특정 태스크를 실행하라는 명령을 하고, 상기 프로세서 코어들의 개별 출력 데이터를 서로 비교하도록 구성되며, 그리고/또는 상기 조정 유닛은, 프로세서 코어에 특정 태스크를 여러 번 실행하라는 명령을 하고, 상기 프로세서 코어에 의해 여러 번 실행된 개별 출력 데이터를 서로 비교하도록 구성되는, 제어 장치.
  6. 제1항에 있어서,
    상기 조정 유닛은, 상기 프로세서 코어들의 각각을 제어하도록, 그리고 상기 제어의 진행 중에 개별 프로세서 코어들을 일시 중단하고, 리셋하고, 정지시키고, 테스트하고, 절전 모드로 전환하고, 상기 프로세서 코어들에서 인터럽트를 발생시키고, 그리고/또는 상기 프로세서 코어들의 클럭 주파수를 변경하도록 구성되는, 제어 장치.
  7. 제1항에 있어서,
    상기 프로세서 코어들의 개별 로컬 메모리들은 각각 상이한 메모리 뱅크들로 세분되며,
    상기 조정 유닛은, 상기 개별 프로세서 코어가 어느 메모리 뱅크들에 액세스하도록 허락되는지를 제어하도록 구성되는, 제어 장치.
  8. 제1항에 있어서,
    상기 조정 유닛은 하나의 프로세서 코어의 부분으로서 형성되거나, 별도의 하드웨어 요소로서 형성되는, 제어 장치.
  9. 제1항에 있어서,
    상기 제어 장치는 자동차용 제어 장치인, 제어 장치.
  10. 제1항에 있어서,
    상기 조정 유닛에 의해, 중간 저장 없이 직접, 상기 제어 장치의 상기 전역 메모리로부터 상기 프로세서 코어들 각각의 로컬 메모리로 데이터를 전송하는 것은, 상기 프로세서 코어들과 독립적으로 이루어지고,
    상기 조정 유닛에 의해, 중간 저장 없이 직접, 상기 프로세서 코어들 중 개별 프로세서 코어들의 로컬 메모리들로부터, 상기 전역 메모리 또는 상기 다른 프로세서 코어들의 로컬 메모리들 중 적어도 하나로 데이터를 전송하는 것은, 상기 프로세서 코어들과 독립적으로 이루어지는, 제어 장치.
KR1020167014486A 2013-12-03 2014-10-13 자동차용 제어 장치 KR102269504B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102013224702.8 2013-12-03
DE102013224702.8A DE102013224702A1 (de) 2013-12-03 2013-12-03 Steuergerät für ein Kraftfahrzeug
PCT/EP2014/071872 WO2015082109A1 (de) 2013-12-03 2014-10-13 Steuergerät für ein kraftfahrzeug

Publications (2)

Publication Number Publication Date
KR20160093621A KR20160093621A (ko) 2016-08-08
KR102269504B1 true KR102269504B1 (ko) 2021-06-28

Family

ID=51691053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167014486A KR102269504B1 (ko) 2013-12-03 2014-10-13 자동차용 제어 장치

Country Status (8)

Country Link
US (1) US10657039B2 (ko)
EP (1) EP3077912B1 (ko)
JP (1) JP6321807B2 (ko)
KR (1) KR102269504B1 (ko)
CN (1) CN105765541B (ko)
DE (1) DE102013224702A1 (ko)
TW (1) TWI651652B (ko)
WO (1) WO2015082109A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6327994B2 (ja) * 2014-07-28 2018-05-23 ルネサスエレクトロニクス株式会社 制御システムおよび半導体装置
DE102015218589A1 (de) 2015-09-28 2017-03-30 Robert Bosch Gmbh Verfahren und Vorrichtung zum Betreiben eines Many-Core-System
DE102015223331A1 (de) * 2015-11-25 2017-06-01 Robert Bosch Gmbh Mikrocontroller
DE102016211386A1 (de) 2016-06-14 2017-12-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
WO2018014282A1 (en) * 2016-07-21 2018-01-25 Baidu.Com Times Technology (Beijing) Co., Ltd. Efficient communications amongst computing nodes for operating autonomous vehicles
DE102016223341A1 (de) * 2016-11-24 2018-05-24 Robert Bosch Gmbh Integrierte Schaltung mit Hardwareprüfeinheit zum Überprüfen von ausgewählten Speicherzugriffen
FR3065550A1 (fr) * 2017-09-29 2018-10-26 Continental Automotive France Procede d'echange protege de donnees entre deux taches
DE102017220764A1 (de) 2017-11-21 2019-05-23 Audi Ag Ein-Chip-System für ein Fahrzeug
IT201900018362A1 (it) * 2019-10-10 2021-04-10 Texa Spa Metodo e sistema di controllo di almeno due motori elettrici di trazione di un veicolo
US11288070B2 (en) 2019-11-04 2022-03-29 International Business Machines Corporation Optimization of low-level memory operations in a NUMA environment
DE102020205146A1 (de) 2020-04-23 2021-10-28 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zur Steuerung eines technischen Systems
US11305810B2 (en) 2020-04-24 2022-04-19 Steering Solutions Ip Holding Corporation Method and system to synchronize non-deterministic events

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163239A (ja) * 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
DE102009029642A1 (de) * 2009-09-21 2011-03-24 Robert Bosch Gmbh Verfahren zur Bearbeitung von Informationen und Aktivitäten in einem steuer- und/oder regelungstechnischen System

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3039953B2 (ja) * 1989-04-28 2000-05-08 株式会社日立製作所 並列化装置
JPH08249196A (ja) * 1995-03-13 1996-09-27 Mitsubishi Electric Corp タスクの冗長化実行方式
JPH08314744A (ja) * 1995-05-18 1996-11-29 Hitachi Ltd フォールトトレラントシステム
JP4394298B2 (ja) * 2001-02-20 2010-01-06 日本電気株式会社 マルチプロセッサシステムとその共有メモリ制御方法、及び共有メモリ制御プログラム
JP3884990B2 (ja) 2002-04-26 2007-02-21 富士通株式会社 マルチプロセッサ装置
JP4025260B2 (ja) * 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム
JP4620974B2 (ja) 2004-06-30 2011-01-26 富士通株式会社 表示パネル用制御装置及びそれを有する表示装置
DE102005037230A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Überwachung von Funktionen eines Rechnersystems
US7849241B2 (en) * 2006-03-23 2010-12-07 International Business Machines Corporation Memory compression method and apparatus for heterogeneous processor architectures in an information handling system
US9712486B2 (en) * 2006-09-25 2017-07-18 Weaved, Inc. Techniques for the deployment and management of network connected devices
US8266393B2 (en) * 2008-06-04 2012-09-11 Microsoft Corporation Coordination among multiple memory controllers
US8134852B2 (en) * 2008-10-14 2012-03-13 Mosaid Technologies Incorporated Bridge device architecture for connecting discrete memory devices to a system
US8312219B2 (en) * 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
FR2946442B1 (fr) * 2009-06-05 2011-08-05 Airbus France Procede et dispositif de chargement et d'execution d'instructions a cycles deterministes dans un systeme avionique multi-coeurs ayant un bus dont le temps d'acces est non predictible
US20120246650A1 (en) * 2009-09-21 2012-09-27 Bernd Mueller Method for processing information and activities in a control and/or regulating system with the aid of a multi-core processor
KR20110066448A (ko) 2009-12-11 2011-06-17 삼성에스디아이 주식회사 리튬 이차전지
US8521456B2 (en) 2010-10-05 2013-08-27 Toyota Jidosha Kabushiki Kaisha State estimation method and state estimation apparatus of electric storage element
US9804995B2 (en) * 2011-01-14 2017-10-31 Qualcomm Incorporated Computational resource pipelining in general purpose graphics processing unit
DE102012207212A1 (de) * 2012-04-30 2013-10-31 Bizerba Gmbh & Co. Kg Verfahren zur Darstellung von Inhaltselementen auf einer Anzeigeeinrichtung, insbesondere einer Waage
DE102012207215A1 (de) * 2012-04-30 2013-10-31 Robert Bosch Gmbh Verfahren und Vorrichtung zur Überwachung von Funktionen eines Rechnersystems, vorzugsweise eines Motorsteuersystems eines Kraftfahrzeuges
US9202047B2 (en) * 2012-05-14 2015-12-01 Qualcomm Incorporated System, apparatus, and method for adaptive observation of mobile device behavior
DE102012023395A1 (de) * 2012-11-29 2014-06-05 Eads Deutschland Gmbh Schnittstellenvorrichtung und Verfahren zum Austauschen von Nutzdaten

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163239A (ja) * 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
DE102009029642A1 (de) * 2009-09-21 2011-03-24 Robert Bosch Gmbh Verfahren zur Bearbeitung von Informationen und Aktivitäten in einem steuer- und/oder regelungstechnischen System

Also Published As

Publication number Publication date
DE102013224702A1 (de) 2015-06-03
US10657039B2 (en) 2020-05-19
EP3077912B1 (de) 2018-08-08
JP6321807B2 (ja) 2018-05-09
EP3077912A1 (de) 2016-10-12
US20160299839A1 (en) 2016-10-13
KR20160093621A (ko) 2016-08-08
TWI651652B (zh) 2019-02-21
JP2017502389A (ja) 2017-01-19
CN105765541B (zh) 2018-12-14
WO2015082109A1 (de) 2015-06-11
CN105765541A (zh) 2016-07-13
TW201533665A (zh) 2015-09-01

Similar Documents

Publication Publication Date Title
KR102269504B1 (ko) 자동차용 제어 장치
US8108056B2 (en) Industrial controller using shared memory multicore architecture
US8645959B2 (en) Method and apparatus for communication between two or more processing elements
US7590774B2 (en) Method and system for efficient context swapping
EP2642392B1 (en) Semiconductor integrated circuit device and system using the same
WO2012058252A1 (en) A method for process synchronization of embedded applications in multi-core systems
US10002102B2 (en) Low-pin microcontroller device with multiple independent microcontrollers
US20160267047A1 (en) Low-Pin Microcontroller Device With Multiple Independent Microcontrollers
JP2009175960A (ja) 仮想マルチプロセッサシステム
US20120036337A1 (en) Processor on an Electronic Microchip Comprising a Hardware Real-Time Monitor
US20070038817A1 (en) Memory access control in a multiprocessor system
US8677033B2 (en) Method for initializing registers of peripherals in a microcontroller
US20160085449A1 (en) Managing memory in a multiprocessor system
US9342359B2 (en) Information processing system and information processing method
KR19990062330A (ko) 멀티-프로세서 시스템의 인터럽트 제어장치
JP2014106657A (ja) 情報処理装置
JP2017004269A (ja) クロック供給回路およびその制御方法
JPH0467241A (ja) キヤツシユ方式

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant