[go: up one dir, main page]

DE102021123358B3 - Control device, control method and computer program for distributing computing function blocks to computing units in a vehicle - Google Patents

Control device, control method and computer program for distributing computing function blocks to computing units in a vehicle Download PDF

Info

Publication number
DE102021123358B3
DE102021123358B3 DE102021123358.5A DE102021123358A DE102021123358B3 DE 102021123358 B3 DE102021123358 B3 DE 102021123358B3 DE 102021123358 A DE102021123358 A DE 102021123358A DE 102021123358 B3 DE102021123358 B3 DE 102021123358B3
Authority
DE
Germany
Prior art keywords
computing
vehicle
arithmetic
units
unit
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
DE102021123358.5A
Other languages
German (de)
Inventor
Timo Lange
Stephan Max
Pernes Panta
Wolfgang Theimer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cariad SE
Original Assignee
Volkswagen AG
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=83447356&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE102021123358(B3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Volkswagen AG filed Critical Volkswagen AG
Priority to DE102021123358.5A priority Critical patent/DE102021123358B3/en
Application granted granted Critical
Publication of DE102021123358B3 publication Critical patent/DE102021123358B3/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Die vorliegende Offenbarung bezieht sich auf eine Steuervorrichtung, auf ein Steuerverfahren und auf ein entsprechendes Computerprogramm für eine Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken auf eine Mehrzahl von Recheneinheiten eines Fahrzeugs. Die Steuervorrichtung (10) umfasst zumindest eine Schnittstelle (12), ausgebildet zur Kommunikation mit der Mehrzahl von Recheneinheiten (30). Die Steuervorrichtung umfasst ferner ein oder mehrere Prozessoren (14). Die ein oder mehreren Prozessoren sind ausgebildet zum Ermitteln der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs. Die ein oder mehreren Prozessoren sind ausgebildet zum Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit (30) auszuführen ist. Die ein oder mehreren Prozessoren sind ausgebildet zum Transferieren der Ausführung eines Rechen-Funktionsblocks von einer ersten Recheneinheit der Mehrzahl von Recheneinheiten zu einer zweiten Recheneinheit der Mehrzahl von Recheneinheiten, sofern dies durch die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, angezeigt ist.

Figure DE102021123358B3_0000
The present disclosure relates to a control device, a control method and a corresponding computer program for distributing a plurality of computing function blocks to a plurality of computing units of a vehicle. The control device (10) comprises at least one interface (12) designed for communication with the plurality of computing units (30). The control device also includes one or more processors (14). The one or more processors are designed to determine the computing function blocks of the vehicle that are currently to be executed. The one or more processors are designed to select which arithmetic function block is to be executed on which arithmetic unit (30). The one or more processors are designed to transfer the execution of an arithmetic function block from a first arithmetic unit of the plurality of arithmetic units to a second arithmetic unit of the plurality of arithmetic units, if this is indicated by the selection of which arithmetic function block is to be executed on which arithmetic unit .
Figure DE102021123358B3_0000

Description

Die vorliegende Erfindung bezieht sich auf eine Steuervorrichtung, auf ein Steuerverfahren und auf ein entsprechendes Computerprogramm für eine Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken auf eine Mehrzahl von Recheneinheiten eines Fahrzeugs.The present invention relates to a control device, to a control method and to a corresponding computer program for distributing a plurality of computing function blocks to a plurality of computing units of a vehicle.

In modernen Fahrzeugen wird eine immer größer werdende Anzahl von Funktionen durch Software bereitgestellt. Diese Funktionen werden meist durch Dienste implementiert (engl. „Services“), die auf Recheneinheiten des Fahrzeugs ausgeführt werden. Der Rechenbedarf von Diensten, die auf einer Plattform wie einem Fahrzeug laufen, wächst in der Regel im Laufe der Zeit, beispielsweise aufgrund des zunehmenden Datenflusses von Sensoren und Aktuatoren. Außerdem nimmt die Zahl der Dienste zu. Es werden absehbar mehr Rechenressourcen benötigt als lokal vorhanden sind.In modern vehicles, an ever-increasing number of functions are provided by software. These functions are usually implemented by services that are executed on the vehicle's computing units. The computational demands of services running on a platform like a vehicle tend to grow over time, for example due to the increasing flow of data from sensors and actuators. In addition, the number of services is increasing. It is foreseeable that more computing resources will be required than are available locally.

Durch die Kommunikation zwischen Fahrzeugen und Backend-Servern ist es möglich, Rechenaufgaben von einem Fahrzeug auf einen Server zu verlagern und die benötigten Informationen an das Backend zu übertragen (z.B. Sensorinformationen vom Fahrzeug). Die Berechnungen können auch auf ein anderes Fahrzeug übertragen werden, die die gleichen Dienste implementiert (beispielsweise, wenn geparkte Autos zur Verfügung stehen, die nicht mit anderen Diensten belastet sind).The communication between vehicles and backend servers makes it possible to shift computing tasks from a vehicle to a server and to transfer the required information to the backend (e.g. sensor information from the vehicle). The calculations can also be transferred to another vehicle that implements the same services (e.g. when parked cars are available that are not burdened with other services).

In den derzeitigen Implementierungen unterscheiden sich die Fahrzeug- und die Backend-Implementierungen. Sie verwenden die gleichen Daten, aber es ist noch nicht möglich, eine Implementierung zu nehmen und sie unverändert auf dem Fahrzeug oder dem Server laufen zu lassen.In the current implementations, the vehicle and backend implementations differ. They use the same data, but it's not yet possible to take an implementation and run it unmodified on the vehicle or the server.

Die Verwendung anderer Fahrzeuge, in denen die Dienste ebenfalls implementiert sind, für die Auslagerung von Berechnungen und Diensten stellt keine universelle, stets verfügbare Lösung dar. Es kann sein, dass diese anderen Ressourcen nicht verfügbar sind, da nicht alle Fahrzeuge miteinander kompatibel sind.Using other vehicles, in which the services are also implemented, for the outsourcing of calculations and services does not represent a universal, always available solution. It may be that these other resources are not available because not all vehicles are compatible with each other.

Aus US 2018/0136931 A1 ist ein System bekannt, das auf sogenannten Microservice-Containern basiert. Dabei wird das Konzept von Software-Containern offenbart, die alle notwendigen Bestandteile umfassen, um den Container geräteunabhängig ausführen zu können, wie zum Beispiel den Programmcode, Software-Bibliotheken, eine Konfiguration, Dateien, eine Laufzeit-Umgebung, und andere Werkzeugte. Allerdings wird weder ein Einsatz dieser Container in Fahrzeugen noch ein Ansatz zum Abfangen von Lastspitzen diskutiert.Out of US 2018/0136931 A1 a system is known which is based on so-called microservice containers. The concept of software containers is disclosed, which include all necessary components to be able to run the container device-independently, such as the program code, software libraries, a configuration, files, a runtime environment, and other tools. However, neither the use of these containers in vehicles nor an approach to absorbing peak loads is discussed.

Aus US 2018/137306 ist ein System zum Aktualisieren von Containern bekannt. Auch hier ist die Nutzung von Containern offenbart. Allerdings wird weder ein Einsatz dieser Container über mehrere Rechengeräte in Fahrzeugen hinweg noch ein Ansatz zum Abfangen von Lastspitzen innerhalb eines Fahrzeugs diskutiert. Auch in US 2021/0044647 wird die Nutzung von portablen Containern diskutiert, auch hier wird weder ein Einsatz dieser Container über mehrere Rechengeräte in Fahrzeugen hinweg noch ein Ansatz zum Abfangen von Lastspitzen innerhalb eines Fahrzeugs diskutiert.Out of U.S. 2018/137306 a system for updating containers is known. The use of containers is also disclosed here. However, neither the use of these containers across multiple computing devices in vehicles nor an approach to absorbing peak loads within a vehicle is discussed. Also in U.S. 2021/0044647 the use of portable containers is discussed, but here too neither the use of these containers across several computing devices in vehicles nor an approach to absorbing peak loads within a vehicle is discussed.

Die US 2019/0 042 321 A1 beschreibt ein Elastic Container Management System (ECMS), das den Lebenszyklus von Containern verwaltet, indem Container erstellt, gelöscht, gestartet und gestoppt werden. Das ECMS überwacht die Container und passt die Ressourcenzuweisung der Container je nach Ressourcenauslastung an oder ab. Das ECMS führt auch eine Garbage Collection durch, bei der die Container vom Host entfernt und ihre Images und Konfigurationen in einem Repository gespeichert werden, das abgerufen werden kann. Das ECMS führt auch die Migration von Containern zwischen Hosts in einem Netzwerk durch, wenn der Host, auf dem der Container läuft, keine Ressourcen mehr hat.the US 2019/0 042 321 A1 describes an Elastic Container Management System (ECMS) that manages the lifecycle of containers by creating, deleting, starting, and stopping containers. The ECMS monitors the containers and adjusts or adjusts the resource allocation of the containers depending on resource utilization. The ECMS also performs garbage collection, removing the containers from the host and storing their images and configurations in a repository that can be retrieved. The ECMS also performs the migration of containers between hosts on a network when the host running the container runs out of resources.

Die US 2021 / 0 117 242 A1 betrifft eine Infrastrukturverarbeitungseinheit, die Folgendes umfasst: Schnittstellenschaltungen, um eine kommunikative Kopplung mit einer Plattform bereitzustellen; Netzwerkschnittstellenschaltungen, um eine kommunikative Kopplung mit einem Netzwerkmedium bereitzustellen; und Schaltungen, um Infrastrukturdienste freizulegen, auf die von Mikrodiensten zur Funktionskomposition zugegriffen werden kann.the U.S. 2021/0 117 242 A1 relates to an infrastructure processing unit comprising: interface circuitry to provide communicative coupling with a platform; network interface circuitry to provide communicative coupling with a network medium; and circuits to expose infrastructure services that can be accessed by microservices for function composition.

Die DE 11 2020 000 558 T5 beschreibt ein Verfahren für dynamisches Ändern einer Isolierung einer containerisierten Arbeitslast, eine Vorrichtung und ein Computerprogrammprodukt in Reaktion auf eine Erfassung eines auslösenden Faktors. In einigen Ausführungsformen wird Arbeitslast unter Verwendung einer standardmäßigen Container-Laufzeit containerisiert, die einen oder mehrere Container auf cgroup-Grundlage auf einem Datenverarbeitungsknoten erzeugt, indem ressourcenbegrenzende Fähigkeiten des Host-Kernels des Datenverarbeitungsknotens verwendet werden, der cgroups und namespaces umfasst. In einigen Ausführungsformen wird in Reaktion auf einen auslösenden Faktor, wie beispielsweise eine Host-Kernel-Schwachstelle, mindestens ein Teil der containerisierten Arbeitslast aus einer Ausführung in dem einen oder den mehreren Containern auf cgroup-Grundlage zu einer oder mehreren virtuellen Maschinen migriert, die durch eine Standby-Container-Laufzeit gestartet wurden. In einigen Ausführungsformen werden die cgroups und namespaces des einen oder der mehreren Container auf cgroup-Grundlage ohne Betriebsunterbrechung zu einer oder mehreren VM-Laufzeiten auf die eine oder die mehreren VMs unter Verwendung von CRIU - Checkpoint/Restore in Userspace - live migriert.the DE 11 2020 000 558 T5 describes a method for dynamically changing isolation of a containerized workload, an apparatus and a computer program product in response to detection of a triggering factor. In some embodiments, workload is containerized using a standard container runtime that creates one or more cgroup-based containers on a compute node by using resource-limiting capabilities of the compute node's host kernel, which includes cgroups and namespaces. In some embodiments, in response to a triggering factor, such as a host kernel vulnerability, at least a portion of the containerized workload is migrated from execution in the one or more containers on a cgroup basis to one or more virtual machines run by a standby container runtime has been started. In some embodiments, the cgroups and namespaces of the one or more containers are live migrated to the one or more VMs on a cgroup basis non-disruptively to one or more VM runtimes using CRIU - Checkpoint/Restore in Userspace.

Jedoch stellt keine dieser Schriften ein Konzept bereit, um dem steigenden und variierenden Rechenbedarf in modernen Fahrzeugen gerecht zu werden.However, none of these references provide a concept to meet the increasing and varying computational needs in modern vehicles.

Es besteht der Bedarf, ein verbessertes Konzept zum Bereitstellen von Software-basierten Funktionalitäten in Fahrzeugen bereitzustellen.There is a need to provide an improved concept for providing software-based functionalities in vehicles.

Diesem Bedarf wird durch den Gegenstand der unabhängigen Ansprüche entsprochen.This need is met by the subject matter of the independent claims.

Die vorliegende Erfindung basiert auf der Erkenntnis, dass der häufig verwendete Ansatz, spezifisch auf bestimmte Fahrzeuge zugeschnittene Softwareanwendungen auf spezifisch dafür ausgelegten Rechengeräten des Fahrzeugs auszuführen, ungeeignet dafür scheint, auf zusätzlichen Rechenbedarf innerhalb des Fahrzeugs zu reagieren. So bleibt meist nur der Ansatz, eine entsprechende Über-Provisionierung vorzusehen, so dass auch alle Funktionalitäten, die im Fahrzeug vorhanden sind, gleichzeitig nutzbar sind, oder aber bestimmte Kombinationen aus Funktionalitäten schließen sich gegenseitig aus. Diese Einschränkung lässt sich dadurch überwinden, dass die einzelnen Software-basierten Funktionalitäten in einem standardisierten, portablen Format als Rechen-Funktionsblöcke bereitgestellt werden, die auf unterschiedlichen Rechengeräten des Fahrzeugs (oder sogar außerhalb des Fahrzeugs) ausgeführt werden können. Die vorliegende Erfindung strebt daher eine Abstraktion von Laufzeitumgebungen an. Der Aufwand für die Entwicklung und Pflege von Diensten ist beträchtlich, daher ist es Vorteilhaft, die Zahl der Implementierungsvarianten so weit wie möglich zu reduzieren und idealerweise nur eine Implementierung, in Form eines Rechen-Funktionsblocks, zu pflegen. In verschiedenen Beispielen der vorliegenden Offenbarung werden die Dienste in einer standardisierten Laufzeitumgebung ausgeführt, unabhängig von der Hardware- und Softwarebasis des Geräts, auf dem sie ausgeführt werden. The present invention is based on the finding that the frequently used approach of executing software applications tailored specifically to certain vehicles on the vehicle's specifically designed computing devices seems unsuitable for reacting to additional computing requirements within the vehicle. The only remaining approach is to provide for appropriate over-provisioning so that all functionalities that are available in the vehicle can be used at the same time, or certain combinations of functionalities exclude each other. This limitation can be overcome by providing the individual software-based functionalities in a standardized, portable format as computing function blocks that can be executed on different computing devices in the vehicle (or even outside the vehicle). The present invention therefore strives for an abstraction of runtime environments. The effort for the development and maintenance of services is considerable, so it is advantageous to reduce the number of implementation variants as much as possible and ideally to maintain only one implementation, in the form of a calculation function block. In various examples of the present disclosure, the services execute in a standardized runtime environment, regardless of the hardware and software basis of the device on which they execute.

Ein Steuergerät wird verwendet, um eine Lastverteilung durchzuführen, d.h. um die Rechen-Funktionsblöcken den vorhandenen Rechengeräten zuzuteilen.A controller is used to perform load sharing, i.e. to allocate the computing function blocks to the existing computing devices.

Ein Aspekt der vorliegenden Offenbarung bezieht sich auf eine Steuervorrichtung für eine Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken auf eine Mehrzahl von Recheneinheiten eines Fahrzeugs. Die Steuervorrichtung umfasst zumindest eine Schnittstelle, ausgebildet zur Kommunikation mit der Mehrzahl von Recheneinheiten. Die Steuervorrichtung umfasst ferner ein oder mehrere Prozessoren. Die ein oder mehreren Prozessoren sind ausgebildet zum Ermitteln der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs. Die ein oder mehreren Prozessoren sind ausgebildet zum Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist. Die ein oder mehreren Prozessoren sind ausgebildet zum Transferieren der Ausführung eines Rechen-Funktionsblocks von einer ersten Recheneinheit der Mehrzahl von Recheneinheiten zu einer zweiten Recheneinheit der Mehrzahl von Recheneinheiten, sofern dies durch die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, angezeigt ist. Durch die Steuervorrichtung können die Rechen-Funktionsblöcke folglich zwischen den Recheneinheiten des Fahrzeugs transferiert werden, was eine höhere Effizienz der Nutzung der Recheneinheiten ermöglicht. Dies wird dadurch ermöglich, dass die Rechen-Funktionsblöcke so ausgebildet sind, dass sie auf den verschiedenen Recheneinheiten ausführbar sind.One aspect of the present disclosure relates to a control device for a distribution of a plurality of computing function blocks to a plurality of computing units of a vehicle. The control device includes at least one interface designed for communication with the plurality of computing units. The controller also includes one or more processors. The one or more processors are designed to determine the computing function blocks of the vehicle that are currently to be executed. The one or more processors are configured to select which computing function block is to be executed on which computing unit. The one or more processors are designed to transfer the execution of an arithmetic function block from a first arithmetic unit of the plurality of arithmetic units to a second arithmetic unit of the plurality of arithmetic units, if this is indicated by the selection of which arithmetic function block is to be executed on which arithmetic unit . The arithmetic function blocks can consequently be transferred between the arithmetic units of the vehicle by the control device, which enables a higher efficiency of the use of the arithmetic units. This is made possible by designing the arithmetic function blocks in such a way that they can be executed on the various arithmetic units.

Ferner hängen die Rechen-Funktionsblöcke davon ab, welche Fahrzeugfunktionen zu diesem Zeitpunkt aktiv sind, und wobei zusätzlich jeweilige auszuführende Rechen-Funktionsblöcke von anderen Fahrzeugen oder von anderen Recheneinheiten außerhalb des Fahrzeugs stammen, wobei diese Rechen-Funktionsblöcke zusätzlich zu den Rechen-Funktionsblöcken, die Fahrzeugfunktionen, die derzeit aktiv sind, bereitstellen, berücksichtigt werden.Furthermore, the arithmetic function blocks depend on which vehicle functions are active at that time, and in addition, respective arithmetic function blocks to be executed come from other vehicles or from other arithmetic units outside the vehicle, these arithmetic function blocks in addition to the arithmetic function blocks that Provide vehicle functions that are currently active are taken into account.

Beispielsweise kann jeder Rechen-Funktionsblock ausgebildet sein, um als Container innerhalb einer Laufzeitumgebung ausgeführt zu werden. Durch die Ausgestaltung als Container ist es möglich, die Laufzeitumgebung der Recheneinheit zu nutzen, anstatt die Laufzeitumgebung in den Rechen-Funktionsblock zu integrieren. Dies reduziert den Overhead (die Gemeinkosten), wenn mehrere Container in einer Laufzeitumgebung der jeweiligen Recheneinheit ausgeführt werden.For example, each computing function block can be designed to be executed as a container within a runtime environment. The design as a container makes it possible to use the runtime environment of the computing unit instead of integrating the runtime environment into the computing function block. This reduces overhead when running multiple containers in a runtime environment of each compute unit.

Das Transferieren der Ausführung eines Rechen-Funktionsblocks kann beispielsweise das Transferieren der Ausführung des Containers von einer Laufzeitumgebung der ersten Recheneinheit zu einer Laufzeitumgebung der zweiten Recheneinheit umfassen. Somit können die Container mit einem reduzierten Aufwand transferiert werden, etwa in Fällen ohne Kommunikation zwischen den Containern.The transfer of the execution of a computing function block can include, for example, the transfer of the execution of the container from a runtime environment of the first processing unit to a runtime environment of the second processing unit. The containers can thus be transferred with less effort, for example in cases where there is no communication between the containers.

Alternativ kann das Transferieren der Ausführung eines Rechen-Funktionsblocks das Transferieren der Laufzeitumgebung mit dem Container von der ersten Recheneinheit zu der zweiten Recheneinheit umfassen. Hier kann die zu transferierende Laufzeitumgebung mehrere auszuführende Container umfassen. Dies verringert den Overhead bei dem Transfer mehrerer Rechen-Funktionsblöcke, außerdem können so Funktionalitäten, die allen Containern in der Laufzeitumgebung zur Verfügung stellen sollen, einmalig durch die Laufzeitumgebung zur Verfügung gestellt werden. Auch ein sogenanntes Software-definiertes Netzwerk zwischen den Containern in der Laufzeitumgebung kann so verwendet und auf die zweite Recheneinheit übertragen werden.Alternatively, transferring the execution of a computational function block may use the transfer ration of the runtime environment with the container from the first processing unit to the second processing unit. Here, the runtime environment to be transferred can include several containers to be executed. This reduces the overhead when transferring multiple arithmetic function blocks, and functionalities that are to be made available to all containers in the runtime environment can be made available once by the runtime environment. A so-called software-defined network between the containers in the runtime environment can also be used in this way and transferred to the second processing unit.

Das Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, kann beispielsweise eine Lastverteilung anstreben. In anderen Worten kann die Auswahl so durchgeführt werden, dass die resultierende Rechenlast angemessen auf die vorhandenen Recheneinheiten verteilt wird, etwa so dass in keiner Recheneinheit eine Überlastung auftritt und alle Rechen-Funktionsblöcke ausreichende Rechen- und andere Ressourcen (Speicher, Eingabe/Ausgabe etc.) zur Verfügung haben (soweit möglich).Selecting which computing function block is to be executed on which computing unit can aim at load balancing, for example. In other words, the selection can be made in such a way that the resulting computing load is distributed appropriately across the available computing units, for example so that no computing unit is overloaded and all computing function blocks have sufficient computing and other resources (memory, input/output, etc. ) available (as far as possible).

In manchen Fällen kann das Transferieren der Ausführung des Rechen-Funktionsblocks ein Transferieren von Laufzeitdaten des Rechen-Funktionsblocks umfassen. Somit kann ein Zustand des Rechen-Funktionsblocks über den Transfer hinweg erhalten bleiben.In some cases, transferring execution of the computational function block may include transferring run-time data of the computational function block. A state of the arithmetic function block can thus be retained over the transfer.

Die Mehrzahl von Recheneinheiten kann, in manchen Beispielen, ferner ein oder mehrere Recheneinheiten umfassen, die außerhalb des Fahrzeugs angeordnet sind. Durch das Konzept der portablen Rechen-Funktionsblöcke, gepaart mit der Steuervorrichtung zur Zuweisung der Rechen-Funktionsblöcke, können so zusätzliche Ressourcen der externen Recheneinheiten genutzt werden.The plurality of computing devices may, in some examples, further include one or more computing devices located outside of the vehicle. As a result of the concept of the portable arithmetic function blocks coupled with the control device for assigning the arithmetic function blocks, additional resources of the external arithmetic units can be used.

Ein Aspekt der vorliegenden Offenbarung bezieht sich auf ein System für ein Fahrzeug. Das System umfasst die zuvor vorgestellte Steuervorrichtung und die Mehrzahl von Recheneinheiten des Fahrzeugs. Durch die Steuervorrichtung können die Rechen-Funktionsblöcke zwischen den Recheneinheiten des Fahrzeugs transferiert werden, was eine höhere Effizienz der Nutzung der Recheneinheiten ermöglicht.One aspect of the present disclosure relates to a system for a vehicle. The system includes the previously presented control device and the plurality of computing units of the vehicle. The arithmetic function blocks can be transferred between the arithmetic units of the vehicle by the control device, which enables a higher efficiency of the use of the arithmetic units.

Dabei kann jeder Rechen-Funktionsblock ausgebildet sein, um als Container innerhalb einer Laufzeitumgebung ausgeführt zu werden. Auch kann jede Recheneinheit ausgebildet sein, um eine Laufzeitumgebung für die Ausführung von Containern bereitzustellen. Durch die Ausgestaltung als Container ist es möglich, die Laufzeitumgebung der Recheneinheit zu nutzen, anstatt die Laufzeitumgebung in den Rechen-Funktionsblock zu integrieren. Dies reduziert den Overhead (die Gemeinkosten), wenn mehrere Container in einer Laufzeitumgebung der jeweiligen Recheneinheit ausgeführt werden.Each arithmetic function block can be designed to be executed as a container within a runtime environment. Each computing unit can also be designed to provide a runtime environment for executing containers. The design as a container makes it possible to use the runtime environment of the computing unit instead of integrating the runtime environment into the computing function block. This reduces overhead when running multiple containers in a runtime environment of each compute unit.

Damit die Container portabel sind, können die Recheneinheiten den Laufzeitumgebungen standardisierte Schnittstellen anbieten, um mit weiteren Komponenten des Fahrzeugs zu kommunizieren, und diese so von allen Recheneinheiten aus nutzbar zu machen. Beispielsweise kann jede Recheneinheit ausgebildet sein, der Laufzeitumgebung zumindest eine erste Schnittstelle zur Kommunikation mit Sensorik und Aktuatorik bereitzustellen. Dies kann die Analyse von Sensordaten und/oder die Ansteuerung der Aktuatorik durch die Rechen-Funktionsblöcke ermöglichen.In order for the containers to be portable, the computing units can offer the runtime environments standardized interfaces to communicate with other components of the vehicle and thus make them usable from all computing units. For example, each processing unit can be designed to provide the runtime environment with at least one first interface for communication with sensors and actuators. This can enable the analysis of sensor data and/or the actuation of the actuators by the computing function blocks.

Beispielsweise kann jede Recheneinheit ausgebildet sein, der Laufzeitumgebung ferner eine zweite Schnittstelle zur Kommunikation über ein Kommunikationsnetzwerk und/oder eine dritte Schnittstelle zum Zugriff auf Ressourcen der Recheneinheit bereitzustellen. Die zweite Schnittstelle kann beispielsweise genutzt werden, um mit Rechen-Funktionsblöcken zu kommunizieren, die auf anderen Recheneinheiten innerhalb und/oder außerhalb des Fahrzeugs ausgeführt werden, oder um auf ein mobiles Kommunikationssystem zuzugreifen. Die dritte Schnittstelle kann genutzt werden, um auf spezifische Ressourcen der Recheneinheit zuzugreifen, wie etwa auf Beschleunigerkarten oder auf Speicher.For example, each computing unit can be designed to also provide the runtime environment with a second interface for communication via a communication network and/or a third interface for accessing resources of the computing unit. The second interface can be used, for example, to communicate with computing function blocks that are running on other computing units inside and/or outside the vehicle, or to access a mobile communication system. The third interface can be used to access specific resources of the processing unit, such as accelerator cards or memory.

Beispielsweise kann eine erste Recheneinheit ausgebildet sein, um die Kommunikation mit Sensorik und Aktuatorik, die über die erste Schnittstelle der ersten Recheneinheit bereitgestellt wird, einer zweiten Recheneinheit über die zweite Schnittstelle bereitzustellen, so dass die Laufzeitumgebung der zweiten Recheneinheit Zugriff auf die Sensorik und Aktuatorik, die über die erste Schnittstelle der ersten Recheneinheit bereitgestellt wird, erhält. Somit können Rechen-Funktionsblöcke auch auf Recheneinheiten transferiert werden, die keinen direkten Zugriff auf die Sensorik und Aktuatorik der ursprünglichen (ersten) Recheneinheit haben. Dies ist insbesondere bei Recheneinheiten, die außerhalb des Fahrzeugs angeordnet sind, der Fall.For example, a first arithmetic unit can be designed to provide the communication with sensors and actuators, which is provided via the first interface of the first arithmetic unit, to a second arithmetic unit via the second interface, so that the runtime environment of the second arithmetic unit can access the sensors and actuators, which is provided via the first interface of the first computing unit receives. In this way, arithmetic function blocks can also be transferred to arithmetic units that do not have direct access to the sensors and actuators of the original (first) arithmetic unit. This is the case in particular with computing units that are arranged outside the vehicle.

Dabei können die erste Schnittstelle, die zweite Schnittstelle und/oder die dritte Schnittstelle eine Abstraktion der physikalischen Schnittstellen der jeweiligen Recheneinheit bereitstellen, so dass die erste Schnittstelle, die zweite Schnittstelle und/oder die dritte Schnittstelle für die Laufzeitumgebung auf jeder Recheneinheit einheitlich ansprechbar sind. Somit können die Rechen-Funktionseinheiten, und auch die jeweiligen Laufzeitumgebungen, unabhängig von der Recheneinheit, die jeweiligen Schnittstellen nutzen.The first interface, the second interface and/or the third interface can provide an abstraction of the physical interfaces of the respective computing unit, so that the first interface, the second interface and/or the third interface can be addressed uniformly for the runtime environment on each computing unit. Thus, the computing functional units, and the respective runtime environments, independently depends on the computing unit that uses the respective interfaces.

In einem Beispiel ist jeder Rechen-Funktionsblock ausgebildet, um als Container innerhalb einer Laufzeitumgebung ausgeführt zu werden. Das Transferieren der Ausführung eines Rechen-Funktionsblocks kann das Transferieren der Laufzeitumgebung mit dem Container von der ersten Recheneinheit zu der zweiten Recheneinheit umfassen, wobei die zweite Recheneinheit zumindest 10% mehr oder weniger Rechenkapazität bereitstellt als die erste Recheneinheit. In anderen Worten können ganze Laufzeitumgebungen entsprechend dem Ressourcenbedarf der Container in der Laufzeitumgebung verschoben werden.In one example, each computational function block is configured to execute as a container within a runtime environment. Transferring the execution of a computing function block may include transferring the runtime environment with the container from the first computing unit to the second computing unit, with the second computing unit providing at least 10% more or less computing capacity than the first computing unit. In other words, entire runtime environments can be moved according to the resource requirements of the containers in the runtime environment.

Ein Aspekt der vorliegenden Offenbarung richtet sich auf ein Fahrzeug, umfassend das zuvor vorgestellte System. Durch die Steuervorrichtung des Systems können die Rechen-Funktionsblöcke des Fahrzeugs zwischen den Recheneinheiten des Fahrzeugs transferiert werden, was eine höhere Effizienz der Nutzung der Recheneinheiten des Fahrzeugs ermöglicht.One aspect of the present disclosure is directed to a vehicle including the system presented above. Through the controller of the system, the vehicle's computing function blocks can be transferred between the vehicle's computing units, enabling higher efficiency of utilization of the vehicle's computing units.

Ein Aspekt der vorliegenden Offenbarung richtet sich auf ein entsprechendes Steuerverfahren für die Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken auf eine Mehrzahl von Recheneinheiten eines Fahrzeugs. Das Verfahren umfasst ein Ermitteln der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs. Das Verfahren umfasst ferner ein Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist. Das Verfahren umfasst ferner ein Transferieren der Ausführung eines Rechen-Funktionsblocks von einer ersten Recheneinheit der Mehrzahl von Recheneinheiten zu einer zweiten Recheneinheit der Mehrzahl von Recheneinheiten, sofern dies durch die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, angezeigt ist.An aspect of the present disclosure is directed to a corresponding control method for the distribution of a plurality of computing function blocks to a plurality of computing units of a vehicle. The method includes determining the computing function blocks of the vehicle that are currently to be executed. The method further includes selecting which computing function block is to be executed on which computing unit. The method further includes transferring the execution of a computing function block from a first computing unit of the plurality of computing units to a second computing unit of the plurality of computing units if this is indicated by the selection of which computing function block is to be executed on which computing unit.

Ein Aspekt der vorliegenden Offenbarung richtet sich auf ein Programm mit einem Programmcode zum Durchführen des Verfahrens, wenn der Programmcode auf einem Computer, einem Prozessor, einem Kontrollmodul oder einer programmierbaren Hardwarekomponente ausgeführt wird.One aspect of the present disclosure is directed to a program having program code for performing the method when the program code is executed on a computer, a processor, a control module or a programmable hardware component.

Einige Beispiele von Vorrichtungen und/oder Verfahren werden nachfolgend bezugnehmend auf die beiliegenden Figuren lediglich beispielhaft näher erläutert. Es zeigen:

  • 1a zeigt ein Blockdiagramm eines Beispiels einer Steuervorrichtung für eine Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken auf eine Mehrzahl von Recheneinheiten eines Fahrzeugs;
  • 1b zeigt ein schematisches Diagramm eines Beispiels eines Fahrzeugs mit einer Steuervorrichtung für eine Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken auf eine Mehrzahl von Recheneinheiten eines Fahrzeugs und der Mehrzahl von Recheneinheiten;
  • 1c zeigt ein Flussdiagramm eines Beispiels eines Steuerverfahrens für eine Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken auf eine Mehrzahl von Recheneinheiten eines Fahrzeugs;
  • 1d und 1e zeigen Beispiele eines Transfers einer Ausführung eines Rechen-Funktionsblocks;
  • 2 zeigt ein schematisches Diagrammes eines Beispiels einer Recheneinheit mit einer Laufzeitumgebung und Rechen-Funktionsblöcken;
  • 3 zeigt ein schematisches Diagramm eines Systems mit mehreren Recheneinheiten; und
  • 4a und 4b zeigen Beispiele eines Transfers einer Ausführung eines Rechen-Funktionsblocks zwischen Fahrzeugen und externen Recheneinheiten.
Some examples of devices and/or methods are explained in more detail below with reference to the accompanying figures, merely by way of example. Show it:
  • 1a 12 shows a block diagram of an example of a control device for a distribution of a plurality of calculation function blocks to a plurality of calculation units of a vehicle;
  • 1b shows a schematic diagram of an example of a vehicle with a control device for a distribution of a plurality of calculation function blocks to a plurality of calculation units of a vehicle and the plurality of calculation units;
  • 1c shows a flow chart of an example of a control method for a distribution of a plurality of computing function blocks to a plurality of computing units of a vehicle;
  • 1d and 1e Figure 12 shows examples of transfer of execution of a computational function block;
  • 2 Figure 12 shows a schematic diagram of an example of a computing unit with a runtime environment and computing function blocks;
  • 3 Figure 12 shows a schematic diagram of a system with multiple computing units; and
  • 4a and 4b show examples of a transfer of an execution of a computing function block between vehicles and external computing units.

Einige Beispiele werden nun ausführlicher Bezug nehmend auf die beiliegenden Figuren beschrieben. Weitere mögliche Beispiele sind jedoch nicht auf die Merkmale dieser detailliert beschriebenen Ausführungsformen beschränkt. Diese können Modifikationen der Merkmale sowie Entsprechungen und Alternativen zu den Merkmalen aufweisen. Ferner soll die Terminologie, die hierin zum Beschreiben bestimmter Beispiele verwendet wird, nicht einschränkend für weitere mögliche Beispiele sein.Some examples will now be described in more detail with reference to the accompanying figures. However, other possible examples are not limited to the features of these detailed described embodiments. These may include modifications of the features, as well as equivalents and alternatives to the features. Furthermore, the terminology used herein to describe particular examples is not intended to be limiting of other possible examples.

Gleiche oder ähnliche Bezugszeichen beziehen sich in der gesamten Beschreibung der Figuren auf gleiche oder ähnliche Elemente beziehungsweise Merkmale, die jeweils identisch oder auch in abgewandelter Form implementiert sein können, während sie die gleiche oder eine ähnliche Funktion bereitstellen. In den Figuren können ferner die Stärken von Linien, Schichten und/oder Bereichen zur Verdeutlichung übertrieben sein.Throughout the description of the figures, the same or similar reference symbols refer to the same or similar elements or features, which can each be implemented identically or in a modified form, while providing the same or a similar function. Also, in the figures, the thicknesses of lines, layers, and/or areas may be exaggerated for clarity.

Wenn zwei Elemente A und B unter Verwendung eines „oder“ kombiniert werden, ist dies so zu verstehen, dass alle möglichen Kombinationen offenbart sind, d. h. nur A, nur B sowie A und B, sofern nicht im Einzelfall ausdrücklich anders definiert. Als alternative Formulierung für die gleichen Kombinationen kann „zumindest eines von A und B“ oder „A und/oder B“ verwendet werden. Das gilt Äquivalent für Kombinationen von mehr als zwei Elementen.When two elements A and B are combined using an "or", it is to be understood that all possible combinations are disclosed, i. H. only A, only B and A and B, unless expressly defined otherwise in individual cases. "At least one of A and B" or "A and/or B" can be used as alternative wording for the same combinations. The equivalent applies to combinations of more than two elements.

Wenn eine Singularform, z. B. „ein, eine“ und „der, die, das“ verwendet wird und die Verwendung nur eines einzelnen Elements weder explizit noch implizit als verpflichtend definiert ist, können weitere Beispiele auch mehrere Elemente verwenden, um die gleiche Funktion zu implementieren. Wenn eine Funktion im Folgenden als unter Verwendung mehrerer Elemente implementiert beschrieben ist, können weitere Beispiele die gleiche Funktion unter Verwendung eines einzelnen Elements oder einer einzelnen Verarbeitungsentität implementieren. Es versteht sich weiterhin, dass die Begriffe „umfasst“, „umfassend“, „aufweist“ und/oder „aufweisend“ bei deren Gebrauch das Vorhandensein der angegebenen Merkmale, Ganzzahlen, Schritte, Operationen, Prozesse, Elemente, Komponenten und/oder einer Gruppe derselben beschreiben, dabei aber nicht das Vorhandensein oder das Hinzufügen eines oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Prozesse, Elemente, Komponenten und/einer Gruppe derselben ausschließen.If a singular form, e.g. For example, where "a, an" and "the" are used and the use of a single element is not explicitly or implicitly required, other examples may use multiple elements to implement the same function. Where a function is described below as being implemented using multiple elements, other examples may implement the same function using a single element or processing entity. It is further understood that the terms "comprises,""comprising,""comprises," and/or "having," when used, imply the presence of the specified feature, integer, step, operation, process, element, component, and/or group describe the same, but does not exclude the presence or addition of any other feature, integer, step, operation, process, element, component and/or group thereof.

Die vorliegende Offenbarung beschäftigt sich mit der Portabilität von Rechen-Funktionsblöcken. Ein Bereich, in dem eine solche Portabilität gegeben ist, herrscht auf Desktop-Plattformen wie Windows oder mobilen Plattformen wie iOS oder Android, auf denen eine Anwendung oder ein Dienst auf allen Geräten ausgeführt werden kann, die mit der Plattform auf der Grundlage von Standard-APIs und SDKs kompatibel sind. Diese Art der Portabilität ist jedoch nicht auf das vorliegende Szenario anwendbar, denn es erlaubt nicht die Skalierung der Rechenressourcen durch die Verwendung mehrerer Geräte.The present disclosure addresses the portability of computational function blocks. One area where such portability exists is on desktop platforms such as Windows or mobile platforms such as iOS or Android, where an application or service can run on any device compatible with the platform based on standard APIs and SDKs are compatible. However, this type of portability is not applicable to the present scenario because it does not allow scaling of computing resources by using multiple devices.

Stattdessen wir eine Technik genutzt, in der Dienste, die Software-Funktionalitäten des Fahrzeugs bereitstellen, in sogenannte Rechen-Funktionsblöcke verpackt werden. Diese Rechen-Funktionsblöcke können wiederum durch sogenannte Software-Container implementiert werden oder diesen entsprechen. Ein oder mehrere Dienste können mit all ihren Abhängigkeiten in einem Software-Container gekapselt werden. Diese Container sind insbesondere zur Nutzung auf Servern und Entwicklergeräten bekannt. Beispielsweise können solche Container von verschiedenen Container-Engines (Docker, Podman, Crio, ...) bereitgestellt werden. Die vorliegende Offenbarung geht über die bereits bekannten Container hinaus, indem das Container-Konzept portabel gemacht wird, so dass die Container, und damit die Rechen-Funktionsblöcken, dynamisch zwischen den Recheneinheiten des Fahrzeugs transferiert werden können. Die vorliegende Offenbarung schafft Mittel, um portable Container zu erstellen, die dynamisch auf verschiedenen Plattformen ausgeführt werden können, oder aber um eine komplette Laufzeit (bestehend aus der Container-Engine und den Dienst-Containern) im laufenden Betrieb auf andere Plattformen übertragen.Instead, a technology is used in which services that provide the vehicle's software functionalities are packaged in so-called computing function blocks. These arithmetic function blocks can in turn be implemented by so-called software containers or correspond to them. One or more services can be encapsulated with all their dependencies in a software container. These containers are known in particular for use on servers and developer devices. For example, such containers can be provided by different container engines (Docker, Podman, Crio, ...). The present disclosure goes beyond the already known containers by making the container concept portable, so that the containers, and thus the computing function blocks, can be dynamically transferred between the computing units of the vehicle. The present disclosure provides means to create portable containers that can run dynamically on different platforms, or to port a complete runtime (consisting of the container engine and the service containers) to other platforms on the fly.

1a zeigt ein Blockdiagramm eines Beispiels einer Steuervorrichtung 10 für eine Verteilung (Zuordnung) von einer Mehrzahl von Rechen-Funktionsblöcken 20 auf eine Mehrzahl von Recheneinheiten 30 eines Fahrzeugs. Die Vorrichtung 10 umfasst zumindest eine Schnittstelle 12, ausgebildet zur Kommunikation mit der Mehrzahl von Recheneinheiten. Die Vorrichtung 10 umfasst ferner ein oder mehrere Prozessoren 14, die mit der zumindest einen Schnittstelle 12 gekoppelt sind. Optional umfasst die Steuervorrichtung 10 ferner ein oder mehrere Speichergeräte 16, die ebenfalls mit den ein oder mehreren Prozessoren gekoppelt sind. Dabei sind die ein oder mehreren Prozessoren grundsätzlich dazu ausgebildet, die Funktionalität der Steuervorrichtung bereitzustellen, mit Hilfe der zumindest einen Schnittstelle (zur Kommunikation und zum Austausch von Daten) und/oder mit Hilfe der ein oder mehreren Speichergeräte (zum Speichern und Abrufen von Daten. Die ein oder mehreren Prozessoren sind ausgebildet zum Ermitteln der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs. Die ein oder mehreren Prozessoren sind ausgebildet zum Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist. Die ein oder mehreren Prozessoren sind ausgebildet zum Transferieren der Ausführung eines Rechen-Funktionsblocks von einer ersten Recheneinheit 30a der Mehrzahl von Recheneinheiten zu einer zweiten Recheneinheit 30b der Mehrzahl von Recheneinheiten, sofern dies durch die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, angezeigt ist. Dabei können die Steuervorrichtung 10 zusammen mit den Recheneinheiten 30 als System betrachtet werden. 1a 12 shows a block diagram of an example of a control device 10 for distribution (allocation) of a plurality of arithmetic function blocks 20 to a plurality of arithmetic units 30 of a vehicle. The device 10 includes at least one interface 12, designed for communication with the plurality of computing units. The device 10 further includes one or more processors 14 coupled to the at least one interface 12 . Optionally, the controller 10 further includes one or more memory devices 16 that are also coupled to the one or more processors. The one or more processors are basically designed to provide the functionality of the control device with the help of the at least one interface (for communication and for exchanging data) and/or with the help of the one or more storage devices (for storing and retrieving data. The one or more processors are designed to determine the computing function blocks of the vehicle that are currently to be executed. The one or more processors are designed to select which computing function block is to be executed on which computing unit. The one or more processors are designed to transfer the execution of a Arithmetic function blocks from a first arithmetic unit 30a of the plurality of arithmetic units to a second arithmetic unit 30b of the plurality of arithmetic units, provided this is indicated by the selection of which arithmetic function block is to be executed on which arithmetic unit amen with the computing units 30 are considered as a system.

Die Steuervorrichtung 10 kann, zusammen mit den Recheneinheiten 30, in ein Fahrzeug integriert werden. 1b zeigt ein schematisches Diagramm eines Beispiels eines Fahrzeugs 100 mit der Steuervorrichtung 10 und der Mehrzahl von Recheneinheiten 30. Alternativ kann die Steuervorrichtung extern zu dem Fahrzeug angeordnet sein, beispielsweise in einem Backend-Server.The control device 10 can be integrated into a vehicle together with the computing units 30 . 1b 10 shows a schematic diagram of an example of a vehicle 100 with the control device 10 and the plurality of computing units 30. Alternatively, the control device can be arranged externally to the vehicle, for example in a backend server.

1c zeigt ein Flussdiagramm eines Beispiels eines entsprechenden Steuerverfahrens für eine Verteilung (Zuordnung) der Mehrzahl von Rechen-Funktionsblöcken auf die Mehrzahl von Recheneinheiten des Fahrzeugs. Das Verfahren umfasst ein Ermitteln 110 der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs. Das Verfahren umfasst ferner ein Auswählen 120, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist. Das Verfahren umfasst ferner ein Transferieren 130 der Ausführung eines Rechen-Funktionsblocks von einer ersten Recheneinheit der Mehrzahl von Recheneinheiten zu einer zweiten Recheneinheit der Mehrzahl von Recheneinheiten, sofern dies durch die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, angezeigt ist. 1c FIG. 12 shows a flow chart of an example of a corresponding control method for a distribution (allocation) of the plurality of computing function blocks to the plurality of computing units of the vehicle. The method includes determining 110 the computing function blocks of the vehicle currently to be executed. The method also includes selecting 120 which computing function block is to be executed on which computing unit. The method also includes transferring 130 the execution of a computing function block from a first computing unit of the plurality of computing units to a second computing unit of the plurality of computing units, provided this is done by selecting which Arithmetic function block to be executed on which arithmetic unit is displayed.

Im Folgenden wird das Konzept im Rahmen der Steuervorrichtung vorgestellt. Merkmale der Steuervorrichtung können jedoch ebenfalls in das entsprechende Steuerverfahren aufgenommen werden.The concept within the framework of the control device is presented below. However, features of the control device can also be included in the corresponding control method.

Die vorliegende Offenbarung beschäftigt sich mit einem Konzept für eine Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken 20 auf eine Mehrzahl von Recheneinheiten 30 eines Fahrzeugs. Dabei steht jeder Rechen-Funktionsblock einerseits für eine Fahrzeugfunktionalität, die per Software bereitgestellt wird, und die als Rechen-Funktionsblock gekapselt ist. In anderen Worten ist jeder Rechen-Funktionsblock dazu ausgebildet, um eine Fahrzeug-Funktionalität des Fahrzeugs bereitzustellen. Auch ist jeder Rechen-Funktionsblock abgekapselt, d.h. er umfasst allen Programmkode und alle Abhängigkeiten, um innerhalb einer Laufzeitumgebung ausgeführt werden zu können. Insbesondere repräsentiert jeder Rechen-Funktionsblock eine software-implementierte Fahrzeugfunktionalität. Dabei kann, durch das vorgeschlagene Konzept, dem Rechen-Funktionsblock unabhängig davon, auf welcher Recheneinheit er ausgeführt wird, Zugang zu Sensoren und/oder Aktuatoren des Fahrzeugs gegeben werden. Beispielsweise können die Rechen-Funktionsblöcke also Fahrzeugfunktionalitäten bereitstellen, die auf einem Zugriff auf Sensoren und/oder Aktuatoren des Fahrzeugs basieren.The present disclosure deals with a concept for a distribution of a plurality of computing function blocks 20 to a plurality of computing units 30 of a vehicle. Each computing function block stands for a vehicle functionality that is provided by software and is encapsulated as a computing function block. In other words, each arithmetic function block is designed to provide vehicle functionality of the vehicle. Each calculation function block is also encapsulated, i.e. it includes all program code and all dependencies in order to be able to be executed within a runtime environment. In particular, each computing function block represents a software-implemented vehicle functionality. In this way, through the proposed concept, the arithmetic function block can be given access to sensors and/or actuators of the vehicle, regardless of which arithmetic unit it is executed on. For example, the computing function blocks can therefore provide vehicle functionalities that are based on access to sensors and/or actuators of the vehicle.

Des Weiteren wird das Konzept der Rechen-Funktionsblocks genutzt, um zu ermöglichen, dass die die Fahrzeug-Funktionalität von unterschiedlichen Recheneinheiten ausgeführt werden kann. Dazu können die Rechen-Funktionsblöcke beispielsweise als Software-Container implementiert werden, die in Laufzeitumgebungen eingesetzt werden, die standardisierte und abstrahierte Schnittstellen für die Container bereitstellen. Dabei kann jeder Rechen-Funktionsblock ausgebildet sein, um als Container innerhalb einer Laufzeitumgebung ausgeführt zu werden. Jede Recheneinheit kann wiederum ausgebildet sein, um eine Laufzeitumgebung für die Ausführung von Containern bereitzustellenFurthermore, the concept of the arithmetic function blocks is used to enable the vehicle functionality to be executed by different arithmetic units. For this purpose, the arithmetic function blocks can be implemented, for example, as software containers that are used in runtime environments that provide standardized and abstract interfaces for the containers. Each arithmetic function block can be designed to be executed as a container within a runtime environment. Each processing unit can in turn be designed to provide a runtime environment for the execution of containers

Damit die Rechen-Funktionsblöcke in den Laufzeitumgebungen der unterschiedlichen Recheneinheiten betrieben werden können, ohne dabei an Funktionalität einzubüßen, sind die Recheneinheiten in manchen Beispielen der vorliegenden Offenbarung ausgebildet, um entsprechende Schnittstellen bereitzustellen. So kann beispielsweise, wie etwa in den 2 und 3 gezeigt ist, jede Recheneinheit dazu ausgebildet sein, der Laufzeitumgebung zumindest eine erste Schnittstelle (34 in 2) zur Kommunikation mit Sensorik und Aktuatorik bereitzustellen, etwa mit ein oder mehreren Sensoren des Fahrzeugs und/oder ein oder mehreren Aktuatoren des Fahrzeugs. Jede Recheneinheit kann ferner ausgebildet sein, der Laufzeitumgebung eine zweite Schnittstelle zur Kommunikation über ein Kommunikationsnetzwerk (37 in 2) und/oder eine dritte Schnittstelle zum Zugriff auf Ressourcen der Recheneinheit (35 in 2) bereitzustellen. Die jeweiligen Schnittstellen können, unabhängig von der Recheneinheit, für den Zugriff auf die jeweiligen Ressourcen genutzt werden. Sind bestimmte Ressourcen in einer Recheneinheit nicht verfügbar, so kann der Zugriff virtualisiert erfolgen, indem die Zugriffe über die jeweiligen zweiten Schnittstellen der Recheneinheiten zwischen den unterschiedlichen Recheneinheiten weitergeleitet werden. Dabei kann beispielsweise eine erste Recheneinheit ausgebildet sein, um die Kommunikation mit Sensorik und Aktuatorik, die über die erste Schnittstelle der ersten Recheneinheit bereitgestellt wird, einer zweiten Recheneinheit über die zweite Schnittstelle bereitzustellen, so dass die Laufzeitumgebung der zweiten Recheneinheit Zugriff auf die Sensorik und Aktuatorik, die über die erste Schnittstelle der ersten Recheneinheit bereitgestellt wird, erhält. Dies kann insbesondere dann geschehen, wenn die zweite Recheneinheit keinen direkten Zugriff auf die entsprechende Sensorik und/oder hat, etwa weil die entsprechende Sensorik/Aktuatorik nur lokal von der ersten Recheneinheit ansprechbar ist, oder weil die zweite Recheneinheit außerhalb des Fahrzeugs angeordnet ist.So that the computing function blocks can be operated in the runtime environments of the different computing units without losing functionality, the computing units in some examples of the present disclosure are designed to provide corresponding interfaces. For example, such as in the 2 and 3 is shown, each computing unit can be designed to provide the runtime environment with at least one first interface (34 in 2 ) for communication with sensors and actuators, for example with one or more sensors of the vehicle and/or one or more actuators of the vehicle. Each computing unit can also be designed to provide the runtime environment with a second interface for communication via a communication network (37 in 2 ) and/or a third interface for accessing resources of the processing unit (35 in 2 ) to provide. The respective interfaces can be used to access the respective resources, independently of the processing unit. If certain resources are not available in a computing unit, access can be virtualized by the accesses being forwarded between the different computing units via the respective second interfaces of the computing units. For example, a first computing unit can be designed to provide communication with sensors and actuators, which is provided via the first interface of the first computing unit, to a second computing unit via the second interface, so that the runtime environment of the second computing unit can access the sensors and actuators , which is provided via the first interface of the first processing unit, receives. This can happen in particular if the second processing unit does not have direct access to the corresponding sensor system and/or because the corresponding sensor system/actuator system can only be addressed locally by the first processing unit, or because the second processing unit is arranged outside the vehicle.

Um die Portabilität der Rechen-Funktionsblöcke zu unterstützen, können die jeweiligen Schnittstellen so ausgeführt werden, dass ein Zugriff auf die Schnittstellen möglichst identisch ist, unabhängig davon, auf welcher Recheneinheit oder in welcher Laufzeitumgebung der jeweilige Rechen-Funktionsblock ausgeführt wird. Daher kann die erste Schnittstelle, die zweite Schnittstelle und/oder die dritte Schnittstelle eine Abstraktion der physikalischen Schnittstellen der jeweiligen Recheneinheit bereitstellen, so dass die erste Schnittstelle, die zweite Schnittstelle und/oder die dritte Schnittstelle für die Laufzeitumgebung auf jeder Recheneinheit einheitlich ansprechbar sind. In anderen Worten können die jeweiligen Schnittstellen einen abstrahierten und standardisierten Zugriff bieten, unabhängig von der physikalischen Ausgestaltung der jeweiligen Schnittstellen in den Recheneinheiten.In order to support the portability of the arithmetic function blocks, the respective interfaces can be designed in such a way that access to the interfaces is as identical as possible, regardless of which arithmetic unit or in which runtime environment the respective arithmetic function block is executed. The first interface, the second interface and/or the third interface can therefore provide an abstraction of the physical interfaces of the respective computing unit, so that the first interface, the second interface and/or the third interface can be addressed uniformly for the runtime environment on each computing unit. In other words, the respective interfaces can offer abstract and standardized access, regardless of the physical design of the respective interfaces in the processing units.

Die Verteilung der Rechen-Funktionsblöcke basiert darauf, welche Rechen-Funktionsblöcke zu einem gegebenen Zeitpunkt ausgeführt werden. Daher ist die Steuervorrichtung ausgebildet zum Ermitteln der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs. Die derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs hängen dabei davon ab, welche Fahrzeugfunktionen zu diesem Zeitpunkt aktiv sind, etwa implizit durch den Betrieb des Fahrzeugs, oder explizit, weil sie von einem Passagier des Fahrzeugs aktiviert wurden. Beispielsweise können die derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs basierend darauf ermittelt werden, welche Fahrzeugfunktionen zu diesem Zeitpunkt, implizit oder explizit, aktiviert sind. Zusätzlich können manche auszuführende Rechen-Funktionsblöcke von anderen Fahrzeugen oder von anderen Recheneinheiten außerhalb des Fahrzeugs stammen. Diese Rechen-Funktionsblöcke können zusätzlich zu den Rechen-Funktionsblöcken, die Fahrzeugfunktionen, die derzeit aktiv sind, bereitstellen, berücksichtigt werden.The distribution of the arithmetic function blocks is based on which arithmetic function blocks are being executed at any given time. The control device is therefore designed to determine the computing function blocks of the vehicle that are currently to be executed. The computing function blocks currently to be executed by the vehicle depend on which vehicle functions are active at that time, e.g. implicitly through the operation of the vehicle, or explicitly because they have been activated by a passenger of the vehicle. For example, the computing function blocks currently to be executed by the vehicle can be determined based on which vehicle functions are activated at this point in time, implicitly or explicitly. In addition, some computing function blocks to be executed can originate from other vehicles or from other computing units outside the vehicle. These computational function blocks may be considered in addition to the computational function blocks that provide vehicle functions that are currently active.

Zusätzlich kann ein (ermittelter, erwarteter oder geschätzter) Ressourcenbedarf der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs ermittelt werden, etwa basierend auf einem derzeitigen Ressourcenverbrauch der jeweiligen Rechen-Funktionsblöcken, oder basierend auf einer Schätzung, die auf einem Ressourcenverbrauch der jeweiligen Rechen-Funktionsblöcken in der Vergangenheit basiert. Dafür kann beispielsweise eine RessourcenÜberwachung genutzt werden, wie sie in 2 (33) gezeigt ist.In addition, a (determined, expected or estimated) resource requirement of the vehicle's computing function blocks currently to be executed can be determined, for example based on a current resource consumption of the respective computing function blocks, or based on an estimate based on a resource consumption of the respective computing function blocks in based on the past. A resource monitor can be used for this, for example, as described in 2 (33) is shown.

Basierend auf den ermittelten derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs kann nun ausgewählt werden, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist. In anderen Worten wird eine Zuordnung von Rechen-Funktionsblöcken zu Recheneinheiten bestimmt. Dabei können verschiedene Kriterien beachtet werden. Einerseits kann berücksichtigt werden, dass, gemäß der Auswahl, jedem Rechen-Funktionsblock ausreichend Ressourcen (etwa Rechen-Ressourcen oder Speicher-Ressourcen) zur Verfügung stehen. In anderen Worten kann die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, basierend auf einem Ressourcenbedarf der Rechen-Funktionsblöcke und auf verfügbaren Ressourcen der Recheneinheiten so durchgeführt werden, dass jedem Rechen-Funktionsblock ausreichend Ressourcen zur Verfügung stehen. Die verfügbaren Ressourcen der Recheneinheiten können wiederum über die RessourcenÜberwachung, wie sie in 2 (33) gezeigt ist, bestimmt werden. Dabei kann eine Lastverteilung angestrebt werden (auch engl. „load balancing“). In anderen Worten kann das Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, eine Lastverteilung anstreben. Beispielsweise kann das Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, so ausgeführt werden, dass ein Ressourcenbedarf der Rechen-Funktionsblöcke entsprechend den verfügbaren Ressourcen auf die Recheneinheiten verteilt wird. Dabei kann angestrebt werden, dass die unterschiedlichen Recheneinheiten einen ähnlich hohen prozentualen Anteil an freien Ressourcen gemäß der Auswahl aufweisen. Auch kann ein maximaler Ressourcenbedarf der jeweiligen Rechen-Funktionsblöcke berücksichtigt werden, so dass die Rechen-Funktionsblöcke so verteilt werden, dass ausreichend Ressourcen bereitstehen, dass auch der maximale Ressourcenbedarf jeweiligen Rechen-Funktionsblöcke abgedeckt werden kann.Based on the vehicle's computing function blocks that are currently to be executed, it can now be selected which computing function block is to be executed on which computing unit. In other words, an assignment of arithmetic function blocks to arithmetic units is determined. Various criteria can be taken into account. On the one hand, it can be taken into account that, depending on the selection, each computing function block has sufficient resources (such as computing resources or memory resources) available. In other words, the selection of which arithmetic function block is to be executed on which arithmetic unit can be carried out based on a resource requirement of the arithmetic function blocks and on available resources of the arithmetic units such that each arithmetic function block has sufficient resources available. The available resources of the computing units can in turn be monitored via resource monitoring, as described in 2 (33) can be determined. In this way, a load distribution can be aimed at (also known as “load balancing”). In other words, selecting which computational function block to execute on which computational unit may strive for load balancing. For example, the selection of which arithmetic function block is to be executed on which arithmetic unit can be carried out in such a way that a resource requirement of the arithmetic function blocks is distributed to the arithmetic units according to the available resources. The aim can be that the different processing units have a similarly high percentage of free resources according to the selection. A maximum resource requirement of the respective arithmetic function blocks can also be taken into account, so that the arithmetic function blocks are distributed in such a way that sufficient resources are available so that the maximum resource requirement of the respective arithmetic function blocks can also be covered.

Zusätzlich zu den benötigten und verfügbaren Ressourcen können auch andere Faktoren berücksichtigt werden, wie etwa der Zugriff der Rechen-Funktionsblöcke auf Sensorik/Aktuatorik der jeweiligen Recheneinheiten. Ist ein solcher Zugriff lediglich indirekt möglich, d.h. über eine Weiterleitung über die jeweiligen zweiten Schnittstellen der Recheneinheiten, kann dies gegen eine Auswahl einer solchen Recheneinheit für einen zugreifenden Rechen-Funktionsblock sprechen. Kommunizieren Rechen-Funktionsblöcke untereinander, so kann dies berücksichtigt werden, etwa indem die Rechen-Funktionsblöcke der gleichen Recheneinheit, und/oder der gleichen Laufzeitumgebung zugewiesen werden. Abhängig von der Funktionalität der Rechen-Funktionsblöcke können auch weitere Faktoren berücksichtigt werden.In addition to the required and available resources, other factors can also be taken into account, such as access by the computing function blocks to the sensors/actuators of the respective computing units. If such access is only possible indirectly, i.e. via forwarding via the respective second interfaces of the processing units, this can speak against a selection of such a processing unit for an accessing processing function block. If arithmetic function blocks communicate with one another, this can be taken into account, for example by assigning the arithmetic function blocks to the same arithmetic unit and/or the same runtime environment. Depending on the functionality of the arithmetic function blocks, other factors can also be taken into account.

Basierend auf der Zuordnung von Rechen-Funktionsblöcken zu Recheneinheiten wird nun die Ausführung der Rechen-Funktionsblöcke zwischen den Recheneinheiten transferiert, soweit notwendig. Dabei wird in diesem Zusammenhang von einem Transferieren der Ausführung gesprochen, weil, in manchen Beispielen, die Rechen-Funktionsblöcke bereits in unterschiedlichen Recheneinheiten vorliegen können. Was transferiert wird ist die Ausführung, d.h., welche Recheneinheit welchen Rechen-Funktionsblock ausführt. In anderen Worten entspricht oder umfasst das Transferieren der Ausführung eines Rechen-Funktionsblocks ein Ändern, auf welcher Recheneinheit der Rechen-Funktionsblock ausgeführt wird. Zusätzlich zu der reinen Ausführung des Rechen-Funktionsblock können zudem Laufzeitdaten des Rechen-Funktionsblocks transferiert werden. Entsprechend kann das Transferieren der Ausführung des Rechen-Funktionsblocks ein Transferieren von Laufzeitdaten des Rechen-Funktionsblocks umfassen. Dabei können die Laufzeitdaten Daten sein, die von der ersten Recheneinheit in dem Rechen-Funktionsblock oder in einer Speicherressource der ersten Recheneinheit gespeichert sind. Zusätzlich oder alternativ kann der Inhalt eines flüchtigen Arbeitsspeichers, der von dem Rechen-Funktionsblock auf der ersten Recheneinheit verwendet wird, auf die zweite Recheneinheit übertragen werden.Based on the assignment of arithmetic function blocks to arithmetic units, the execution of the arithmetic function blocks is now transferred between the arithmetic units, if necessary. In this context, one speaks of a transfer of the execution because, in some examples, the arithmetic function blocks can already be present in different arithmetic units. What is transferred is the execution, i.e. which arithmetic unit executes which arithmetic function block. In other words, transferring the execution of a computational function block corresponds to or includes changing on which computational unit the computational function block is executed. In addition to the pure execution of the arithmetic function block, runtime data of the arithmetic function block can also be transferred. Correspondingly, transferring the execution of the computing function block may include transferring runtime data of the computing function block. In this case, the runtime data can be data that is stored by the first processing unit in the processing function block or in a storage resource of the first processing unit. Additionally or alternatively, the content of a volatile main memory, which is used by the arithmetic function block on the first arithmetic unit, can be transferred to the second arithmetic unit.

Die Steuervorrichtung ist ausgebildet zum Transferieren der Ausführung des Rechen-Funktionsblocks von der ersten zu der zweiten Recheneinheit 30b der Mehrzahl von Recheneinheiten, sofern dies durch die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, angezeigt ist. Dabei kommen zwei Varianten in Betracht, die in den 1d und 1e gezeigt sind. 1d und 1e zeigen Beispiele eines Transfers einer Ausführung eines Rechen-Funktionsblocks.The control device is designed to transfer the execution of the arithmetic function block from the first to the second rake unit 30b of the plurality of computing units, provided this is indicated by the selection of which computing function block is to be executed on which computing unit. There are two variants to consider in the 1d and 1e are shown. 1d and 1e Figure 12 shows examples of a transfer of execution of a computational function block.

In 1d wird der Rechen-Funktionsblock 20a von der Laufzeitumgebung 32a der ersten Recheneinheit 30a in die Laufzeitumgebung 32b der zweiten Recheneinheit 30b transferiert. Entsprechend kann das Transferieren der Ausführung eines Rechen-Funktionsblocks das Transferieren der Ausführung des Containers von einer Laufzeitumgebung 32a der ersten Recheneinheit zu einer Laufzeitumgebung 32b der zweiten Recheneinheit umfassen. Ein weiterer Rechen-Funktionsblock 20b kann dabei in der Laufzeitumgebung 32a der ersten Recheneinheit verbleiben. Auch kann die Laufzeitumgebung 32b bereits einen weiteren Rechen-Funktionsblock 20c umfassen.In 1d the arithmetic function block 20a is transferred from the runtime environment 32a of the first arithmetic unit 30a to the runtime environment 32b of the second arithmetic unit 30b. Correspondingly, transferring the execution of a computing function block may include transferring the execution of the container from a runtime environment 32a of the first computing unit to a runtime environment 32b of the second computing unit. A further arithmetic function block 20b can remain in the runtime environment 32a of the first arithmetic unit. The runtime environment 32b can also already include a further arithmetic function block 20c.

Alternativ kann, wie in 1e, die gesamte Laufzeitumgebung von der ersten Recheneinheit zu der zweiten Recheneinheit transferiert werden. In anderen Worten kann das Transferieren der Ausführung eines Rechen-Funktionsblocks das Transferieren der Laufzeitumgebung 32 mit dem Container (oder auch mehreren Containern) von der ersten Recheneinheit zu der zweiten Recheneinheit umfassen. Wie in 1e gezeigt ist, kann die zu transferierende Laufzeitumgebung mehrere auszuführende Container umfassen, die beide transferiert werden. Dieser Ansatz kann gewählt werden, wenn absehbar ist, dass die erste Recheneinheit entweder zu wenige oder zu viele Ressourcen für die Ausführung der Rechen-Funktionsblöcke/Container der Laufzeitumgebung aufweist. Beispielsweise kann das Transferieren der Ausführung eines Rechen-Funktionsblocks das Transferieren der Laufzeitumgebung mit dem Container von der ersten Recheneinheit zu der zweiten Recheneinheit umfassen, etwa falls die zweite Recheneinheit zumindest 10% mehr oder weniger Rechenkapazität bereitstellt als die erste Recheneinheit. Dies kann als Faktor in die Zuweisung der Rechen-Funktionseinheiten zu Recheneinheiten berücksichtigt werden.Alternatively, as in 1e , the entire runtime environment is transferred from the first processing unit to the second processing unit. In other words, the transfer of the execution of a computing function block can include the transfer of the runtime environment 32 with the container (or multiple containers) from the first computing unit to the second computing unit. As in 1e is shown, the runtime environment to be transferred may include multiple containers to be executed, both of which are transferred. This approach can be chosen if it is foreseeable that the first processing unit has either too few or too many resources for the execution of the processing function blocks/containers of the runtime environment. For example, transferring the execution of a computing function block can include transferring the runtime environment with the container from the first computing unit to the second computing unit, for example if the second computing unit provides at least 10% more or less computing capacity than the first computing unit. This can be factored into the allocation of computational functional units to computational units.

Wie bereits angedeutet kann das vorgeschlagene Konzept auch in Szenarien eingesetzt werden, in denen Recheneinheiten außerhalb des Fahrzeugs einbezogen werden, etwa Recheneinheiten von anderen Fahrzeugen, Recheneinheiten einer Parkgarage oder Recheneinheiten einer Ladestation. Folglich kann die Mehrzahl von Recheneinheiten ferner ein oder mehrere Recheneinheiten umfassen, die außerhalb des Fahrzeugs angeordnet sind. Ein solches Szenario ist beispielsweise in Zusammenhang mit den 4a und 4b gezeigt. Auch kann die vorgeschlagene Steuervorrichtung, das Steuerverfahren und das Computerprogramm zur Verteilung von Rechen-Funktionsblöcken von außerhalb des Fahrzeugs zu Recheneinheiten des Fahrzeugs genutzt werden.As already indicated, the proposed concept can also be used in scenarios in which processing units outside the vehicle are included, such as processing units from other vehicles, processing units in a parking garage or processing units in a charging station. Consequently, the plurality of computing units may further include one or more computing units located outside of the vehicle. Such a scenario is, for example, in connection with the 4a and 4b shown. The proposed control device, the control method and the computer program can also be used to distribute arithmetic function blocks from outside the vehicle to arithmetic units in the vehicle.

Die zumindest eine Schnittstelle 12 kann beispielsweise einem oder mehreren Eingängen und/oder einem oder mehreren Ausgängen zum Empfangen und/oder Übertragen von Informationen entsprechen, etwa in digitalen Bitwerten, basierend auf einem Code, innerhalb eines Moduls, zwischen Modulen, oder zwischen Modulen verschiedener Entitäten.The at least one interface 12 may correspond, for example, to one or more inputs and/or one or more outputs for receiving and/or transmitting information, such as in digital bit values, based on a code, within a module, between modules, or between modules of different entities .

In Ausführungsbeispielen können die ein oder mehreren Prozessoren 14 einem beliebigen Controller oder Prozessor oder einer programmierbaren Hardwarekomponente entsprechen. Beispielsweise kann die Funktionalität der ein oder mehreren Prozessoren 14 auch als Software realisiert sein, die für eine entsprechende Hardwarekomponente programmiert ist. Insofern können die ein oder mehreren Prozessoren 14 als programmierbare Hardware mit entsprechend angepasster Software implementiert sein. Dabei können beliebige Prozessoren, wie Digitale Signalprozessoren (DSPs) zum Einsatz kommen. Ausführungsbeispiele sind dabei nicht auf einen bestimmten Typ von Prozessor eingeschränkt. Es sind beliebige Prozessoren oder auch mehrere Prozessoren zur Implementierung denkbar.In example embodiments, the one or more processors 14 may correspond to any controller or processor or programmable hardware component. For example, the functionality of the one or more processors 14 can also be implemented as software that is programmed for a corresponding hardware component. In this respect, the one or more processors 14 can be implemented as programmable hardware with correspondingly adapted software. Any processors, such as digital signal processors (DSPs) can be used. Exemplary embodiments are not limited to a specific type of processor. Any processors or even multiple processors are conceivable for the implementation.

Die ein oder mehreren Speichergeräte 16 können beispielsweise zumindest ein Element der Gruppe von computerlesbares Speichermedium, magnetisches Speichermedium, optisches Speichermedium, Festplatte, Flash-Speicher, Diskette, Zufallszugriffsspeicher (auch engl. Random Access Memory), Programmable Read Only Memory (PROM), Erasable Programmable Read Only Memory (EPROM), Electronically Erasable Programmable Read Only Memory (EEPROM), und Netzwerkspeicher umfassen.The one or more storage devices 16 can be, for example, at least one element from the group of computer-readable storage medium, magnetic storage medium, optical storage medium, hard drive, flash memory, floppy disk, random access memory (also engl. Random Access Memory), programmable read only memory (PROM), erasable include programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), and network storage.

Das Fahrzeug 100 kann beispielsweise einem Landfahrzeug, einem Wasserfahrzeug, einem Luftfahrzeug, einem Schienenfahrzeug, einem Straßenfahrzeug, einem Auto, einem Geländefahrzeug, einem Kraftfahrzeug, oder einem Lastkraftfahrzeug entsprechen.The vehicle 100 may correspond, for example, to a land vehicle, a watercraft, an aircraft, a rail vehicle, a road vehicle, a car, an all-terrain vehicle, a motor vehicle, or a truck.

Mehr Details und Aspekte der Steuervorrichtung, des Steuerverfahrens, des Computerprogramms, des Systems und des Fahrzeugs werden in Verbindung mit dem Konzept oder Beispielen genannt, die vorher oder nachher (z.B. 2 bis 4b) beschrieben werden. Die Steuervorrichtung, das Steuerverfahren, das Computerprogramm, das System und das Fahrzeug kann/können ein oder mehrere zusätzliche optionale Merkmale umfassen, die ein oder mehreren Aspekten des vorgeschlagenen Konzepts oder der beschriebenen Beispiele entsprechen, wie sie vorher oder nachher beschrieben wurden.More details and aspects of the control device, the control method, the computer program, the system and the vehicle are mentioned in connection with the concept or examples given before or after (e.g 2 until 4b ) to be discribed. The control device, the control method, the computer program, the system and the vehicle can/can a or comprise several additional optional features corresponding to one or more aspects of the proposed concept or the described examples as described before or after.

Um einen einheitlichen Dienstcontainer für alle Plattformen zu schaffen, kann das Gerät, auf dem die Dienste ausgeführt werden, abstrahiert werden, um die Unterschiede der Hardware-Architekturen oder der Low-Level-Datenformate zu verbergen. Ein Beispiel für die Ausgestaltung einer Recheneinheit wird im Folgenden gegeben.To create a unified service container across platforms, the device running the services can be abstracted to hide differences in hardware architectures or low-level data formats. An example of the design of a computing unit is given below.

Die Einzelheiten einer solchen Implementierung sind in der folgenden 2 zu finden. 2 zeigt ein schematisches Diagrammes eines Beispiels einer Recheneinheit mit einer Laufzeitumgebung und Rechen-Funktionsblöcken. 2 zeigt dabei die Laufzeitumgebung 32 eingebettet in ein (abstrahiertes) Gerät 30, d.h. eine Recheneinheit. Die Laufzeitumgebung wird auf der Laufzeit-Infrastruktur 31 ausgeführt. Das physische Gerät 30 (beispielsweise ein Steuergerät im Fahrzeug, ein Server im Backend, ein persönliches Gerät wie ein Smartphone) bietet im Allgemeinen drei Arten von Schnittstellen zur Außenwelt: Eine Schnittstelle zur physischen Umgebung mit Sensoren 34a und Aktuatoren 34b, die durch den Umgebungs-Konnektor (engl. Environment Connector) 34 abstrahiert werden kann, eine Schnittstelle zu angeschlossenen Geräten, über Eingangs-Kanäle 39 und Ausgangs-Kanäle 38, mit einer Abstraktion namens Kommunikations-Konnektor (engl. Communication Connector) 37 und eine Schnittstelle zu den Ressourcen 36 des Geräts (Host), Host-Konnektor (engl. Host Connector) 35 genannt (z. B. Zugriff auf Massenspeicher, spezielle Recheneinheiten, ...). Der Rechenblock 30 von 2 umfasst ferner einen Ressourcen-Monitor 33, um die durch die Laufzeitumgebung 32 genutzten Ressourcen zu überwachen und über den Kommunikations-Konnektor 33 der Steuervorrichtung weiterzugeben. Dabei kann der Kommunikations-Konnektor 37, wie in 3 gezeigt, außerhalb der Recheneinheiten/des Geräts angeordnet sein (etwa in einem Modem), und über einen Kommunikations-Multiplexer angesprochen werden. Auch die Sensoren/Aktuatoren 34a/34b können in vielen Fällen außerhalb der Recheneinheiten/des Geräts angeordnet sein.The details of such an implementation are given below 2 to find. 2 Figure 12 shows a schematic diagram of an example of a computing unit with a runtime environment and computing function blocks. 2 shows the runtime environment 32 embedded in an (abstract) device 30, ie a computing unit. The runtime environment runs on the runtime infrastructure 31 . The physical device 30 (e.g., an in-vehicle controller, a backend server, a personal device such as a smartphone) generally provides three types of interfaces to the outside world: An interface to the physical environment with sensors 34a and actuators 34b driven by the environmental Connector (engl. Environment Connector) 34 can be abstracted, an interface to connected devices, via input channels 39 and output channels 38, with an abstraction called communication connector (engl. Communication Connector) 37 and an interface to the resources 36 of the device (host), host connector (engl. Host connector) 35 called (e.g. access to mass storage, special computing units, ...). The arithmetic block 30 from 2 also includes a resource monitor 33 to monitor the resources used by the runtime environment 32 and pass them on via the communication connector 33 of the control device. The communication connector 37, as in 3 shown, be arranged outside of the computing units/device (e.g. in a modem) and addressed via a communication multiplexer. In many cases, the sensors/actuators 34a/34b can also be arranged outside the computing units/the device.

Die Laufzeitumgebung empfängt oder sendet Daten (ausschließlich) über die abstrahierten Schnittstellen (Umgebungs- / Kommunikations- / Host-Konnektor) und ist damit unabhängig von dem physischen Gerät. Die Laufzeitumgebung kann auf verschiedenen Geräten instanziiert werden, etwa auf einem oder mehreren Fahrzeugsteuergeräten/Recheneinheiten des Fahrzeugs, auf einem Backend-Server, einem Personal Computer oder anderen persönlichen Geräten wie einem Smartphone oder einem Wearable.The runtime environment receives or sends data (exclusively) via the abstracted interfaces (environment / communication / host connector) and is therefore independent of the physical device. The runtime environment can be instantiated on various devices, such as one or more vehicle control units/computing units of the vehicle, on a backend server, a personal computer or other personal devices such as a smartphone or a wearable.

Ein wichtiges neues Konzept ist die Möglichkeit, Rechen-Funktionsblöcke, und damit Dienste, von einer Laufzeitumgebung in eine andere zu verlagern und auch einen Lastausgleich zwischen den Laufzeitumgebungen vorzunehmen.An important new concept is the ability to move computing function blocks, and thus services, from one runtime environment to another and also to perform load balancing between the runtime environments.

Die Kommunikation zwischen den Laufzeitumgebungen kann verschlüsselt werden, um zu verhindern, dass ein „Mann in der Mitte“ Nachrichten abhören und auch den Datenverkehr verändern kann. Isolierte (SW-)Container, d.h., die Rechen-Funktionsblöcke, können zur Ausführung auf verschiedene Plattformen verschoben werden. Auch eine komplette Laufzeitumgebung (Basissystem) kann auf ein anderes System verschoben werden. Die Virtualisierung der HW-Schnittstellen ermöglicht eine von der Gerätearchitektur unabhängige Implementierung der Laufzeit. Der Datenverkehr (Eingabe/Ausgabe) zwischen den Laufzeiten kann über einen verschlüsselten Kanal erfolgen. Zudem kann Fahrzeug-SW zu Entwicklungs-/Test- oder anderen Zwecken auf persönliche Geräte (z. B. PC, Smartphone, ...) übertragen werden.Communication between the runtime environments can be encrypted to prevent a "man in the middle" from eavesdropping on messages and also modifying data traffic. Isolated (SW) containers, i.e. the computational function blocks, can be moved to different platforms for execution. A complete runtime environment (base system) can also be moved to another system. The virtualization of the HW interfaces enables the runtime to be implemented independently of the device architecture. Traffic (input/output) between runtimes can be done over an encrypted channel. In addition, vehicle SW can be transferred to personal devices (e.g. PC, smartphone, ...) for development/testing or other purposes.

Die folgende 3 zeigt die Vorteile einer abstrahierten Laufzeit in einer verteilten Umgebung mit mehreren Geräten: 3 zeigt ein schematisches Diagramm eines Systems mit mehreren Recheneinheiten. 3 illustriert das Konzept der verteilten Laufzeitumgebungen mit LastausgleichThe following 3 shows the benefits of an abstracted runtime in a distributed, multi-device environment: 3 Figure 12 shows a schematic diagram of a system with multiple processing units. 3 illustrates the concept of distributed runtime environments with load balancing

Die Geräte 30a, 30b (1 bis n) (d.h. die Mehrzahl von Recheneinheiten) können beispielsweise in ein Fahrzeug als Steuergeräte integriert sein, es kann sich auch um eine Mischung aus einigen Geräten innerhalb eines Fahrzeugs und einem oder mehreren (Backend-)Servern handeln oder um eine Ad-hoc-Integration von persönlichen Geräten in eine Fahrzeugumgebung.The devices 30a, 30b (1 to n) (i.e. the plurality of computing units) can be integrated into a vehicle as control units, for example; it can also be a mixture of a few devices within a vehicle and one or more (backend) servers or an ad hoc integration of personal devices into a vehicle environment.

Die Kommunikation zwischen den verschiedenen Laufzeitumgebungen kann abstrahierte Daten (im Gegensatz zu Rohdaten) verwenden, um zeit- und ressourcenaufwendige Konvertierungen zu vermeiden. Wenn Informationen den Bereich der abstrahierten Laufzeitumgebungen verlassen, können die jeweiligen Schnittstellen (Umgebungs-Konnektor, Kommunikations-Konnektor, Host Konnektor) die Daten zurück in die Formate in diesen verbundenen Systemen konvertieren.Communication between the different runtime environments can use abstracted data (as opposed to raw data) to avoid time and resource consuming conversions. When information leaves the scope of the abstracted runtime environments, the respective interfaces (environmental connector, communication connector, host connector) can convert the data back to the formats in these connected systems.

Ein weiterer Aspekt, der berücksichtigt wird, ist der Lastausgleich, d.h. wo soll ein Dienst ausgeführt werden, wenn mehrere Recheneinheiten/Laufzeitumgebungen verfügbar sind? Um diese Herausforderung zu lösen, können zwei Elemente verwendet werden. Ressourcenmonitore 33 (siehe 3) können auf den jeweiligen Recheneinheiten genutzt werden, um die Last und die noch verfügbaren Ressourcen auf jedem Gerät der Steuervorrichtung 10 zu melden, damit entschieden werden kann, ob Dienste auf diesem speziellen Gerät ausgeführt werden können. Ein Lastverteiler, etwa die Steuervorrichtung 10, wird verwendet, um auf der Grundlage der Last der verschiedenen Geräte zu entscheiden, wo ein Dienst platziert und ausgeführt werden soll.Another aspect that is considered is load balancing, ie where should a service run when multiple compute units/runtimes are available? To solve this challenge, two elements can be used. Resource monitors 33 (see 3 ) can be used on the respective computing units to report the load and the resources still available on each device to the control device 10 so that a decision can be made as to whether services can be run on this particular device. A load balancer, such as controller 10, is used to decide where to place and run a service based on the load of the various devices.

In 3 wird die Kommunikation übe den Kommunikations-Konnektor in ein Modem 310 verschoben, wobei in den einzelnen Geräten ein Kommunikations-Multiplexer zur Kommunikation mit dem Kommunikations-Konnektor verbleibt.In 3 the communication is shifted via the communication connector into a modem 310, with a communication multiplexer remaining in the individual devices for communication with the communication connector.

Während die Ressourcenüberwachung auf allen Geräten durchgeführt werden kann, kann der Lastverteiler eine unabhängige Software-Komponente sein, die die Berichte aller Ressourcenmonitore sammelt, um eine zentrale Entscheidung darüber zu treffen, wo die Dienste ausgeführt werden sollen.While resource monitoring can be performed on all devices, the load balancer can be an independent software component that collects the reports from all resource monitors to make a central decision on where to run the services.

Alternativ könnte der Lastausgleich auch auf verteilte Weise erfolgen. Hierbei bieten die verschiedenen Geräte einem Dienstanbieter (z. B. im Backend) freie Ressourcen an, um einen Dienst zu übernehmen, wenn Ressourcen auf dem Gerät verfügbar sind. Der zentrale Lastverteiler hat jedoch den Vorteil, dass die Entscheidung, wo ein Dienst laufen soll, an einer Stelle (z.B. im Backend oder in einem zentralen Steuergerät) getroffen wird und keine zeitaufwändigen Verhandlungen der dezentralen Ressourcenmonitore in den einzelnen Geräten erforderlich sind.Alternatively, load balancing could be done in a distributed manner. Here, the various devices offer free resources to a service provider (e.g. in the backend) in order to take over a service if resources are available on the device. However, the central load balancer has the advantage that the decision as to where a service should run is made at one point (e.g. in the backend or in a central control device) and no time-consuming negotiations of the decentralized resource monitors in the individual devices are required.

Die abstrahierte verteilte Laufzeitumgebung ermöglicht die Skalierung eines Systems durch Hinzufügen neuer Laufzeitumgebungen bei Bedarf. Im Fahrzeugkontext ermöglicht dies, ein Fahrzeug mit neuen Diensten auf dem neuesten Stand zu halten und zu anspruchsvolle Dienste auf alternative, mit dem Fahrzeug verbundene Geräte zu verlagern.The abstracted distributed runtime environment allows a system to be scaled by adding new runtime environments as needed. In the vehicle context, this allows to keep a vehicle updated with new services and to shift overly demanding services to alternative devices connected to the vehicle.

Die Abstraktion von Laufzeitumgebungen ist ebenfalls hilfreich für Anwendungen und Standards in den Bereichen loT / M2M / B2B (Internet of Things/Internet der Dinge, Machine-to-Machine/Maschine-zu-Maschine, Business-to-Business/geschäftliche Transaktionen). Die Erfindung kann in Fahrzeugen und anderen Mobilitätsprodukten (z.B. Wallboxen, Ladestationen, Infrastruktur) eingesetzt werden. Die verteilten Laufzeitumgebungen können auch in anderen Umgebungen eingesetzt werden (Smart Home, Smart City, Smart Offices, ...).The abstraction of runtime environments is also useful for loT / M2M / B2B (Internet of Things/Internet of Things, machine-to-machine/machine-to-machine, business-to-business/business transactions) applications and standards. The invention can be used in vehicles and other mobility products (e.g. wall boxes, charging stations, infrastructure). The distributed runtime environments can also be used in other environments (smart home, smart city, smart offices, ...).

Verschiedene Beispiele der vorliegenden Erfindung können dabei helfen, die Grenze zwischen Backend und Fahrzeug (z. B. Verschiebung von Aufgaben in Fahrzeuge, die keine anderen Aufgaben haben - geparkte Fahrzeuge) - Middleware oder Netzwerkbetriebssystem zu beseitigen. Dadurch wird eine Abwägung zwischen lokalen Ressourcen (im Fahrzeug) und entfernten Ressourcen (andere Fahrzeuge, Server) möglich.Various examples of the present invention may help to eliminate the boundary between backend and vehicle (e.g. moving tasks to vehicles that have no other tasks - parked vehicles) - middleware or network operating system. This enables a trade-off between local resources (in the vehicle) and remote resources (other vehicles, servers).

Wie bereits zuvor ausgeführt wurde, ist es möglich, die Rechen-Funktionsblöcke auch zu Recheneinheiten außerhalb des Fahrzeugs zu transferieren. 4a und 4b zeigen Beispiele eines Transfers einer Ausführung eines Rechen-Funktionsblocks zwischen Fahrzeugen und externen Recheneinheiten. In den 4a und 4b wird ein Transfer von Rechen-Funktionsblöcken von einem Fahrzeug 410 in ein weiteres Fahrzeug 420, eine Ladestation 430 oder eine Parkgarage 440 schematisch gezeigt. In 4a werden einzelne Rechen-Funktionsblöcke 20 von der Laufzeitumgebung 30 des Fahrzeugs 410 in die Laufzeitumgebung 30 einer Recheneinheit eines anderen Geräts 420; 430; 440 transferiert. In 4b wird die ganze Laufzeitumgebung 30 des Fahrzeugs 410, mitsamt der Funktionsblöcke 20, auf die Recheneinheit eines anderen Geräts 420; 430; 440 transferiert.As already explained above, it is possible to also transfer the computing function blocks to computing units outside the vehicle. 4a and 4b show examples of a transfer of an execution of a computing function block between vehicles and external computing units. In the 4a and 4b a transfer of computing function blocks from a vehicle 410 to another vehicle 420, a charging station 430 or a parking garage 440 is shown schematically. In 4a individual computing function blocks 20 are transferred from the runtime environment 30 of the vehicle 410 to the runtime environment 30 of a computing unit of another device 420; 430; 440 transferred. In 4b the entire runtime environment 30 of the vehicle 410, together with the function blocks 20, is transferred to the computing unit of another device 420; 430; 440 transferred.

Dies ermöglicht beispielsweise eine Nutzung geparkter Autos als Computer- und Netzwerkressourcen, oder die Nutzung von Recheneinheiten in einer Garage mit sich bewegenden Laderobotern, eine andere Garage mit einem Roboterarm, der nach dem Fahrzeug greift. Dabei ist es möglich, mehr als eine Laufzeitumgebung pro Fahrzeug/Recheneinheit zu erstellen, etwa um die transferierten Rechen-Funktionsblöcke unterschiedlicher Fahrzeuge stärker voneinander zu treffen. Auch werden verschiedene (neue) Umgebungen für eine Laufzeitlösung geschaffen (etwa durch Nutzung externer Geräte wie: Laderoboter). Dabei werden die Schnittstellen, wie zuvor bereits in Verbindung mit den 1a bis 3 ausgeführt, zwischen den verschiedenen Geräten (z.B. Auto und Laderoboter) standardisiert und abstrahiert, so dass eine Hardware-unabhängigkeit der Schnittstellen erreicht werden.This allows, for example, using parked cars as computing and network resources, or using computing units in one garage with moving charging robots, another garage with a robotic arm reaching for the vehicle. It is possible to create more than one runtime environment per vehicle/processing unit, for example in order to better match the transferred processing function blocks of different vehicles. Various (new) environments are also created for a runtime solution (e.g. by using external devices such as loading robots). The interfaces, as previously in connection with the 1a until 3 carried out, standardized and abstracted between the various devices (e.g. car and charging robot), so that hardware independence of the interfaces can be achieved.

Die Übertragung eines Dienstes, d.h., eines Rechen-Funktionsblocks (Algorithmus) auf eine andere Instanz (z. B. vom Fahrzeug auf die Werkstatt) kann beispielsweise aufgrund mangelnder Ressourcen durchgeführt haben. Dazu kann die Garage eine kompatible Laufzeitumgebung vorhalten, um den Dienst ausführen zu können.The transfer of a service, i.e. a calculation function block (algorithm) to another instance (e.g. from the vehicle to the workshop) may have been carried out due to a lack of resources, for example. For this purpose, the garage can provide a compatible runtime environment in order to be able to run the service.

Um Datensicherheit zu gewährleisten, wenn Anwendungen/Dienste auf anderen Instanzen/Recheneinheiten transferiert werden, kann Verschlüsselung eingesetzt werden, so dass die Rechen-Funktionsblöcke und/oder die Laufzeitumgebungen keine vertraulichen Daten weitergeben. Dabei kann eine zweiteilige Umsetzung gewählt werden, indem die Funktionslogik und die Daten (die privat sein können) separat gehandhabt werden.To ensure data security when applications/services are transferred to other instances/computing units, encryption can be used so that the computing function blocks and/or the runtime environments do not pass on any confidential data. Thereby can a two-part implementation can be chosen by handling the functional logic and the data (which may be private) separately.

Das vorgestellte Konzept kann beispielsweise für Kombi-Dienstleistungen verwendet werden. Im Beispiel einer Parkgarage kann die Parkgarage beispielsweise elektrische Energie zum Laden für das Fahrzeug bereitstellen. Zusätzlich kann die Parkgarage Rechenressourcen zur Ausführung von Rechen-Funktionsblocks des Fahrzeugs bereitstellen, oder aber, die Rechenkapazität des Rechen-Funktionsblocks des Fahrzeugs nutzen. Bei der Nutzung von Rechenleistung (mit Zahlungen) kann ein Rabatt für die elektrische Leistung gewährt werden. Dies ermöglicht es, eigene Ressourcen anbieten (z.B. Rechenleistung, wenn sie nicht genutzt wird) und etwas zurückbekommenThe concept presented can be used for combined services, for example. In the example of a parking garage, the parking garage can provide electrical energy for charging the vehicle, for example. In addition, the parking garage can provide computing resources for executing computing function blocks of the vehicle, or use the computing capacity of the computing function block of the vehicle. When using computing power (with payments), a discount for electrical power can be granted. This allows you to offer your own resources (e.g. computing power when not in use) and get something in return

Auch abgesehen von dem Szenario einer Parkgarage können die Rechen-Ressourcen des eigenen Fahrzeugs angeboten werden, wenn der Ladezustand ausreichend ist und es nicht genutzt wird, auf der Grundlage von GegenseitigkeitAlso apart from the scenario of a parking garage, the computing resources of one's own vehicle can be offered when the state of charge is sufficient and it is not used, on the basis of reciprocity

Die Aspekte und Merkmale, die im Zusammenhang mit einem bestimmten der vorherigen Beispiele beschrieben sind, können auch mit einem oder mehreren der weiteren Beispiele kombiniert werden, um ein identisches oder ähnliches Merkmal dieses weiteren Beispiels zu ersetzen oder um das Merkmal in das weitere Beispiel zusätzlich einzuführen.The aspects and features described in connection with a certain of the previous examples can also be combined with one or more of the further examples in order to replace an identical or similar feature of this further example or to additionally introduce the feature into the further example .

Beispiele können weiterhin ein (Computer-)Programm mit einem Programmcode zum Ausführen eines oder mehrerer der obigen Verfahren sein oder sich darauf beziehen, wenn das Programm auf einem Computer, einem Prozessor oder einer sonstigen programmierbaren Hardwarekomponente ausgeführt wird. Schritte, Operationen oder Prozesse von verschiedenen der oben beschriebenen Verfahren können also auch durch programmierte Computer, Prozessoren oder sonstige programmierbare Hardwarekomponenten ausgeführt werden. Beispiele können auch Programmspeichervorrichtungen, z. B. Digitaldatenspeichermedien, abdecken, die maschinen-, prozessor- oder computerlesbar sind und maschinenausführbare, prozessorausführbare oder computerausführbare Programme und Anweisungen codieren beziehungsweise enthalten. Die Programmspeichervorrichtungen können z. B. Digitalspeicher, magnetische Speichermedien wie beispielsweise Magnetplatten und Magnetbänder, Festplattenlaufwerke oder optisch lesbare Digitaldatenspeichermedien umfassen oder sein. Weitere Beispiele können auch Computer, Prozessoren, Steuereinheiten, (feld-)programmierbare Logik-Arrays ((F)PLAs = (Field) Programmable Logic Arrays),(feld-)programmierbare Gate-Arrays ((F)PGA = (Field) Programmable Gate Arrays), Grafikprozessoren (GPU = Graphics Processor Unit), anwendungsspezifische integrierte Schaltungen (ASIC = application-specific integrated circuit), integrierte Schaltungen (IC= Integrated Circuit) oder Ein-Chip-Systeme (SoC = System-on-a-Chip) abdecken, die zum Ausführen der Schritte der oben beschriebenen Verfahren programmiert sind.Examples may further include or relate to a (computer) program having program code for performing one or more of the above methods when the program is executed on a computer, processor or other programmable hardware component. Thus, steps, operations, or processes of various methods described above may also be performed by programmed computers, processors, or other programmable hardware components. Examples may also include program storage devices, e.g. digital data storage media, which is machine, processor or computer readable and which encodes or incorporates machine executable, processor executable or computer executable programs and instructions. The program storage devices may e.g. B. include or be digital storage, magnetic storage media such as magnetic disks and magnetic tapes, hard drives or optically readable digital data storage media. Further examples can also be computers, processors, control units, (field) programmable logic arrays ((F)PLAs = (Field) Programmable Logic Arrays), (field) programmable gate arrays ((F)PGA = (Field) Programmable Gate arrays), graphics processors (GPU = graphics processor unit), application-specific integrated circuits (ASIC = application-specific integrated circuit), integrated circuits (IC = integrated circuit) or single-chip systems (SoC = system-on-a-chip). ) that are programmed to perform the steps of the above procedures.

Es versteht sich ferner, dass die Offenbarung mehrerer, in der Beschreibung oder den Ansprüchen offenbarter Schritte, Prozesse, Operationen oder Funktionen nicht als zwingend in der beschriebenen Reihenfolge befindlich ausgelegt werden soll, sofern dies nicht im Einzelfall explizit angegeben oder aus technischen Gründen zwingend erforderlich ist. Daher wird durch die vorhergehende Beschreibung die Durchführung von mehreren Schritten oder Funktionen nicht auf eine bestimmte Reihenfolge begrenzt. Ferner kann bei weiteren Beispielen ein einzelner Schritt, eine einzelne Funktion, ein einzelner Prozess oder eine einzelne Operation mehrere Teilschritte, -funktionen, -prozesse oder -operationen einschließen und/oder in dieselben aufgebrochen werden.It is further understood that disclosure of a plurality of steps, processes, operations, or functions disclosed in the specification or claims should not be construed as necessarily being in the order described, unless expressly stated in an individual case or is compellingly necessary for technical reasons . Therefore, the foregoing description is not intended to limit the performance of any number of steps or functions to any particular order. Further, in other examples, a single step, function, process, or operation may include and/or be broken into multiple sub-steps, functions, processes, or operations.

Wenn einige Aspekte in den vorhergehenden Abschnitten im Zusammenhang mit einer Vorrichtung oder einem System beschrieben wurden, sind diese Aspekte auch als eine Beschreibung des entsprechenden Verfahrens zu verstehen. Dabei kann beispielsweise ein Block, eine Vorrichtung oder ein funktionaler Aspekt der Vorrichtung oder des Systems einem Merkmal, etwa einem Verfahrensschritt, des entsprechenden Verfahrens entsprechen. Entsprechend dazu sind Aspekte, die im Zusammenhang mit einem Verfahren beschrieben werden, auch als eine Beschreibung eines entsprechenden Blocks, eines entsprechenden Elements, einer Eigenschaft oder eines funktionalen Merkmals einer entsprechenden Vorrichtung oder eines entsprechenden Systems zu verstehen.If some aspects have been described in the preceding paragraphs in the context of a device or a system, these aspects are also to be understood as a description of the corresponding method. For example, a block, a device or a functional aspect of the device or the system can correspond to a feature, such as a method step, of the corresponding method. Correspondingly, aspects described in connection with a method are also to be understood as a description of a corresponding block, element, property or functional feature of a corresponding device or system.

Die folgenden Ansprüche werden hiermit in die detaillierte Beschreibung aufgenommen, wobei jeder Anspruch als getrenntes Beispiel für sich stehen kann. Ferner ist zu beachten, dass - obwohl ein abhängiger Anspruch sich in den Ansprüchen auf eine bestimmte Kombination mit einem oder mehreren anderen Ansprüchen bezieht - andere Beispiele auch eine Kombination des abhängigen Anspruchs mit dem Gegenstand jedes anderen abhängigen oder unabhängigen Anspruchs umfassen können. Solche Kombinationen werden hiermit explizit vorgeschlagen, sofern nicht im Einzelfall angegeben ist, dass eine bestimmte Kombination nicht beabsichtigt ist. Ferner sollen auch Merkmale eines Anspruchs für jeden anderen unabhängigen Anspruch eingeschlossen sein, selbst wenn dieser Anspruch nicht direkt als abhängig von diesem anderen unabhängigen Anspruch definiert ist.The following claims are hereby incorporated into the Detailed Description, with each claim being able to stand on its own as a separate example. It should also be noted that although a dependent claim in the claims refers to a particular combination with one or more other claims, other examples may also include a combination of the dependent claim with the subject-matter of any other dependent or independent claim. Such combinations are hereby explicitly proposed, unless it is stated in individual cases that a specific combination is not intended. Furthermore, features of a claim are also intended to be included for any other independent claim, even if that claim is not directly defined as dependent on that other independent claim.

Claims (15)

Steuervorrichtung (10) für eine Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken (20) auf eine Mehrzahl von Recheneinheiten (30) eines Fahrzeugs, die Steuervorrichtung umfassend: Zumindest eine Schnittstelle (12), ausgebildet zur Kommunikation mit der Mehrzahl von Recheneinheiten; und Ein oder mehrere Prozessoren (14), ausgebildet zum: Ermitteln der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs, Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, und Transferieren der Ausführung eines Rechen-Funktionsblocks von einer ersten Recheneinheit (30a) der Mehrzahl von Recheneinheiten zu einer zweiten Recheneinheit (30b) der Mehrzahl von Recheneinheiten, sofern dies durch die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, angezeigt ist, wobei die Rechen-Funktionsblöcke davon abhängen, welche Fahrzeugfunktionen zu diesem Zeitpunkt aktiv sind, und wobei zusätzlich jeweilige auszuführende Rechen-Funktionsblöcke von anderen Fahrzeugen oder von anderen Recheneinheiten außerhalb des Fahrzeugs stammen, wobei diese Rechen-Funktionsblöcke zusätzlich zu den Rechen-Funktionsblöcken, die Fahrzeugfunktionen, die derzeit aktiv sind, bereitstellen, berücksichtigt werden.Control device (10) for a distribution of a plurality of computing function blocks (20) to a plurality of computing units (30) of a vehicle, the control device comprising: At least one interface (12) designed for communication with the plurality of computing units; and One or more processors (14) configured to: Determining the computing function blocks of the vehicle currently to be executed, selecting which computing function block is to be executed on which computing unit, and Transferring the execution of a computing function block from a first computing unit (30a) of the plurality of computing units to a second computing unit (30b) of the plurality of computing units, if this is indicated by the selection of which computing function block is to be executed on which computing unit, wherein the arithmetic function blocks depend on which vehicle functions are active at this point in time, and in addition respective arithmetic function blocks to be executed come from other vehicles or from other arithmetic units outside the vehicle, these arithmetic function blocks in addition to the arithmetic function blocks, the vehicle functions, that are currently active, provide, are taken into account. Die Steuervorrichtung gemäß Anspruch 1, wobei jeder Rechen-Funktionsblock ausgebildet ist, um als Container innerhalb einer Laufzeitumgebung (32) ausgeführt zu werden.The control device according to claim 1 , wherein each computing function block is designed to be executed as a container within a runtime environment (32). Die Steuervorrichtung gemäß Anspruch 2, wobei das Transferieren der Ausführung eines Rechen-Funktionsblocks das Transferieren der Ausführung des Containers von einer Laufzeitumgebung (32a) der ersten Recheneinheit zu einer Laufzeitumgebung (32b) der zweiten Recheneinheit umfasst.The control device according to claim 2 , wherein transferring the execution of a computing function block comprises transferring the execution of the container from a runtime environment (32a) of the first computing unit to a runtime environment (32b) of the second computing unit. Die Steuervorrichtung gemäß Anspruch 2, wobei das Transferieren der Ausführung eines Rechen-Funktionsblocks das Transferieren der Laufzeitumgebung (32) mit dem Container von der ersten Recheneinheit zu der zweiten Recheneinheit umfasst.The control device according to claim 2 , wherein transferring the execution of a computing function block comprises transferring the runtime environment (32) with the container from the first computing unit to the second computing unit. Die Steuervorrichtung gemäß Anspruch 4, wobei die zu transferierende Laufzeitumgebung mehrere auszuführende Container umfasst.The control device according to claim 4 , where the runtime environment to be transferred comprises several containers to be executed. Die Steuervorrichtung gemäß einem der Ansprüche 1 bis 5, wobei das Auswählen, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, eine Lastverteilung anstrebt.The control device according to one of Claims 1 until 5 , wherein the selection of which computing function block is to be executed on which computing unit strives for load balancing. Die Steuervorrichtung gemäß einem der Ansprüche 1 bis 6, wobei das Transferieren der Ausführung des Rechen-Funktionsblocks ein Transferieren von Laufzeitdaten des Rechen-Funktionsblocks umfasst.The control device according to one of Claims 1 until 6 , wherein transferring execution of the computing function block comprises transferring runtime data of the computing function block. Das System gemäß einem der Ansprüche 1 bis 7, wobei die Mehrzahl von Recheneinheiten ferner ein oder mehrere Recheneinheiten umfasst, die außerhalb des Fahrzeugs angeordnet sind.The system according to one of Claims 1 until 7 , wherein the plurality of computing units further comprises one or more computing units located outside of the vehicle. Ein System für ein Fahrzeug, das System umfassend die Steuervorrichtung (10) gemäß einem der vorherigen Ansprüche und die Mehrzahl von Recheneinheiten (30) des Fahrzeugs.A system for a vehicle, the system comprising the control device (10) according to any one of the preceding claims and the plurality of computing units (30) of the vehicle. Das System gemäß Anspruch 9, wobei jeder Rechen-Funktionsblock ausgebildet ist, um als Container innerhalb einer Laufzeitumgebung ausgeführt zu werden, wobei jede Recheneinheit ausgebildet ist, eine Laufzeitumgebung für die Ausführung von Containern bereitzustellen.The system according to claim 9 , each computing function block being designed to be executed as a container within a runtime environment, each computing unit being designed to provide a runtime environment for running containers. Das System gemäß Anspruch 10, wobei jede Recheneinheit ausgebildet ist, der Laufzeitumgebung zumindest eine erste Schnittstelle zur Kommunikation mit Sensorik und Aktuatorik bereitzustellen, und/oder wobei jede Recheneinheit ausgebildet ist, der Laufzeitumgebung ferner eine zweite Schnittstelle zur Kommunikation über ein Kommunikationsnetzwerk und/oder eine dritte Schnittstelle zum Zugriff auf Ressourcen der Recheneinheit bereitzustellen.The system according to claim 10 , with each processing unit being designed to provide the runtime environment with at least a first interface for communication with sensors and actuators, and/or with each processing unit being designed to provide the runtime environment with a second interface for communication via a communication network and/or a third interface for accessing Provide resources of the computing unit. Das System gemäß Anspruch 11, wobei eine erste Recheneinheit ausgebildet ist, um die Kommunikation mit Sensorik und Aktuatorik, die über die erste Schnittstelle der ersten Recheneinheit bereitgestellt wird, einer zweiten Recheneinheit über die zweite Schnittstelle bereitzustellen, so dass die Laufzeitumgebung der zweiten Recheneinheit Zugriff auf die Sensorik und Aktuatorik, die über die erste Schnittstelle der ersten Recheneinheit bereitgestellt wird, erhält.The system according to claim 11 , wherein a first arithmetic unit is designed to provide the communication with sensors and actuators, which is provided via the first interface of the first arithmetic unit, to a second arithmetic unit via the second interface, so that the runtime environment of the second arithmetic unit has access to the sensors and actuators, which is provided via the first interface of the first computing unit receives. Das System gemäß einem der Ansprüche 9 bis 12, wobei die erste Schnittstelle, die zweite Schnittstelle und/oder die dritte Schnittstelle eine Abstraktion der physikalischen Schnittstellen der jeweiligen Recheneinheit bereitstellen, so dass die erste Schnittstelle, die zweite Schnittstelle und/oder die dritte Schnittstelle für die Laufzeitumgebung auf jeder Recheneinheit einheitlich ansprechbar sind.The system according to one of claims 9 until 12 , wherein the first interface, the second interface and/or the third interface provide an abstraction of the physical interfaces of the respective computing unit, so that the first interface, the second interface and/or the third interface can be addressed uniformly for the runtime environment on each computing unit. Steuerverfahren für die Verteilung von einer Mehrzahl von Rechen-Funktionsblöcken auf eine Mehrzahl von Recheneinheiten eines Fahrzeugs, das Verfahren umfassend: Ermitteln (110) der derzeit auszuführenden Rechen-Funktionsblöcke des Fahrzeugs; Auswählen (120), welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist; und Transferieren (130) der Ausführung eines Rechen-Funktionsblocks von einer ersten Recheneinheit der Mehrzahl von Recheneinheiten zu einer zweiten Recheneinheit der Mehrzahl von Recheneinheiten, sofern dies durch die Auswahl, welcher Rechen-Funktionsblock auf welcher Recheneinheit auszuführen ist, angezeigt ist, wobei die Rechen-Funktionsblöcke davon abhängen, welche Fahrzeugfunktionen zu diesem Zeitpunkt aktiv sind, und wobei zusätzlich jeweilige auszuführende Rechen-Funktionsblöcke von anderen Fahrzeugen oder von anderen Recheneinheiten außerhalb des Fahrzeugs stammen, wobei diese Rechen-Funktionsblöcke zusätzlich zu den Rechen-Funktionsblöcken, die Fahrzeugfunktionen, die derzeit aktiv sind, bereitstellen, berücksichtigt werden.Control method for the distribution of a plurality of computing function blocks to a plurality of computing units of a vehicle, the method comprising: determining (110) the computational function blocks of the vehicle currently to be executed; selecting (120) which computational function block is to be executed on which computational unit; and transferring (130) the execution of a computing function block from a first computing unit of the plurality of computing units to a second computing unit of the plurality of computing units if this is indicated by the selection of which computing function block is to be executed on which computing unit, the computing -Function blocks depend on which vehicle functions are active at this time, and in addition, respective calculation function blocks to be executed come from other vehicles or from other calculation units outside the vehicle, these calculation function blocks in addition to the calculation function blocks, the vehicle functions that are currently are active, provide, are taken into account. Programm mit einem Programmcode zum Durchführen des Verfahrens gemäß Anspruch 14, wenn der Programmcode auf einem Computer, einem Prozessor, einem Kontrollmodul oder einer programmierbaren Hardwarekomponente ausgeführt wird.Program with a program code for performing the method according to Claim 14 , when the program code is executed on a computer, processor, control module or programmable hardware component.
DE102021123358.5A 2021-09-09 2021-09-09 Control device, control method and computer program for distributing computing function blocks to computing units in a vehicle Active DE102021123358B3 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102021123358.5A DE102021123358B3 (en) 2021-09-09 2021-09-09 Control device, control method and computer program for distributing computing function blocks to computing units in a vehicle

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021123358.5A DE102021123358B3 (en) 2021-09-09 2021-09-09 Control device, control method and computer program for distributing computing function blocks to computing units in a vehicle

Publications (1)

Publication Number Publication Date
DE102021123358B3 true DE102021123358B3 (en) 2022-10-20

Family

ID=83447356

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021123358.5A Active DE102021123358B3 (en) 2021-09-09 2021-09-09 Control device, control method and computer program for distributing computing function blocks to computing units in a vehicle

Country Status (1)

Country Link
DE (1) DE102021123358B3 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115755810A (en) * 2022-11-24 2023-03-07 中电科普天科技股份有限公司 Distributed control device based on cooperative control
CN116527711A (en) * 2023-04-28 2023-08-01 中国第一汽车股份有限公司 Communication method, device, storage medium and vehicle of vehicle Ethernet
DE102023102009A1 (en) 2023-01-27 2024-08-01 Cariad Se Method for outsourcing data processing tasks by a motor vehicle, motor vehicle, device (edge node) and system of edge nodes and motor vehicles

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120159523A1 (en) 2010-12-17 2012-06-21 Microsoft Corporation Multi-tenant, high-density container service for hosting stateful and stateless middleware components
US20180136931A1 (en) 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US20180137306A1 (en) 2016-11-17 2018-05-17 International Business Machines Corporation Container update system
US20190042321A1 (en) 2017-08-04 2019-02-07 Unisys Corporation Elastic container management system
DE102020109191A1 (en) 2019-04-02 2020-10-08 Aptiv Technologies Limited SAFE BOOTING VEHICLE PROCESSORS
US20210044647A1 (en) 2019-10-16 2021-02-11 Alipay (Hangzhou) Information Technology Co., Ltd. Implementing a blockchain-based web service
US20210117242A1 (en) 2020-10-03 2021-04-22 Intel Corporation Infrastructure processing unit
US11113090B1 (en) 2017-08-09 2021-09-07 United Services Automobile Association (Usaa) Systems and methods for container management
DE112020000558T5 (en) 2019-05-09 2021-12-02 International Business Machines Corporation DYNAMIC CHANGING AN INSULATION OF A CONTAINERIZED WORKLOAD IN RESPONSE TO A DETERMINATION OF A RELEVANT FACTOR

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120159523A1 (en) 2010-12-17 2012-06-21 Microsoft Corporation Multi-tenant, high-density container service for hosting stateful and stateless middleware components
US20180136931A1 (en) 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US20180137306A1 (en) 2016-11-17 2018-05-17 International Business Machines Corporation Container update system
US20190042321A1 (en) 2017-08-04 2019-02-07 Unisys Corporation Elastic container management system
US11113090B1 (en) 2017-08-09 2021-09-07 United Services Automobile Association (Usaa) Systems and methods for container management
DE102020109191A1 (en) 2019-04-02 2020-10-08 Aptiv Technologies Limited SAFE BOOTING VEHICLE PROCESSORS
DE112020000558T5 (en) 2019-05-09 2021-12-02 International Business Machines Corporation DYNAMIC CHANGING AN INSULATION OF A CONTAINERIZED WORKLOAD IN RESPONSE TO A DETERMINATION OF A RELEVANT FACTOR
US20210044647A1 (en) 2019-10-16 2021-02-11 Alipay (Hangzhou) Information Technology Co., Ltd. Implementing a blockchain-based web service
US20210117242A1 (en) 2020-10-03 2021-04-22 Intel Corporation Infrastructure processing unit

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115755810A (en) * 2022-11-24 2023-03-07 中电科普天科技股份有限公司 Distributed control device based on cooperative control
DE102023102009A1 (en) 2023-01-27 2024-08-01 Cariad Se Method for outsourcing data processing tasks by a motor vehicle, motor vehicle, device (edge node) and system of edge nodes and motor vehicles
CN116527711A (en) * 2023-04-28 2023-08-01 中国第一汽车股份有限公司 Communication method, device, storage medium and vehicle of vehicle Ethernet

Similar Documents

Publication Publication Date Title
DE102021123358B3 (en) Control device, control method and computer program for distributing computing function blocks to computing units in a vehicle
DE69327448T2 (en) Method and device for subtasks in a distributed processing system
DE112012004747B4 (en) Hidden automated data mirroring for native interfaces in distributed virtual machines
DE102020127705A1 (en) TECHNIQUES FOR EFFICIENT FABRIC-ATTACHED STORAGE
DE112010003554T5 (en) Symmetrical direct migration of virtual machines
DE112012000693B4 (en) Running multiple instances of an application
DE112007001135T5 (en) Sharing data through partitions in a partitionable system
DE112010004784T5 (en) Efficient loading of data into the memory of a computer system
DE112013000656T5 (en) System and method for reducing memory usage by optimally placing virtual machines in a virtualized data center
DE69818103T2 (en) CALLING MECHANISM FOR STATIC AND DYNAMICALLY LINKED FUNCTIONS IN AN OBJECT-ORIENTED CONTROL UNIT USING HETEROGENEOUS DEVELOPMENT ENVIRONMENTS
DE112011100323T5 (en) Cross-architecture migration of virtual machines
DE112016003249T5 (en) Deployment Deployment Container Deployment
DE112009000411T5 (en) Method and system for implementing a virtual storage pool in a virtual environment
DE112020004651B4 (en) MULTI-TENANT ETL RESOURCE SHARING
DE202008016892U1 (en) Motor vehicle control device
DE112018005898T5 (en) DYNAMIC PROVISION OF SOFTWARE FUNCTIONS
DE112011101929T5 (en) Enable control of a hypervisor in a cloud computing environment
DE112012004247T5 (en) Passively monitoring virtual systems using extensible indexing
DE102021130092A1 (en) SYSTEM FOR PARALLEL PROCESSING OF APPLICATION ALGORITHMS FOR MIDDLEWARE NODES USING THREADS
DE102013209643A1 (en) Mechanism for optimized message exchange data transfer between nodelets within a tile
DE112020002785T5 (en) PROCESSES FOR A CONTAINER-BASED VIRTUALIZATION SYSTEM
DE102018213428A1 (en) Techniques for reducing accelerator memory access costs in multi-channel platforms
DE112021003348T5 (en) MANAGE DATA TRANSFER BETWEEN MICROSERVICES
DE112023003440T5 (en) INTELLIGENT PROCESS MANAGEMENT IN CLOUD ENVIRONMENTS FOR SERVERLESS WORKFLOWS
DE112021005394T5 (en) TAG-DRIVEN PLANNING OF COMPUTING RESOURCES FOR FUNCTIONAL EXECUTION

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R026 Opposition filed against patent
R081 Change of applicant/patentee

Owner name: CARIAD SE, DE

Free format text: FORMER OWNER: VOLKSWAGEN AKTIENGESELLSCHAFT, 38440 WOLFSBURG, DE