DE102018115902A1 - SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung - Google Patents

SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung Download PDF

Info

Publication number
DE102018115902A1
DE102018115902A1 DE102018115902.1A DE102018115902A DE102018115902A1 DE 102018115902 A1 DE102018115902 A1 DE 102018115902A1 DE 102018115902 A DE102018115902 A DE 102018115902A DE 102018115902 A1 DE102018115902 A1 DE 102018115902A1
Authority
DE
Germany
Prior art keywords
content
memory
addressable memory
control unit
computing
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.)
Ceased
Application number
DE102018115902.1A
Other languages
English (en)
Inventor
Anmelder Gleich
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.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to DE102018115902.1A priority Critical patent/DE102018115902A1/de
Publication of DE102018115902A1 publication Critical patent/DE102018115902A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Memory System (AREA)

Abstract

Herkömmliche SIMD-Prozessoren berechnen lediglich Operationen nach einem fest vorgegebenem Programmschema, was für Anwendungen der künstlichen Intelligenz wie z.B. im Bereich der Robotik, des autonomen Fahrens und für Berechnungen mit „Big Data“ problematisch ist, da hieraus ein sehr hoher elektrischer Leistungsbedarf der Prozessoren resultiert. Die vorliegende Erfindung setzt in besonders geschickter Weise inhaltsadressierbare CAM-Speicher ein, um die Rechenoperationen automatisch auf die SIMD-Recheneinheiten zu verteilen, sodass diese im statistischen Mittel stets effizient auf die Recheneinheiten verteilt und unnötige Rechenoperationen vermieden werden. Hierzu wird bei dünn besetzten Matrizen oder der Simulation von Spiking Neural Networks der Index des sich ändernden Eingangswertes an die CAM-Speicher übermittelt, woraufhin diese jene Datensätze ermitteln, welche von einer inkrementellen Änderung betroffen sind. Somit wird ein Großteil unnötiger Rechenoperationen vermieden.

Description

  • 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]

Claims (10)

  1. Prozessor, Mikroprozessor, Mikrocontroller, Signalprozessor oder Computer mit mindestens einer Verarbeitungsmöglichkeit für SIMD - Single Instruction Multiple Data - Befehle, bestehend aus mindestens einer Steuereinheit (CU1), welche eine Vielzahl von Recheneinheiten (AR1-AR4) ansteuert, dadurch gekennzeichnet, dass - den Recheneinheiten jeweils mindestens ein inhaltsadressierbarer Speicher (CAM1) zugeordnet ist - es kann optional dabei auch ein inhaltsadressierbarer Speicher mehrere Recheneinheiten parallel bedienen -, - dieser inhaltsadressierbare Speicher mit mindestens einem Bitmuster von der Steuereinheit abgefragt werden kann, - sofern zu dem Bitmuster ein hinterlegter Speichereintrag im inhaltsadressierbaren Speicher der Recheneinheit gefunden wird, das Suchergebnis - in Form des Index oder der Adresse des Eintrags - oder ein zu diesem hinterlegter Inhalt genutzt wird, um mindestens einen Operanden, ein Register, einen Speichereintrag (RAM1) oder einen Datensatz für mindestens eine Rechen-, Transfer- oder Speicheroperation auszuwählen und/oder eine Rechenoperation freizugeben, zu sperren oder in ihrem Ablauf zu verändern.
  2. Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass Operanden, Register, Speichereinträge oder Datensätze für Rechen-, Transfer- oder Speicheroperationen ausgewählt werden, indem deren Index oder Adresse durch Zusammenfügen (ADD1) einer Information aus dem Suchergebnis oder dazu hinterlegtem Inhalt sowie einem von der Steuereinheit gelieferten Offsetwert (RegOffset) gebildet wird.
  3. Prozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass ein gefundener Speichereintrag im inhaltsadressierbaren Speicher nach einem Suchtreffer für weitere darauf folgende Suchvorgänge temporär gesperrt wird.
  4. Prozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass der inhaltsadressierbare Speicher ein ternärer CAM-Speicher - TCAM - ist.
  5. Prozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass der inhaltsadressierbare Speicher als Cache-Struktur - RAM mit bedarfsweise vorgeschalteter Hash-Operation - oder als Kombination aus einer Cache-Struktur und CAM oder TCAM realisiert ist.
  6. Prozessor nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass die Zuführung des Bitmusters über einen gemeinsamen Bus erfolgt, wobei optional für einzelne Recheneinheiten bedarfsweise unterschiedliche Teilbitmuster für deren inhaltsadressierbare Speicher entnommen werden können, wobei optional vor der Weiterleitung des Bitmusters an den inhaltsadressierbaren Speicher das Bitmuster über eine Hash-Operation oder sonstige Rechenoperation verändert werden kann.
  7. Prozessor nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die Stromversorgung von einzelnen Baugruppen der Recheneinheit abgeschaltet wird, wenn kein Treffer im inhaltsadressierbaren Speicher vorliegt, wobei dies ebenfalls für nicht Daten haltende Teile des inhaltsadressierbaren Speichers selber möglich ist, sofern die Reaktivierung über ein externes Rücksetzsignal von der Steuereinheit erfolgt.
  8. Prozessor nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass von den Recheneinheiten mindestens ein Signal zur Steuereinheit unter ODER- oder negiert UND-Verknüpfung (OR1) deren Einzelausgänge rückgeführt wird, aus dem die Steuereinheit entnehmen kann, dass für mindestens eine Recheneinheit dieser Verknüpfung ein Speichereintrag in deren inhaltsadressierbaren Speicher gefunden wurde.
  9. Prozessor nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass die Recheneinheiten ihrerseits über ein Bussystem und/oder Prioritätsencoder zur Zusammenfassung der Steuereinheit signalisieren können, dass ein individuelles Rechenergebnis eine bestimmte Eigenschaft erfüllt oder einen Grenzwert über- oder unterschreitet.
  10. Prozessor nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, dass die Inhalte der inhaltsadressierbaren Speicher automatisiert aus einem Hauptspeicher oder DRAM-Speicher geladen werden können, wobei optional im selben Zug weitere Register in den Recheneinheiten ebenfalls geladen werden können.
DE102018115902.1A 2018-07-01 2018-07-01 SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung Ceased DE102018115902A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102018115902.1A DE102018115902A1 (de) 2018-07-01 2018-07-01 SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102018115902.1A DE102018115902A1 (de) 2018-07-01 2018-07-01 SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung

Publications (1)

Publication Number Publication Date
DE102018115902A1 true DE102018115902A1 (de) 2020-01-02

Family

ID=68885891

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018115902.1A Ceased DE102018115902A1 (de) 2018-07-01 2018-07-01 SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung

Country Status (1)

Country Link
DE (1) DE102018115902A1 (de)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4105669C2 (de) 1991-02-22 1992-12-17 Oliver 8000 Muenchen De Bartels
EP0360527B1 (de) 1988-09-19 1995-01-04 Fujitsu Limited Paralleles Rechnersystem mit Verwendung eines SIMD-Verfahrens
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
DE102005036605B4 (de) 2005-08-01 2008-11-06 Oliver Bartels Schnelle Universalrechnerarchitektur mit automatischer Programmvariantenauswahl
US7925861B2 (en) 1999-04-09 2011-04-12 Rambus Inc. Plural SIMD arrays processing threads fetched in parallel and prioritized by thread manager sequentially transferring instructions to array controller for distribution
US20150242463A1 (en) * 2014-02-25 2015-08-27 Tsung-Han Lin Systems, apparatuses, and methods for deep learning of feature detectors with sparse coding
US20160342889A1 (en) 2015-05-21 2016-11-24 Google Inc. Vector computation unit in a neural network processor
WO2016186823A1 (en) 2015-05-21 2016-11-24 Google Inc. Batch processing in a neural network processor

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0360527B1 (de) 1988-09-19 1995-01-04 Fujitsu Limited Paralleles Rechnersystem mit Verwendung eines SIMD-Verfahrens
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
DE4105669C2 (de) 1991-02-22 1992-12-17 Oliver 8000 Muenchen De Bartels
US7925861B2 (en) 1999-04-09 2011-04-12 Rambus Inc. Plural SIMD arrays processing threads fetched in parallel and prioritized by thread manager sequentially transferring instructions to array controller for distribution
DE102005036605B4 (de) 2005-08-01 2008-11-06 Oliver Bartels Schnelle Universalrechnerarchitektur mit automatischer Programmvariantenauswahl
US20150242463A1 (en) * 2014-02-25 2015-08-27 Tsung-Han Lin Systems, apparatuses, and methods for deep learning of feature detectors with sparse coding
US20160342889A1 (en) 2015-05-21 2016-11-24 Google Inc. Vector computation unit in a neural network processor
WO2016186823A1 (en) 2015-05-21 2016-11-24 Google Inc. Batch processing in a neural network processor

Similar Documents

Publication Publication Date Title
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE3883192T2 (de) Neuronale Netzwerkschaltung und -struktur.
DE202018104609U1 (de) Neuronalnetzbeschleuniger mit Parametern, die sich auf einem Chip befinden
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE1499722B1 (de) Einrichtung zur modifizierung von informationswoertern
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE112020000748B4 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
DE2423265C3 (de) Optimierende Rechenmaschine
DE102019112301A1 (de) Befehls-Cache in einem Multithread-Prozessor
DE1115488B (de) Datenverarbeitungssystem
DE2906685C2 (de)
DE102018115902A1 (de) SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung
DE102004001680B4 (de) Dynamische Steuerung von Rechnerressourcen bei der Pipelineverarbeitung von Daten unter Verwendung von Anytime Algorithmen
DE102019112186A1 (de) Doppelladebefehl
DE2403669B2 (de) SpezialComputer
DE2440390C3 (de)
DE69414636T2 (de) Neuronales Netzwerk für Signalverarbeitung
DE1813521A1 (de) Dokumentationseinrichtung zum Aufsuchen gewuenschter Informationen aus einer Informationssammlung oder Informationsmenge
DE2440390B2 (de) Elektronischer rechner
DE102020133585A1 (de) Vorrichtungen und systeme für bestimmte speicherinterne verarbeitungen
DE3603319C2 (de)
DE69619417T2 (de) Rechnersystem mit hierarchischen Speichern
DE3542436A1 (de) Datenflussprozessorsystem
EP3385834A1 (de) Hardwaretreiber für effiziente arithmetik
DE2419837B2 (de) Schaltungsanordnung zur adressierung eines mikroprogramms in datenverarbeitungseinrichtungen und verfahren zur durchfuehrung von sprungbefehlen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R086 Non-binding declaration of licensing interest
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final