Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MODEL CALCULATION UNIT AND CONTROL DEVICE FOR CALCULATING A MULTI-LAYER PERCEPTRON MODEL
Document Type and Number:
WIPO Patent Application WO/2018/046418
Kind Code:
A1
Abstract:
The invention relates to a model calculation unit (22) for calculating a multi-layer perceptron model, wherein the model calculation unit (22) is configured in hardware and is hardwired, comprising: a computation core (18) configured to calculate one or more output variables of a neuron layer of the multi-layer perceptron model having a number of neurons (20) as a function of one or more input variables of an input variable vector (ut); a memory (12), which has a configuration memory area (121) for each neuron layer for storing configuration parameters in a respective configuration memory section (A), and a data storage area (122) for storing the input variables of the input variable vector and the one or more output variables (y[j]) in a respective data storage section (D); a DMA unit (17) configured to consecutively instruct the computation core (18) to calculate in each case a neuron layer based on the configuration parameters of a respective configuration memory section (A) and the respective input variables of the input variable vectors (ut) thus defined, and to store the respective output variables (y[j]) resulting therefrom in a data storage section (D) of the data storage area (122) defined by the corresponding configuration parameters. From successively considered configuration storage sections (A), the configuration parameters specify a data storage section (D) for the resulting output variables, which corresponds to the data storage section (D) for the input variables for calculating a subsequent neuron layer.

Inventors:
MARKERT HEINER (DE)
GUNTORO ANDRE (DE)
Application Number:
PCT/EP2017/072046
Publication Date:
March 15, 2018
Filing Date:
September 04, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BOSCH GMBH ROBERT (DE)
International Classes:
G06N3/063; F02P5/15; G05B13/04; G06F15/78; G06N7/00
Foreign References:
DE29521338U11997-03-20
Other References:
EPPLER W ET AL: "High speed neural network chip for trigger purposes in high energy physics", DESIGN, AUTOMATION AND TEST IN EUROPE, 1998., PROCEEDINGS PARIS, FRANCE 23-26 FEB. 1998, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 23 February 1998 (1998-02-23), pages 108 - 115, XP010268412, ISBN: 978-0-8186-8359-6, DOI: 10.1109/DATE.1998.655844
RICHARD FIIFI TURKSON ET AL: "Artificial neural network applications in the calibration of spark-ignition engines: An overview", ENGINEERING SCIENCE AND TECHNOLOGY, AN INTERNATIONAL JOURNAL, vol. 19, no. 3, 16 April 2016 (2016-04-16), pages 1346 - 1359, XP055420859, ISSN: 2215-0986, DOI: 10.1016/j.jestch.2016.03.003
KEUNTAK YANG ET AL: "A Multi-Layer Perceptron SoC for Smart Devices", COMPUTER SCIENCE AND ENGINEERING, vol. 2, no. 7, 7 January 2013 (2013-01-07), pages 133 - 137, XP055303611, ISSN: 2163-1484, DOI: 10.5923/j.computer.20120207.02
TIANSHI CHEN ET AL: "DianNao", ARCHITECTURAL SUPPORT FOR PROGRAMMING LANGUAGES AND OPERATING SYSTEMS, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, 24 February 2014 (2014-02-24), pages 269 - 284, XP058044553, ISBN: 978-1-4503-2305-5, DOI: 10.1145/2541940.2541967
Download PDF:
Claims:
Ansprüche

1 . Modellberechnungseinheit (22) zur Berechnung eines mehrschichtigen Perzept- ronenmodells, wobei die Modellberechnungseinheit (22) in Hardware ausgebildet und fest verdrahtet ist, umfassend:

einen Rechenkern (18), der ausgebildet ist, um eine oder mehrere Ausgangsgrößen (y j]) einer Neuronenschicht des mehrschichtigen Perzeptro- nenmodells mit einer Anzahl von Neuronen (20) abhängig von einer oder mehreren Eingangsgrößen eines Eingangsgrößenvektors (ut) zu berechnen;

einen Speicher (12), der für jede Neuronenschicht einen Konfigurationsspeicherbereich (121 ) zum Speichern von Konfigurationsparametern in einem jeweiligen Konfigurationsspeicherabschnitt (A) und einen Datenspeicherbereich (122) zum Speichern der Eingangsgrößen des Eingangsgrößenvektors und der einen oder der mehreren Ausgangsgrößen (y j]) in einem jeweiligen Datenspeicherabschnitt (D) aufweist;

eine DMA-Einheit (17), die ausgebildet ist, um den Rechenkern (18) nacheinander anzuweisen, jeweils eine Neuronenschicht basierend auf den Konfigurationsparametern eines jeweiligen Konfigurationsspeicherabschnitts (A) und den dadurch definierten Eingangsgrößen des Eingangsgrößenvektors (ut) zu berechnen und die jeweils resultierenden Ausgangsgrößen (y j]) in einen durch die entsprechenden Konfigurationsparameter definierten Datenspeicherabschnitt (D) des Datenspeicherbereichs (122) zu speichern.

2. Modellberechnungseinheit (22) nach Anspruch 1 , wobei die Konfigurationsparameter von aufeinanderfolgend berücksichtigten Konfigurationsspeicherabschnitten (A) einen Datenspeicherabschnitt (D) für die resultierenden Ausgangsgrößen angeben, der dem Datenspeicherabschnitt (D) für die Eingangsgrößen für die Berechnung einer darauffolgenden Neuronenschicht entspricht.

3. Modellberechnungseinheit (22) nach Anspruch 1 oder 2, wobei die DMA-Einheit (17) ausgebildet ist, um nach Abschluss der Berechnung der Neuronenschicht, die Konfigurationsparameter für eine nächste der Neuronenschichten dem Rechenkern (18) bereitzustellen, wobei die Berechnung abhängig von einem oder mehreren Konfigurationsparameter beendet wird.

4. Modellberechnungseinheit (22) nach einem der Ansprüche 1 bis 3, wobei der Rechenkern (18) ausgebildet ist, um das Ende der aktuellen Berechnung der Neuronenschicht an die DMA-Einheit (17) oder nach extern zu signalisieren, wobei die DMA-Einheit (17) die Berechnung der nächsten Neuronenschicht basierend auf in einem weiteren Konfigurationsspeicherabschnitt (A) gespeicherten Konfigurationsparameter startet.

5. Modellberechnungseinheit (22) nach einem der Ansprüche 1 bis 4, wobei der Rechenkern (18) ausgebildet ist, um für eine Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einer Anzahl von Neuronen (20) abhängig von einer oder mehreren Eingangsgrößen eines Eingangsgrößenvektors (ut), von einer Gewichtungsmatrix mit Gewichtungsfaktoren {vj k) und einen für jedes Neuron (20) vorgegebenen Offsetwert eine Ausgangsgröße (y j]) für jedes Neuron (20) zu berechnen, wobei für jedes Neuron (20) eine Summe der mit einem durch das Neuron (20) und die Eingangsgröße bestimmten Gewichtungsfaktor (Vj k) gewichteten Werte der Eingangsgrößen mit dem dem Neuron (20) vorgegebenen Offsetwert beaufschlagt wird und das Ergebnis mit einer Aktivierungsfunktion (act) transformiert wird, um die Ausgangsgröße (y j]) für das Neuron (20) zu erhalten.

6. Modellberechnungseinheit (22) nach einem der Ansprüche 1 bis 5, wobei der Rechenkern (18) in einem Flächenbereich eines integrierten Bausteins ausgebildet ist.

7. Steuergerät (2) mit einem Mikroprozessor (21 ) und einer oder mehreren Modellberechnungseinheiten (22) nach einem der Ansprüche 1 bis 6.

8. Steuergerät (2) nach Anspruch 7, wobei das Steuergerät (2) als eine integrierte Schaltung ausgebildet ist.

9. Verwendung des Steuergeräts (2) nach Anspruch 7 oder 8 als ein Steuergerät (2) zur Steuerung eines Motorsystems (1 ) in einem Kraftfahrzeug.

Description:
Beschreibung Titel

Modellberechnungseinheit und Steuergerät zur Berechnung eines mehrschichtigen Perzeptronenmodells

Technisches Gebiet

Die Erfindung betrifft die Berechnung von Funktionsmodellen in einer separaten hartverdrahteten Modellberechnungseinheit, insbesondere zur Berechnung von mehrschichtigen Perzeptronenmodellen.

Technischer Hintergrund

Funktionen von Steuerungen von technischen Systemen, wie z.B. Verbrennungsmotoren, Elektroantrieben, Batteriespeicher und dergleichen, werden häufig mit Modellen realisiert, die ein mathematisches Abbild des realen Systems darstellen. Jedoch mangelt es bei physikalischen Modellen, insbesondere bei komplexen Zusammenhängen, an der erforderlichen Berechnungsgenauigkeit, und es ist bei heutigen Rechenkapazitäten in der Regel schwierig, derartige Modelle innerhalb der für ein Steuergerät geforderten Echtzeitanforderungen zu berechnen. Für solche Fälle ist angedacht, datenbasierte Modelle zu verwenden, die Zusammenhänge zwischen einer Ausgangsgröße und Eingangsgrößen ausschließlich auf der Basis von mit Hilfe eines Prüfstands oder dergleichen erhaltenen Trainingsdaten beschreiben.

Insbesondere eignen sich datenbasierte Modelle zum Modellieren von komplexen Zusammenhängen, bei denen mehrere Eingangsgrößen, zwischen denen Wechselbeziehungen bestehen, in geeigneter Weise in dem Modell berücksich- tigt werden. Zudem bietet die Modellierung mit Hilfe von datenbasierten Modellen die Möglichkeit, das Modell durch Hinzufügen von einzelnen Eingangsgrößen zu ergänzen.

Datenbasierte Funktionsmodelle basieren in der Regel auf einer großen Anzahl von Stützstellen, um eine für die jeweilige Anwendung ausreichende Modellierungsgenauigkeit zu erreichen. Aufgrund der hohen Anzahl der Stützstellen wird zur Berechnung eines Modellwertes mit einem datenbasierten Funktionsmodell, wie beispielsweise einem Gauß-Prozess-Modell oder einem mehrschichtigen Perzeptronenmodell, eine hohe Rechenkapazität benötigt. Um ein derartiges datenbasiertes Funktionsmodell in einer Steuergeräteanwendung in Echtzeit berechnen zu können, können daher auf einer Hardwareausgestaltung basierende Modellberechnungseinheiten vorgesehen sein.

Offenbarung der Erfindung

Erfindungsgemäß sind eine Modellberechnungseinheit zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells gemäß Anspruch 1 sowie ein Steuergerät und eine Verwendung des Steuergeräts nach einem der nebengeordneten Ansprüche vorgesehen.

Weitere Ausgestaltungen sind in den abhängigen Ansprüchen angegeben.

Gemäß einem ersten Aspekt ist eine Modellberechnungseinheit zur Berechnung eines mehrschichtigen Perzeptronenmodells vorgesehen, wobei die Modellberechnungseinheit in Hardware ausgebildet und fest verdrahtet ist, umfassend: einen Rechenkern, der ausgebildet ist, um eine oder mehrere Ausgangsgrößen einer Neuronenschicht des mehrschichtigen Perzeptronenmodells mit einer Anzahl von Neuronen abhängig von einer oder mehreren Eingangsgrößen eines Eingangsgrößenvektors zu berechnen;

einen Speicher, der für jede Neuronenschicht einen Konfigurationsspeicherbereich zum Speichern von Konfigurationsparametern in einem jeweiligen Konfigurationsspeicherabschnitt und einen Datenspeicherbereich zum Speichern der Eingangsgrößen des Eingangsgrößenvektors und der einen oder der mehreren Ausgangsgrößen in einem jeweiligen Speicherabschnitt aufweist;

eine DMA-Einheit, die ausgebildet ist, um den Rechenkern nacheinander anzuweisen, jeweils eine Neuronenschicht basierend auf den Konfigurationsparametern eines jeweiligen Konfigurationsspeicherabschnitts und den dadurch definierten Eingangsgrößen des Eingangsgrößenvektors zu berechnen und die jeweils resultierenden Ausgangsgrößen in einen durch die entsprechenden Konfigurationsparameter definierten Datenspeicherabschnitt des Datenspeicherbereichs zu speichern, wobei die Konfigurationsparameter von aufeinanderfolgend berücksichtigten Konfigurationsspeicherabschnitten einen Datenspeicherbereich für die resultierenden Ausgangsgrößen angeben, der dem Datenspeicherbereich für die Eingangsgrößen für die Berechnung der darauffolgenden Neuronenschicht entspricht.

Die obige Modellberechnungseinheit sieht eine Ausgestaltung vor, die es ermöglicht, mehrere Neuronenschichten eines mehrschichtigen Perzeptronenmodells (MLP-Modells) als Teil eines datenbasierten Modells mit jeweils einer variablen Anzahl von Neuronen zu berechnen. Die Verwendung von mehrschichtigen Perzeptronenmodellen stellt eine datenbasierte Modellierung mit einer geringeren Anzahl von Stützstellenpunkten dar als bei vergleichbaren datenbasierten Modellen, wie beispielsweise einem Gauß-Prozess-Modell.

Eine Idee der obigen Modellberechnungseinheit besteht darin, diese zur Berechnung einer Schicht eines mehrschichtigen Perzeptronenmodells in Hardwarestrukturen separat in einem Rechenkern in einem Steuergerät auszubilden. Auf diese Weise kann eine im Wesentlichen fest verdrahtete Hardwareschaltung zur Realisierung von Funktionen bereitgestellt werden, die es ermöglicht, eine oder mehrere Schichten eines mehrschichtigen Perzeptronenmodells zu berechnen und dabei nur eine sehr geringe Rechenlast in einem softwaregesteuerten Mikroprozessor eines Steuergeräts zu bewirken. Durch die Hardwarebeschleunigung, die durch die Modellberechnungseinheit bereitgestellt wird, kann ein mehrschichtiges Perzeptronenmodell in Echtzeit berechnet werden, so dass die Verwendung eines solchen Modells für Steuergeräteanwendungen für Verbrennungsmotoren in Kraftfahrzeugen interessant wird. Die obige in Hardware ausgebildete Modellberechnungseinheit ermöglicht eine automatische, nacheinander stattfindende Berechnung von mehreren Neuronen- schichten eines mehrschichtigen Perzeptronenmodells in einem Rechenkern in einem Steuergerät. Durch die Auslagerung einer Berechnung eines mehrschichtigen Perzeptronenmodells in eine Modellberechnungseinheit, die hartverdrahtet ausgebildet ist, ist es möglich, die Kommunikation zwischen einem Mikroprozessor und der Modellberechnungseinheit zur Berechnung eines mehrschichtigen Perzeptronenmodells möglichst zu reduzieren und so den Zeitaufwand für die Berechnung eines Modellwertes zu minimieren.

Bei der Berechnung eines Modellwerts für ein mehrschichtiges Perzeptronenmo- dell werden in der Regel schichtweise Berechnungen ausgeführt, wobei eine Eingangsgröße eines Eingangsgrößenvektors einer ersten Neuronenschicht zugeführt wird und durch die Berechnung der ersten Neuronenschicht Zwischenausgangsgrößen eines Zwischenausgangsgrößenvektors erhalten werden, die wiederum als Zwischeneingangsgrößen für eine nachgeordnete Neuronenschicht des Perzeptronenmodells dienen.

Entsprechend der Anzahl der Neuronenschichten des Perzeptronenmodells werden diese Berechnungen nacheinander durchgeführt, um als Ergebnis einer letzten Neuronenschicht den Modellwert zu erhalten. Dazu ist eine Speicherstruktur vorgesehen, die gemeinsam mit einer DMA-Einheit eine Steuerung des Berechnungsablaufs vornehmen kann.

Durch Vorsehen eines Datenspeicherbereichs mit jeweiligen Abschnitten zum Speichern von Eingangsgrößen des Eingangsgrößenvektors und von Zwischeneingangsgrößen eines Zwischeneingangsgrößenvektors für weitere nachfolgende Neuronenschichten kann eine automatische Berechnung des Modellwerts in der Modellberechnungseinheit ohne weiteren Kopierprozess vorgesehen werden. Dies erfolgt so, dass die Ausgangsgrößen der Ausgangsgrößenvektoren jeder Neuronenschicht, abgesehen von der letzten Neuronenschicht, jeweils in den Abschnitt des Datenspeicherbereichs zum Speichern der Zwischeneingangsgrößen der jeweils nächsten zu berechnenden Neuronenschicht gespeichert werden. Durch erneutes Aktivieren der Berechnung einer entsprechenden Neuro- nenschicht in dem Rechenkern durch die DMA-Einheit kann so eine vorgegebene Anzahl von Neuronenschichten des mehrschichtigen Perzeptronenmodells automatisch berechnet werden.

Insbesondere kann ein Konfigurationsspeicherbereich vorgesehen, der den Ablauf der Berechnung konfiguriert und es ermöglicht, eine Anzahl von Neuronenschichten und eine vorgebbare Anzahl von Neuronen für jede Neuronenschicht zu parametrisieren und deren Berechnungsreihenfolge festzulegen. Weiterhin sieht der Rechenkern vor, ein Datenspeicherbereich, aus dem Eingangsgrößen eines Eingangsgrößenvektors gelesen und Ausgangsgrößen eines Ausgangsgrößenvektors einer Neuronenschicht geschrieben werden, so zu adressieren, dass Ausgangsgrößen einer Berechnung einer Neuronenschicht als Zwischeneingangsgrößen für eine nachfolgende Neuronenschicht umdefiniert werden. Dadurch kann durch automatisches Starten einer erneuten Berechnung einer Neuronenschicht ein Ablauf einer mehrschichtigen Berechnung des Perzeptronenmodells durch eine geeignete Parametrisierung in dem Konfigurationsspeicherbereich des Speichers des Rechenkerns vorgesehen werden. Auf diese Weise ist es möglich, einem Rechenkern eine Aufgabe zur Berechnung eines mehrschichtigen Perzeptronenmodells von einem Mikroprozessor vorzugeben und ohne weitere Eingriffe durch den Mikroprozessor einen Modellwert als Ausgangswert des mehrschichtigen Perzeptronenmodells von dem Mikroprozessor nach Beendigung der Berechnung abzurufen bzw. zu empfangen.

Weiterhin kann vorgesehen sein, dass die DMA-Einheit ausgebildet ist, um nach Abschluss der Berechnung der Neuronenschicht, die Konfigurationsparameter für die nächste Neuronenschicht dem Rechenkern bereitzustellen, wobei die Berechnung abhängig von einem oder mehreren Konfigurationsparametern beendet wird.

Gemäß einer Ausführungsform kann der Rechenkern ausgebildet sein, um das Ende der aktuellen Berechnung der Neuronenschicht an die DMA-Einheit zu signalisieren, wobei die DMA-Einheit die Berechnung der nächsten Neuronenschicht basierend auf in einem weiteren Konfigurationsspeicherabschnitt gespeicherten Konfigurationsparameter startet. Weiterhin kann der Rechenkern ausgebildet sein, um für eine Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einer Anzahl von Neuronen abhängig von einer oder mehreren Eingangsgrößen eines Eingangsgrößenvektors, von einer Gewichtungsmatrix mit Gewichtungsfaktoren und einen für jedes Neuron vorgegebenen Offsetwert eine Ausgangsgröße für jedes Neuron zu berechnen, wobei für jedes Neuron eine Summe der mit jeweils einem Gewichtungsfaktor gewichteten Werte der Eingangsgrößen mit dem dem Neuron vorgegebenen Offsetwert beaufschlagt wird und das Ergebnis mit einer Aktivierungsfunktion transformiert wird, um die Ausgangsgröße für das Neuron zu erhalten, wobei der Gewichtungsfaktor durch das Neuron und die Eingangsgröße definiert bzw. bestimmt ist.

Gemäß einer Ausführungsform kann der Rechenkern in einem Flächenbereich eines integrierten Bausteins ausgebildet sein.

Gemäß einem weiteren Aspekt ist ein Steuergerät mit einem Mikroprozessor und einer oder mehreren der obigen Modellberechnungseinheiten vorgesehen, wobei das Steuergerät insbesondere als eine integrierte Schaltung ausgebildet ist.

Gemäß einem weiteren Aspekt ist eine Verwendung des obigen Steuergeräts als ein Steuergerät zur Steuerung eines Motorsystems mit einem Verbrennungsmotor und/oder mit einem Elektroantrieb und/oder eines elektrischen Energiespeichers in einem Kraftfahrzeug vorgesehen.

Kurzbeschreibung der Zeichnungen

Ausführungsformen werden nachfolgend anhand der beigefügten Zeichnungen näher erläutert. Es zeigen:

Figur 1 eine schematische Darstellung eines Steuergeräts zum Einsatz für ein Motorsystem in einem Kraftfahrzeug;

Figur 2 eine schematische Darstellung einer Berechnungseinheit als

Teil des Steuergeräts; Figur 3 eine schematische Darstellung einer Neuronenschicht eines

MLP-Modells; und

Figuren 4a-4d Darstellungen von möglichen Aktivierungsfunktionen;

Figur 5 einen Konfigurationsspeicherabschnitt eines Konfigurationsspeicherbereichs des Rechenkerns;

Figuren 6a und 6b eine Aufteilung eines Konfigurationsspeicherbereichs und eines Datenspeicherbereichs; und

Figur 7 ein Flussablaufdiagramm zur Darstellung der Funktion der

DMA-Einheit der Modellberechnungseinheit.

Beschreibung von Ausführungsformen

Figur 1 zeigt beispielhaft eine schematische Darstellung eines Steuergeräts 2 für ein Motorsystem 1 mit einem Verbrennungsmotor 3 als ein Beispiel für ein zu steuerndes technisches System. Das Steuergerät 2 umfasst einen Mikroprozessor 21 und eine Modellberechnungseinheit 22, die als separate Bauteile oder in integrierter Weise in separaten Flächenbereichen auf einem Chip ausgebildet sein können. Insbesondere stellt die Modellberechnungseinheit 22 eine Hardwareschaltung dar, die strukturell von einem Rechenkern des Mikroprozessors 21 getrennt sein kann.

Die Modellberechnungseinheit 22 ist im Wesentlichen hartverdrahtet und dementsprechend nicht wie der Mikroprozessor 21 dazu ausgebildet, einen Softwarecode auszuführen und dadurch eine variable durch Software vorgegebene Funktion auszuführen. Mit anderen Worten ist in der Modellberechnungseinheit 22 kein Prozessor vorgesehen, so dass diese nicht durch einen Softwarecode betreibbar ist. Durch die Fokussierung auf eine vorgegebene Modellfunktion wird eine ressourcenoptimierte Realisierung einer solchen Modellberechnungseinheit 22 ermöglicht. In integrierter Aufbauweise kann die Modellberechnungseinheit 22 flächenoptimiert realisiert werden, die zudem schnelle Berechnungen ermöglicht.

Das Steuergerät 2 dient im Wesentlichen dazu, Sensorsignale S bzw. Sensorgrößen, die von einer Sensorik in dem Verbrennungsmotor 3 erfasst werden, und/oder externe Vorgaben V zu verarbeiten und zyklisch in fest vorgegebenen Zeitabständen von z.B. 1 - 100ms oder Winkelsynchron in Abhängigkeit zu einem Kurbelwellenwinkel eines betriebenen Verbrennungsmotors, Werte von einer o- der mehreren entsprechenden Ansteuergrößen A an den Verbrennungsmotor 3 anzulegen, so dass dieser in an sich bekannter Weise betreibbar ist.

In Figur 2 ist eine Modellberechnungseinheit 22 ausführlicher dargestellt. Die Modellberechnungseinheit 22 umfasst eine Zustandsmaschine 1 1 , einen Speicher 12 und einen oder mehrere Operationsblöcke, die beispielsweise einen oder mehrere MAC-Blöcke 13 (MAC: Multiply-ACcumulate für Festkomma- Berechnung oder FMA: Fused-Multiply-Add für Gleitkomma-Berechnung) und einen Aktivierungsfunktion-Berechnungsblock 14 zur Berechnung einer Aktivierungsfunktion sowie optional einen Addierblock 15 und/oder einen Multiplikationsblock 16. Mit Hilfe der Zustandsmaschine 1 1 können in einem Datenspeicherbereich 122 (Eingangsgrößenspeicherbereich) in dem Speicher 12 abgelegte Werte von Eingangsgrößen durch wiederholte Schleifenberechnungen verrechnet werden, um Zwischengrößen bzw. Ausgangsgrößen zu erhalten, die in einen entsprechenden Ausgangsgrößenspeicherbereich des Speichers 12 geschrieben werden.

Die Steuerung der Berechnung kann mithilfe einer DMA-Einheit 17 (DMA: Direct Memory Access) vorgenommen werden.

Die Zustandsmaschine 1 1 ist so ausgelegt, um eine einzelne Neuronenschicht eines mehrschichtigen Perzeptronenmodells zu berechnen. Die Zustandsmaschine 1 1 kann anhand des nachfolgenden Pseudocodes beschrieben werden:

/* Eingangstransformation */

for (k=0; k<p7; k++) {

ut[k] = u[k]*pl[k] + p2[k]; }

/* Schleifenberechnung */

for (j=p8; j<p6; j++) {

i = j * p7;

t = P3[j];

for (k=0; k<p7; k++) {

t += V[i+k] * ut[k];

}

y[j] = act(t);

}

/* Ausgangstransformation */

for (k=0; k<p6; k++) {

z[k] = y[k] * p4[k] + p5[k];

}

Mit

p7: maximaler Indexwert für die Eingangsgrößen des Eingangsgrößenvektors

p8: minimaler Indexwert bzw. Anfangswert für die Berechnung der Neuronen der aktuellen Neuronenschicht

p6: maximaler Indexwert für die Neuronen der aktuellen Neuronenschicht p3: Offsetwert

p1 , p2: Variablen für die Eingangstransformation

p4, p5: Variablen für die Ausgangstransformation

Mit Hilfe des obigen Pseudocodes lässt sich folgende Berechnung für jedes Neuron der zu berechnenden Neuronenschicht durchführen: y J] = act( P 3\j] + " Mt M) für j=0...p6-1

Dieses stellt eine Berechnung für eine Neuronenschicht eines mehrschichtigen Perzeptronenmodells dar, wie es in Figur 3 dargestellt ist.

Figur 3 zeigt eine Neuronenschicht von mehreren Neuronen 20, denen Werte von Eingangsgrößen eines Eingangsgrößenvektors uto ... ut P 6-i zugeführt werden. Die Werte der Eingangsgrößen werden mit Hilfe einer entsprechenden vorgegebenen Gewichtungsmatrix aus Gewichtungsfaktoren vo... 7-i,o... P 6-i gewichtet. Die Gewichtung erfolgt in der Regel durch multiplikatives Beaufschlagen mit den zugeordneten Gewichtungsfaktoren vo... 7-i,o... 6-i . Die Gewichtungsfaktoren können allgemein die Werte des Eingangsgrößenvektors auch in anderer Weise beaufschlagen.

Das Ergebnis der Summe der gewichteten Werte des Eingangsgrößenvektors uto ... ut P 6-i wird mit einem Offsetwert Oo ... 0 6-i beaufschlagt, insbesondere additiv beaufschlagt. Das Ergebnis wird mit einer vorgegebenen Aktivierungsfunktion „act" transformiert. Als Ergebnis erhält man einen entsprechenden Wert eines Ausgangsgrößenvektors yo ... y 6-i . Durch das Vorsehen des Offsetwerts für jedes Neuron besteht ein weiterer Freiheitsgrad für die Modellbildung.

Durch Festlegen der Laufvariablen p6 kann die Anzahl der Neuronen 20 der zu berechnenden Neuronenschicht eingestellt werden. Ein mehrschichtiges Perzept- ronenmodell kann durch Verwenden der Werte des Ausgangsgrößenvektors yo ... y P 6-i einer Neuronenschicht als Eingangsgrößenvektor für eine Berechnung einer nachfolgenden Neuronenschicht in der Modellberechnungseinheit 22 verwendet werden, so dass die Anzahl der Neuronenschicht des mehrschichtigen Perzeptronenmodells durch wiederholtes Aufrufen der Funktion gemäß dem obigen Pseudocode bzw. durch wiederholtes Aufrufen der Modellberechnungseinheit 22 mit entsprechend geänderten Parametern realisiert werden kann.

Es kann eine Eingangs- und/oder Ausgangstransformation der Eingangsgrößen des Eingangsgrößenvektors bzw. der Ausgangsgrößen des Ausgangsgrößenvektors mithilfe der für jedes Neuron vorgegebenen Normierungsvariablen p1 und p2 bzw. p4 und p5 vorgenommen werden. Diese Eingangs- und/oder Ausgangstransformation der Eingangsgrößen kann auch übersprungen werden.

Die schichtweise Berechnung des MLP-Modells ermöglicht eine schlanke Ausgestaltung der Modellberechnungseinheit 22, so dass deren Flächenbedarf in integrierter Bauweise gering ist. Trotzdem ermöglicht die Modellberechnungseinheit 22 eine Berechnung eines mehrschichtigen Perzeptronenmodells in einfacher Weise durch Rückführung oder Umdefinition der Werte der Ausgangsgrößen des Ausgangsgrößenvektors als Eingangsgrößen eines Eingangsgrößenvektors für die Berechnung einer weiteren Neuronenschicht. Als Aktivierungsfunktion„act" kann eine von mehreren Aktivierungsfunktionen zur Verfügung gestellt werden, die durch den Aktivierungsfunktion-Berechnungsblock 14 der Modellberechnungseinheit 22 berechnet werden kann. Die Aktivierungsfunktionen können beispielsweise eine Knickfunktion, eine Tangens- Hyberbolicus-Funktion, eine Sigmoidfunktion oder eine lineare Funktion verwendet werden, wie sie in den Figuren 4a bis 4d entsprechend dargestellt sind.

Durch die einschichtige Ausbildung des Neuronenmodells, das durch den obigen Pseudocode realisiert wird, ist es zudem möglich, durch einfache Modifikation neben einer Neuronenschicht eines MLP-Modells auch ein Gauß-Prozess-Modell bzw. ein RBF-Modell (RBF: Radiale Basisfunktion) zu berechnen. Dazu werden die Gewichtungswerte nicht multiplikativ auf die Werte der Eingangsgröße beaufschlagt, sondern additiv bzw. subtraktiv. Weiterhin wird der quadratische Abstand gerechnet, der mit vorgegebenen Längenskalen L[k] gewichtet ist. Weiterhin wird für das RBF-Modell als Aktivierungsfunktion eine Exponentialfunktion gewählt. Somit lässt sich ein Gauß-Prozess-Modell entsprechend y = Y^vm expi- ΣΖο 1 L W + "tM) 2 ) durch eine Modifikation des Pseudocodes wahlweise wie folgt berechnen.

/* Eingangstransformation */

for (k=0; k<p7; k++) {

ut[k] = u[k]*pl[k] + p2[k];

}

/* Schleifenberechnung */

for (j=p8; j<p6; j++) {

i = j * p7;

t = ( c "fg_ m lp) ? p3[j] : 0.0f; // Offsetwerte für Berechnung des Perzept modells

for (k=0; k<p7; k++) {

if (cfg_mlp) {

t += V[i+k] * ut[k];

}

eise {

d = V[i+k] - ut[k];

d = d * d;

t += L[k] * d;

}

}

if (cfg_mlp) {

switch (cfg_activation_function) {

case 1: e = (t>=0.0f) ? t : 0.0f; // Knickfunktion

break;

case 2: // Sigmoid-Funktion

e = sigmoid(t);

break;

case 3: // tanh-Funktion

e = tanh(t);

break;

default: // lineare Funktion

e = t;

}

y[j] = e;

}

eise { // für Gaussprozessmodell/RBF-Modell

e = exp(-t);

y[0] += p3[j] * e;

/* Ausgangstransformation */

j = (cfg_mlp) ? p6 : 1;

for (k=0; k<j; k++) {

z[k] = y[k] * p4[k] + P 5[k];

}

Man erkennt, dass bei der Durchführung der Schleifenfunktion durch die Variable cfg_mlp eine Fallunterscheidung durchgeführt werden kann. Bei cfg_mlp=1 wird die Berechnung der Neuronenschicht gewählt und es kann mit cfg_activation_function =0...3 die Art der oben beschriebenen Aktivierungsfunktionen ausgewählt werden.

Bei cfg_mlp=0 wird ein Gaußprozessmodell oder ein RBF-Modell berechnet. Hier ist eine Auswahl der Aktivierungsfunktion nicht notwendig, da diese stets mit der Exponentialfunktion gerechnet werden. Auf diese Weise ist es möglich, die Modellberechnungseinheit 22 sowohl für die Berechnung von Gauß-Prozess- Modellen, RBF-Modellen als auch für die Berechnung einer Neuronenschicht eines MLP-Modells zu verwenden und dabei einen nur geringen Flächenbedarf in integrierter Bauweise der Zustandsmaschine zu benötigen.

Der Speicher 12 der Modellberechnungseinheit 22 weist einen Konfigurationsspeicherbereich 121 auf, der Konfigurationsparameter für eine vorgegebene Anzahl von Neuronenschichten in jeweiligen Konfigurationsspeicherabschnitten A speichern kann. Der Konfigurationsspeicherbereich 121 kann Teil eines Hauptspeichers des Steuergeräts sein, auf den sowohl von dem Mikroprozessor 21 als auch von der Modellberechnungseinheit 22 zugegriffen bzw. benutzt werden kann. Alternativ können die Konfigurationsspeicherabschnitte A auch in einem separaten Flash-Speicher oder in einem für den Rechenkern 18 exklusiven Speicher vorgesehen sein.

Die Konfigurationsspeicherabschnitte A weisen einzelne Speicheradressen auf, in den die Konfigurationsparameter der Modelberechnungseinheit 22 entsprechend einer vorgegebenen Reihenfolge gespeichert werden, wie es in Figur 5 beispielhaft dargestellt ist. Zur Verwendung der einzelnen Konfigurationsspeicherabschnitte A werden die dort gespeicherten Werte für die Berechnung einer Neuronenschicht mit Hilfe der DMA-Einheit 17 in dafür vorgesehene Register des Rechenkerns 18 kopiert. Der Kopiervorgang kann ohne Zutun des Mikrocontrol- lers oder des Rechenkerns 18 erfolgen sondern wird automatisch durch die DMA-Einheit 17 ausgeführt.

Die Adresspositionen Reg1 bis RegP des jeweiligen Konfigurationsspeicherabschnitts A umfassen Parameter für die Durchführung einer Berechnung in der betreffenden Neuronenschicht, der der Konfigurationsspeicherabschnitt A des Konfigurationsspeicherbereichs 121 zugeordnet ist. Beispielsweise können die Konfigurationsspeicherpositionen Reg1 bis RegP die Parameter p1 bis p8 entsprechend dem obigen Pseudocode speichern sowie, insbesondere über entsprechende Adresszeiger, speichern, in welchen Datenspeicherabschnitten (durch Angabe einer entsprechenden Startadresse definierte Adressbereiche) des Datenspeicherbereichs 122 die für die betreffende (aktuell zu berechnende) Neuronenschicht relevanten Eingangsgrößen des Eingangsgrößenvektors bzw. Zwischeneingangsgrößen des Zwischeneingangsgrößenvektors, die Gewichtungsfaktoren der Gewichtungsmatrix, die Offset-Werte des Offsetvektors gespeichert sind.

Der Datenspeicherbereich 122 kann in einem Hauptspeicher des Steuergeräts oder in einem exklusiv der Modellberechnungseinheit 22 zugeordneten Speicher vorgesehen sein. Weiterhin kann einer der Konfigurationsparameter Reg1 bis RegP eine Startadresse für einen Datenspeicherabschnitt zum Speichern der jeweiligen Ausgangsgrößen des resultierenden Ausgangsgrößenvektors angeben, die als Ergebnis der Berechnung in der Neuronenschicht erhalten werden. Die Verwendung von Adresszeigern hat Vorteile, da die Dimensionen der Modellpa- rameter, des Eingangsgrößenvektors und des Ausgangsgrößenvektors variabel sind.

Weiterhin kann der Konfigurationsspeicherbereich 121 eine Adressposition zum Speichern einer Berechnungsstartinformation RegCtrl vorsehen, das bei Einschreiben eines bestimmten Datums die Berechnung der aktuellen (d.h. der dem jeweiligen Konfigurationsspeicherabschnitt zugeordneten) Neuronenschicht startet.

Weiterhin kann ein separater Statusregisterspeicherbereich R eine oder mehrere Adresspositionen RegR01 bis RegROQ zum Lesen von Statusinformationen aufweisen. Die Statusinformationen können Rückmeldungen von der Berechnung der jeweiligen Neuronenschicht des Perzeptronenmodells angeben. Die Statusinformationen können beispielsweise eine Information über einen Rechenzustand der Modellberechnungseinheit 22 (idle/busy), über einen Berechnungsfortschritt (Position der Berechnung des Pseudo-Codes in der Zustandsmaschine, z.B. Berechnung der Eingangstransformation, der Hauptschleife, usw.), der Gültigkeit der Parameters (Inkorrekte Adresszeiger, falsche/nicht-unterstützte Werte (z.B. INFinity oder Not-a-Number in float)) und dergleichen aufweisen.

Weiterhin können ungenutzte Speicheradressen in jedem Konfigurationsspeicherabschnitt A vorgesehen sein, um der blockweisen Bearbeitung von Konfigurationsspeicherabschnitten A durch die DMA-Einheit 17 Rechnung zu tragen.

In Figur 6a ist die Anordnung von mehreren Konfigurationsspeicherabschnitten A in dem Konfigurationsspeicherbereich 121 dargestellt, in dem die Konfigurationsparameter in aufeinanderfolgenden Konfigurationsspeicherabschnitten A abgelegt sind, wie in Figur 6a dargestellt ist. Dort ist eine Anordnung von N Konfigurationsspeicherabschnitten mit Konfigurationsparametern für N Neuronenschichten MLP1 ...MLPN vorgegeben. Da sich die Anzahl der Konfigurationsparameter für jede Neuronenschicht nicht ändert, sind die Konfigurationsspeicherabschnitte A vorzugsweise mit jeweils gleicher Größe vorgesehen.

Einige der Konfigurationsparameter sind als Adresszeiger vorgesehen und mit , * " gekennzeichnet. Wie in Figur 6b dargestellt, zeigen die Adresszeiger auf Startad- ressen von Datenspeicherabschnitte des Datenspeicherbereichs 122 z.B. im Hauptspeicher des Steuergeräts, aus dem zur Berechnung der betreffenden Neuronenschicht die Eingangsgrößen des Eingangsgrößenvektors bzw. die Zwischeneingangsgrößen des Zwischeneingangsgrößenvektors (z.B. MLP1_Reg1 * , MLP2_Reg1 * usw.), Gewichtungsfaktoren aus der Gewichtungsmatrix, der Offset-Werte des Offset-Vektors abgerufen werden. Weiterhin zeigt einer der Adresszeiger auf einen Datenspeicherabschnitt für das Speichern von resultierenden Ausgangsgrößen des Ausgangsgrößenvektors bzw. (bei Vorhandensein einer nachfolgend zu berechnenden Neuronenschicht) von resultierenden Zwischenausgangsgrößen des Zwischenausgangsgrößenvektors (z.B. MLP1_Reg2 * , MLP2_Reg2 * usw.). Durch die geeignete Parametrisierung der Konfigurationsparameter in aufeinanderfolgenden Konfigurationsspeicherabschnitten A ist vorzugsweise vorzusehen, dass die Startadresse des Datenspeicherabschnitts D zum Speichern des Ausgangsgrößenvektors einer Neuronenschicht der Startadresse des Datenspeicherabschnitts zum Speichern des Eingangsgrößenvektors bzw. Zwischeneingangsgrößenvektors einer nachfolgenden Neuronenschicht entspricht.

Die Datenspeicherabschnitte des Datenspeicherbereichs 122 für die Eingangsund Ausgangsgrößen sind für jede Neuronenschicht mit einer vorgegebenen Anzahl von Adresspositionen in Datenspeicherabschnitten D vorgegeben, die eine entsprechende Anzahl von Neuronen der entsprechende Neuronenschicht des Perzeptronenmodells vorgeben. Die Startadressen der Eingangsgrößenvektors und der Ausgangsgrößenvektors der einzelne Neuronenschicht werden nach Granularität des Speicherzugriffs partitioniert. Dadurch können ein oder mehrere nicht genutzte Datenspeicheradressbereiche entstehen, wie es beispielhaft in Figur 6b dargestellt ist. Die nicht genutzten Datenspeicheradressbereiche können beispielsweise dann auftreten, wenn der Adresszeiger nur„Page"-weise adressieren kann, z.B. in Blöcken zu 8 oder 16 Bytes.

Somit muss der Mikroprozessor lediglich die DMA-Einheit 17 initialisieren, um nacheinander die mehreren Neuronenschichten des Perzeptronenmodells zu berechnen, ohne eine entsprechende Programmablaufkontrolle durch den Mikroprozessor zu erhalten. Die Ablaufsteuerung durch aufeinander folgende Aufrufe der Berechnung einer Neuronenschicht erfolgt durch die DMA-Einheit 17. Aus Figur 7 ist ein Flussablaufdiagramm dargestellt, das die Steuerung der Modellberechnungseinheit durch die DMA-Einheit 17 darstellt. Zu Beginn wird eine Konfiguration durch den Mikroprozessor vorgenommen, bei der entsprechende Modellparameter, d.h. die Werte der Eingangsgrößen der ersten Neuronen- schicht in einen zugeordneten Datenspeicherabschnitt D des Datenspeicherbereichs 122 geschrieben werden. Andere Teile der Modellparameter wie z.B. mehreren Konfigurationsspeicherabschnitte A, wie in Figur 6a dargestellt ist, die in jeweiligen Datenspeicherabschnitten gespeicherten Modellparameter wie z.B. Gewichtungsmatrizen und Offsetwerte für jede einzelne Neuronenschicht separat beinhaltet sind, sind typischerweise vorab bereitgestellt (offline, während der Ge- nerierungsphase des MLP-Modells). Je nach Bedarf können die Konfigurationsspeicherabschnitte A für die verschiedenen Neuronenschichten (MLP1 -MLPN) auch wahrend Laufzeit generiert oder geändert werden. Die Werte der Gewichtungsmatrizen und Offsetwerte für jede einzelne Neuronenschicht sind wiederum immer offline vorbereitet (z.B. in Flash). Es ist auch möglich, dass diese Parameter von Flash auf den jeweils zugewiesenen Datenspeicherabschnitt D kopiert werden, um die Berechnungsgeschwindigkeit zu erhöhen.

In Schritt S1 wird die DMA-Einheit 17 durch den MikroController für einen Multip- le-Copy-Transfer z.B. mit inkrementierten Quelladressen des Konfigurationsspeicherbereichs mit den Registern des Rechenkerns 18 als Kopierziel konfiguriert. Dadurch erfährt die DMA-Einheit 17 die Anzahl der vorzunehmenden Kopiervorgänge für den jeweiligen Konfigurationsspeicherabschnitt A und auch die Anzahl der Kopiervorgänge des gesamten MLP-Modells (=Anzahl der MLP Neuronenschichten). Anschließend signalisiert die DMA-Einheit 17 dem Rechenkern 18, die Berechnung zu starten, z.B. indem die Berechnungsstartinformation RegCtrl vom Konfigurationsspeicherbereich 121 an die entsprechende Adressposition/Register für den Rechenkern 18 geschrieben wird.

Die DMA-Einheit 17 startet den ersten Kopiervorgang des ersten Konfigurationsparameterabschnitts A auf die Register der Berechnungseinheit und startet anschließend die Berechnung mit der Berechnung der ersten Neuronenschicht in Schritt S2 basierend auf der ersten Neuronenschicht zugeordneten Konfigurationsparametern (MLP1_Reg1 - MLP1_RegP, RegCtrl). Die Adresszeiger der Kon- figurationsparameter geben die Datenspeicherabschnitte D an, aus denen die Eingangsgrößen des Eingangsgrößenvektors, die Gewichtungsfaktoren aus der Gewichtungsmatrix und die Offset-Werte des Offset-Vektors entnommen werden sollen, um die Ausgangsgrößen des Ausgangsgrößenvektors der ersten Neuronenschicht zu berechnen.

Nach Berechnen der Ausgangsgrößen der ersten Neuronenschicht befinden sich diese in einem entsprechenden Ausgangsgrößen-Speicherblock, der von der DMA-Einheit 17 basierend auf den Konfigurationsparametern für die erste Neuronenschicht in einem entsprechenden Datenspeicherabschnitt D des Datenspeicherbereichs 122 gespeichert wird.

In Schritt S3 signalisiert der Rechenkern 18 der DMA-Einheit 17, dass die Berechnung der ersten Neuronenschicht abgeschlossen ist. Dies kann dadurch erreicht werden, dass der Rechenkern 18 durch entsprechende Konfigurationsparameter einen Interrupt zur DMA-Einheit 17 veranlasst. Für die Berechnung einer weiteren Neuronenschicht werden die Ausgangsgrößen aus der Berechnung der ersten Neuronenschicht als Zwischeneingangsgrößen für die Berechnung der nächsten Neuronenschicht angenommen, indem die DMA-Einheit 17 die Konfigurationsparameter aus den der weiteren Neuronenschicht zugeordneten Konfigurationsspeicherabschnitten A des Konfigurationsspeicherbereichs 121 in Register der Berechnungseinheit übergibt und ggfs. die Gewichtungsfaktoren der Gewichtungsmatrix sowie die Offset-Werte des Offsetvektors in durch die Adresszeiger unter den Konfigurationsparametern angezeigte Datenspeicherabschnitte D speichert sofern diese dort nicht zuvor gespeichert wurden. Anschließend wird die Berechnung in Schritt S4 gestartet.

Das Verfahren der Schritte S3 und S4 wiederholt sich für jede weitere Neuronenschicht, z.B. bis die anfänglich vorgegebene Anzahl von zu kopierenden Konfigurationsspeicherabschnitte erreicht ist. Ein entsprechender Konfigurationsparameter für die Berechnung der letzten Neuronenschicht definiert den Interruptaufruf des Rechenkerns 18, indem der Rechenkern 18 einen Interrupt direkt an den Mikroprozessor veranlasst. Der Rechenkern signalisiert dann ein entsprechendes Interrupt-Signal an den Mikroprozessor, der daraufhin den Modellwert abruft oder in sonstiger Weise empfängt. Alternativ kann die Modellberechnungseinheit 22 das Interrupt-Signal an die DMA-Einheit melden, und die DMA-Einheit 17 meldet das Interrupt-Signal an den MikroController weiter (chained Interrupts).

Der Konfigurationsspeicherbereich 121 kann auch Konfigurationsparameter mit entsprechenden Verweisen auf Datenspeicherabschnitte D für die Berechnung benötigten Daten aufweisen. Dazu kann nach Beenden der Berechnung eines Perzeptronenmodells die Berechnung einer neuen ersten Neuronenschicht eines zweiten Perzeptronenmodells vorgenommen werden. Dazu ist es lediglich notwendig, die Adressposition, in die der Modellwert als Ausgangsgröße der letzten Neuronenschicht des ersten Perzeptronenmodells gespeichert wird, nicht Teil der Eingangsgrößen der ersten Neuronenschicht des zweiten Perzeptronenmodells ist.