-
Der Erfindung liegt die Aufgabe zugrunde, einen SIMD-Prozessor zur Beschleunigung von Algorithmen zur Mustererkennung und künstlichen Intelligenz in einem Computersystem zu konstruieren.
-
Herkömmliche Computersysteme bestehen aus einem oder mehreren Prozessoren (CPU), welche Einzelbefehle ausführen und dabei auch mehrere Recheneinheiten nach dem SIMD - Single Instruction Multiple Data - Konzept parallel ansteuern können. Deren Auswahl kann per Befehl oder auch teil-automatisiert superskalar anhand einer Befehlsfolge erfolgen. Zu den Details wird auf Giloi, W. (1993), Rechnerarchitektur, und auf Shen P. & Lipasti M. (2005), Modern Processor Design, verwiesen. Weitere Zusammenfassungen des Standes der Technik finden sich in
US5765011A , in
US7925861B2 sowie in
EP0360527B1 .
-
Für gewöhnliche Computerprogramme ist diese Technik extrem ausgereift, es ist mittlerweile auf dem Schreibtisch eine Rechenleistung verfügbar, die vor einem Jahrzehnt noch Hallen als Supercomputer gefüllt hat.
-
Allerdings haben Computer dieser Bauart erhebliche Probleme, zeitkritische Aufgaben der Mustererkennung und künstlichen Intelligenz bei Vorliegen großer Datenmengen auszuführen. Dies betrifft viele Aufgaben, die dem Menschen und selbst Tieren leicht fallen, auf einem Computer aber nur mit sehr hohem Aufwand realisiert werden können.
-
Derartige Algorithmen der Mustererkennung werden nach dem Stand der Technik als massivparallele Rechenoperationen ausgeführt, z.B. indem ein neuronales Netz durch eine Verkettung von Matrixoperationen und nichtlinearen Bewertungen der Ergebnisse simuliert wird. Dies kann auf einem klassischen skalaren Prozessor langsam, auf einem Prozessor mit SIMD Instruktionen beschleunigt und mit Spezialhardware zur Unterstützung von Matrixoperationen noch schneller ausgeführt werden.
-
Ein Beispiel für derartige Spezialhardware ist der „TensorFlow Processing Unit“ Baustein von der Firma Google, wie er z.B. in
US20160342889A1 und
WO2016186823A1 beschrieben ist.
-
Allerdings wächst die elektrische Leistungsaufnahme des Prozessors um so mehr, je schneller die Spezialhardware diese Operationen ausführt. Da mit der Leistungsaufnahme auch eine entsprechende Wärmeabgabe einhergeht, sind irgendwann physikalische Grenzen erreicht.
-
Besonders eindrücklich wird dieses Problem bei Aufgabenstellungen der künstlichen Intelligenz wie dem autonomen Fahren sichtbar, bei denen eben die Anwesenheit des Prozessors im Fahrzeug und nicht in einem entfernten Rechenzentrum mit einer Vielzahl an Servern erforderlich ist, denn das Fahrzeug kann für die Rechenvorgänge nur eine bestimmte elektrische Leistung und auch nur einen bestimmten Bauraum bereitstellen.
-
Demzufolge wird die „Intelligenz“ aktueller Computersysteme zur Führung autonomer Fahrzeuge in Fachkreisen als gering angesehen und es kam bei ersten Tests mit diesen auch schon zu tragischen Unfällen, die bei besserer autonomer Fahrzeugführung vermeidbar gewesen wären.
-
Die Natur liefert mit dem menschlichen Gehirn ein Vorbild, dass die z.B. für die Führung eines Fahrzeugs nötige Rechenleistung zur Mustererkennung und die nötige Intelligenz auch mit weit weniger Leistungsaufnahme realisierbar sind.
-
Ein Problem der aktuellen Ansätze zur künstlichen Intelligenz und zu „Big Data“ ist, dass auch noch so sinnlose Rechenoperationen stur ausgeführt werden, weil die implementierten Algorithmen dies vorschreiben. Im Gegensatz dazu liefern natürliche Neuronen zumeist nur dann Aktivierungspotentiale mit höherer Frequenz, wenn sie zum benötigten Ergebnis etwas beizutragen haben. Ansonsten bleiben sie inaktiv und sparen so im Bereich der Natrium-Kalium-Pumpen erheblich Energie.
-
Es stellt sich demnach die Aufgabe, wie man dieses erwünschte Verhalten, dass auch in der Simulation eines neuronalen Netzes auf einem Prozessor nur solche Rechenoperationen ausgeführt werden, die auch tatsächlich sinnvoll sind, auf einer schnellen Hardware abbilden kann.
-
Bisherige Ansätze nutzen die Nachbildung von Spiking Neural Networks. Wenn z.B. für ein Neuron eine bestimmte Summe überschritten wird, erzeugt dieses ein Spike-Ereignis. Der Zeitpunkt des Ereignisses wird dokumentiert und es wird entsprechend an andere Neuronen weitergeleitet. Die technische Nachbildung eines solchen neuronalen Netzes wurde bereit im Jahr 1991 in
DE4105669C2 vom selben Erfinder beschrieben.
-
Die Realisierung lief bisher weitgehend programmgesteuert, die Überschreitung des Grenzwerts führt über eine „if“-Klausel in einer Hochsprache zu bedingten Sprungbefehlen im Maschinencode und damit zur Ausführung der nötigen Rechenoperationen.
-
Es gibt auch Ansätze, die Problematik der Fallunterscheidungen durch inhaltsadressierbare Speicher zu lösen, vergleiche
DE102005036605B4 desselben Erfinders. Dies ändert aber nichts daran, dass hier primär eine für diese Aufgabenstellung nachteilige sequentielle Ausführung vorliegt.
-
Nachteilig hierbei ist, dass eben durch die bedingte Verzweigung immer nur einzelne Rechenoperationen nacheinander ausgeführt werden können. Das gilt selbst für die Folgeberechnungen des Ereignisses immer dann, wenn nur ein willkürlicher Teil und nicht alle Folgeneuronen infolge unterschiedlich starker Koppelfaktoren bedient werden sollen. Man kann sich hier leicht vorstellen, dass es nicht nötig ist, solche Folgeneuronen zu bedienen, zu denen keine oder kaum eine Kopplung besteht.
-
Weiterhin ist es für das Trainieren von Spiking Neural Networks sinnvoll, ein Verfahren wie Spike Timing Dependent Plasticity - STDP - nutzen zu können. Hierbei wird berücksichtigt, in welcher simulierten Zeitrelation das Ansprechen eines Neurons und dessen Folgeneuronen zueinander stehen, und entsprechend der sich so ergebenden Kausalität oder Antikausalität die Kopplung temporär verstärkt oder abgeschwächt. Sollte sich im Rahmen der Bewertung der Gesamtentscheidung des Neuronalen Netzes dies als gut herausstellen, dann werden die veränderten Kopplungswerte dauerhaft gespeichert. Wissenschaftlich lässt sich ein Zusammenhang zwischen STDP und der Klasse der sogenannten EM-Algorithmen belegen, es wird angenommen, dass das menschliche Langzeitgedächtnis und die Automatisierung von Bewegungsabläufen so funktioniert. Bei STDP ist eine komplexe Berechnung der Gewichtungsfaktoren nötig, allerdings auch hier nicht jedes Mal für jede Synapse, sondern nur für solche mit der oben beschriebenen Zeitrelation.
-
Aus mathematischer Sicht lässt sich selbst bei konventionellen Simulationen neuronaler Netze sagen, dass die zugehörigen Matrizen häufig nur dünn besetzt sind.
-
Die zu lösende Aufgabe besteht darin, eine Hardwarebeschleunigung so zu konstruieren, dass im statistischen Mittel Rechenoperationen aus der Simulation z.B. eines Spiking Neural Networks, anderer neuronaler Netze oder aus der Nutzung von sonstigen Algorithmen der künstlichen Intelligenz weitgehend parallel ausgeführt werden können, ohne dass dabei wie z.B. bei Matrix-Rechenbeschleunigern eine Vielzahl sinnloser Rechenoperationen mit ausgeführt wird.
-
Das Problem wird erfindungsgemäß durch den im Patentanspruch 1 beschriebenen Prozessor gelöst, dessen Funktion im Folgenden anhand eines Ausführungsbeispiels erläutert wird:
- Das Beispiel in zeigt einen erfindungsgemäßen Prozessor. Dieser besteht wie klassische SIMD-Prozessoren auch aus einer Steuereinheit (CU1) und mehreren parallel angesteuerten Recheneinheiten (AR1-4). Die Recheneinheiten sind identisch aufgebaut und erhalten die gleichen Steuerbefehle, arbeiten allerdings auf unterschiedlichen Daten, die getrennt vom zentralen Daten-Cache oder Hauptspeicher (MEM1) bereitgestellt werden. Die Trennung kann z.B. durch eine entsprechende Wortbreite oder Einsatz von Multiplexern bzw. De-Multiplexern erfolgen, denkbar sind auch individuelle Zwischenspeicher wie nach dem Stand der Technik bekannt.
-
Jede Recheneinheit verfügt über jedenfalls eine Arithmetik-Logik-Einheit (ALU1) sowie Register zur Versorgung dieser mit Operanden (RAM1, REG1) und Ablage von Ergebnissen (REG2), die wiederum auf die Operandenregister zurückgeführt werden oder zur Bereitstellung der Ergebnisse an den Hauptspeicher dienen. In sind die zugehörigen Steuersignale nicht eingezeichnet, um die Übersichtlichkeit zu wahren, ebenso ist nach dem Stand der Technik bekannt, dass es sich bei den Registern um Pipeline-Register wie auch Register oder Registerbänke zum Halten von Operanden und Ergebnissen handeln kann.
-
Neu gegenüber dem Stand der Technik ist jetzt der inhaltsadressierbare Speicher (CAM1), der im gewählten Ausführungsbeispiel jeweils einmal pro Recheneinheit vorhanden ist. Dieser ermittelt zu einem angelegten Suchmuster (Pattern) dessen interne Adresse und gibt im Ausführungsbeispiel über einen an diese gekoppelten RAM-Speicher die zu dem Muster hinterlegten Daten aus.
-
Weiterhin liefert der inhaltsadressierbare Speicher ein Treffersignal (Hit), sofern überhaupt ein zum Suchmuster passender Eintrag im inhaltsadressierbare Speicher gefunden wurde. Es sind verschiedene Bauformen bekannt, die Adresse kann auch aus Teilworten zusammengesetzt sein, daher wird synonym der Begriff Index des gefundenen Musters verwendet. Natürlich ist es denkbar, mehrere solche Speicher je Recheneinheit bereitzustellen oder umgekehrt einen Speicherblock zur Versorgung mehrere Recheneinheiten zu verwenden, z.B. durch getrennte Bereitstellung von Suchergebnissen mittels Blockbildung im Speicherarray und Nutzung getrennter Prioritätsencoder. Möglich ist es auch, nur Teile des Index zu verwenden, um mehrere Muster zusammenzufassen.
-
Die zentrale Recheneinheit wird jetzt über einen Bus, ausgehend von der Steuereinheit (CU1, Pattern) in die Lage versetzt, die inhaltsadressierbaren Speicher der Recheneinheiten mit einem Suchmuster zu versorgen. Im Ausführungsbeispiel ist jetzt jedem Mustereintrag (Pattern) ein RAM-Dateneintrag zugeordnet. Somit antwortet der inhaltsadressierbare Speicher, sofern das Muster gefunden wurde, mit dem im RAM abgelegten Datenwort zu diesem Eintrag. Gleichzeitig wird ein Treffersignal (Hit) erzeugt, welches die Rechenoperation freigibt. Denkbar ist es auch, unmittelbar den Index des hinterlegten Musters zu nutzen, dies ist jedoch weniger flexibel einsetzbar.
-
Gemäß Unteranspruch wird jetzt in einer bevorzugten Ausführungsform über den Addierer ADD1 ein Offsetwert zu dem als Antwort gegebenen Datenwort addiert, so eine RAM-Zugriffsadresse generiert und damit ein Speichereintrag im Operanden-RAM (RAM1) ausgewählt. Der zweite Operand sei über ein weiteres Operandenregister (REG1) bereitgestellt.
-
Somit wird die Rechenoperation auf dem so ausgewählten Operanden ausgeführt und das Ergebnis im Ergebnisregister gespeichert, mit Schreibfreigabe (We) aber nur im Fall eines Treffers. Es kann jetzt eine weitere Rückführung des Ergebnisses z.B. in das Operanden-RAM erfolgen oder z.B. eine Ablage im Hauptspeicher, bedarfsweise ebenfalls abhängig vom Treffersignal (Hit).
-
Überraschenderweise gibt diese Konstruktion jetzt die Möglichkeit, Aufgabenstellungen aus der Klasse der Spiking Neural Networks oder von dünn basierten Matrizen besonders gut parallel zu bearbeiten. Denn es lassen im Vorfeld die zu simulierenden Neuronen oder auch die zu berechnenden Matrixzeilen so über die Recheneinheiten streuen, dass statistisch eine Verteilung erreicht wird, in der jene Neuronen oder Matrixzeilen, die von der Veränderung eines Eingangswerts betroffen sind, zumeist auf unterschiedlichen Recheneinheiten liegen.
-
Dies kann im einfachsten Fall durch eine zufällige Verteilung geschehen. Die Indizes der Eingangswerte oder Matrixspalten, die diesen Neuronen oder Matrixzeilen zugeordnet sind, werden als Codes in den inhaltsadressierbaren Speichern abgelegt.
-
Wird jetzt der dem Eingangswert zugeordnete Code an den Bitmuster-Bus (Pattern) angelegt, dann werden jene Recheneinheiten, die für die Neuronen oder Matrixzeilen, die von dem Eingangswert abhängig sind, ansprechen und ein Treffersignal (Hit) erzeugen sowie die Adresse des Datensatzes, welcher dem zu simulierenden Neuron oder der Matrixzeile entspricht, bereitstellen, sodass dieser - zumeist inkrementell - verändert werden kann.
-
Damit können die Recheneinheiten für mehrere Neuronen oder Matrixzeilen effizient gleichzeitig zuständig sein, die Anzahl der benötigten Recheneinheiten wird bei im Mittel gutem parallelen Datendurchsatz verhältnismäßig klein sein und aufgabengemäß der Verbrauch an elektrischer Leistung in vernünftigen Grenzen gehalten.
-
Sollte es tatsächlich vorkommen, dass eine Recheneinheit für mehrere betroffene Neuronen oder Matrixzeilen zuständig ist, so kann dies gemäß Unteranspruch dadurch gehandhabt werden, dass einerseits nach einem Suchtreffer ein Speichereintrag temporär gesperrt wird. Andererseits wird gemäß weiterem Unteranspruch eine ODER-Verknüpfung (OR1) der Treffersignale gebildet, sodass die Steuereinheit davon Kenntnis hat, dass mindestens eine Rechenoperation noch erforderlich ist. Die Steuereinheit kann dann die Rechenoperation für alle Recheneinheiten so oft wiederholen, bis dass kein Signal aus der ODER-Verknüpfung mehr geliefert wird.
-
Selbstverständlich ist es möglich, das Treffersignal bei jenen Recheneinheiten, die nicht aktiv sind, gemäß Unteranspruch zum Abschalten der Stromversorgung zu nutzen. Dies kann sogar für nicht Daten haltende Teilbaugruppen jener CAM-Speicher - wie etwa Vergleicher - geschehen, die in einem vorherigen Zyklus keine Ergebnisse mehr geliefert haben.
-
Der inhaltsadressierbare Speicher kann gemäß Unteranspruch auch als ternärer CAM-Speicher ausgelegt sein, um so Gruppen von Suchcodes bilden zu können, die nur auf einem Speichereintrag abgebildet sind. Dabei werden nicht relevante Datenbits des Suchmusters auf den Status X - „don't care“ - im Speichereintrag gesetzt.
-
Die im entsprechenden Eintrag als nicht auswertbar markierten Bits können wiederum über - aus in dem TCAM Suchmuster zugeordneten RAM-Datenwort (CAM1, RAM) enthaltenen Zusatzbits ansteuerbare - Multiplexer für die Register- oder Speicheradressierung mit herangezogen werden, z.B. durch Einfügen direkt vor dem gemäß Unteranspruch genutzten Addierer (ADD1). Besonders vorteilhaft ist diese Variante bei Vorliegen teilweise regelmäßiger Strukturen wie z.B. in Convolutional Neural Networks, die so mit klassischen Spiking Neural Networks kombiniert und somit effizient berechnet werden können.
-
Eine besonderes stromsparende Variante kann gemäß Unteranspruch durch eine Kombination aus einer Cache-Struktur und CAM- oder TCAM- Vergleichern realisiert werden. Dabei wird zunächst z.B. über einen Hashcode eine Vorauswahl einer begrenzten Anzahl von RAM-Zeilen vorgenommen und deren Inhalt sodann den CAM- bzw. TCAM- Vergleichern zugeführt. Speziell in dieser Ausführung kann es zudem sinnvoll sein, eine Teilauswahl von Signalen aus dem Bitmuster-Bus zu treffen und ggf. daraus einen Hashcode vor der Zuführung zum inhaltsadressierbaren Speicher zu bilden.
-
Im Fall der Simulation neuronaler Netze ist es in einer besonders bevorzugten Ausführung gemäß Unteranspruch sinnvoll, auch Vergleiche mit Grenzwerten in den Recheneinheiten zuzulassen und bei Über- oder Unterschreitung eines Grenzwerts dies und ggf. das Rechenergebnis der Steuereinheit zur weiteren Verteilung an andere Recheneinheiten zu melden. Die Meldung kann beispielsweise über einen Prioritätsencoder erfolgen, welche der Steuereinheit den Index der betroffenen Recheneinheit meldet, die Steuereinheit kann sodann programmgesteuert die nötigen Schritte einleiten wie z.B. das Rechenergebnis - auch und gerade mittels Bildung eines neuen Suchmusters - ggf. über einen speziellen Bus oder Einspeisung am Bus zum Hauptspeicher - an die anderen Recheneinheiten verteilen.
-
Im Fall der Simulation eines Spiking Neural Networks entspricht dies der Erzeugung eines Aktionspotenzials und Übermittlung des Ereignisses an die über Synapsen nachgeschalteten Neuronen. Selbstverständlich lässt sich auch hier wieder durch selektive Sperren schon abgearbeiteter Grenzwertüberschreitungen eine Abfrage aller Recheneinheiten mit derlei Ereignis realisieren.
-
Um eine Berechnung besonders großer Matrizen oder Netzwerke zu ermöglichen, ist es gemäß Unteranspruch vorteilhaft, nicht nur die Datenregister- und Daten- RAMs, letztere zumeist als schneller statischer Speicher realisiert, blockweise aus dem zumeist DRAM-Hauptspeicher ggf. mit vorgeschaltetem Cache zu laden, sondern dabei die inhaltsadressierbaren Speicher miteinzubeziehen. Im Zuge dieser Ladevorgänge können zudem Umordnungen vorgenommen werden, falls mittels der Steuereinheit erkannt wird, dass einzelne Recheneinheiten in statistisch unvorteilhafter Weise belegt sind. Dies wird üblicherweise durch Auswertung statistischer Ereigniszähler geschehen.
-
Weiterhin können in diesem Zug auch Änderungen an den Speichereinträgen der inhaltsadressierbaren Speicher vorgenommen werden, um z.B. sich infolge von Lernprozessen ergebende Änderungen von Kopplungswerten der Synapsen einzupflegen, wenn diese z.B. die Kopplung als künftig unbedeutend oder umgekehrt bedeutend kennzeichnen und so die zugeordnete Rechenoperation künftig vermieden werden kann oder umgekehrt notwendig wird.
-
An dieser Stelle wird auch ein intelligenter Algorithmus ansetzen, der nicht nur eine zufällige Aufteilung der Neuronen oder Matrixzeilen auf die Neuronen vornimmt, sondern statistische Auswertungen zur Belegung der Recheneinheiten zunächst statisch abschätzt und dann dynamisch anpasst und danach bedarfsweise eine Umverteilung vornimmt.
-
Die vorliegende Rechnerarchitektur ermöglicht besonders effiziente Berechnungen von Spiking Neural Networks oder von dünn besetzten Matrizen auf SIMD-Prozessoren bei geringem Stromverbrauch und geringer thermischer Verlustleistung und stellt somit einen erheblichen Fortschritt gegenüber dem Stand der Technik dar, welcher insbesondere für Anwendungen der künstlichen Intelligenz z.B. im Bereich des autonomen Fahrens, der Robotik oder auch der Verarbeitung von „Big Data“ von großem Vorteil ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 5765011 A [0002]
- US 7925861 B2 [0002]
- EP 0360527 B1 [0002]
- US 20160342889 A1 [0006]
- WO 2016186823 A1 [0006]
- DE 4105669 C2 [0013]
- DE 102005036605 B4 [0015]