DE102018006015A1 - Globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke - Google Patents

Globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke Download PDF

Info

Publication number
DE102018006015A1
DE102018006015A1 DE102018006015.3A DE102018006015A DE102018006015A1 DE 102018006015 A1 DE102018006015 A1 DE 102018006015A1 DE 102018006015 A DE102018006015 A DE 102018006015A DE 102018006015 A1 DE102018006015 A1 DE 102018006015A1
Authority
DE
Germany
Prior art keywords
neuromorphic
time step
pulse
nucleus
core
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.)
Withdrawn
Application number
DE102018006015.3A
Other languages
English (en)
Inventor
Gregory K. Chen
Kshitij Bhardwaj
Raghavan Kumar
Huseyin Ekin Sumbul
Phil Knag
Ram K. Krishnamurthy
Himanshu Kaul
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102018006015A1 publication Critical patent/DE102018006015A1/de
Withdrawn 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/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/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • 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/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Analysis (AREA)
  • Power Sources (AREA)
  • Electrotherapy Devices (AREA)

Abstract

In einer Ausführungsform umfasst ein Prozessor einen ersten neuromorphen Kern zum Umsetzen von mehreren Neuronaleinheiten eines neuronalen Netzwerks, wobei der erste neuromorphe Kern einen Speicher zum Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns umfasst; und eine Steuerung zum Aufzeichnen von aktuellen Zeitschritten von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder Pulse für diesen bereitstellen; und Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich allgemein auf das Gebiet der Computerentwicklung und, insbesondere, auf globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke.
  • STAND DER TECHNIK
  • Ein neuronales Netzwerk kann eine Gruppe von Neuronaleinheiten umfassen, die lose nach der Struktur eine biologischen Gehirns modelliert sind, das große Ansammlungen von Neuronen umfasst, die durch Synapsen verbunden sind. In einem neuronalen Netzwerk sind Neuronaleinheiten mit anderen Neuronaleinheiten über Verknüpfungen verbunden, die in ihrer Wirkung auf den Aktivierungszustand von verbundenen Neuronaleinheiten exzitatorisch oder inhibitorisch sein können. Eine Neuronaleinheit kann unter Nutzung der Werte ihrer Eingänge eine Funktion durchführen, um ein Membranpotential der Neuronaleinheit zu aktualisieren. Eine Neuronaleinheit kann ein Pulssignal an verbundene Neuronaleinheiten verbreiten, wenn eine Schwelle im Zusammenhang mit der Neuronaleinheit überschritten wird. Ein neuronales Netzwerk kann trainiert oder anderweitig angepasst werden, um verschiedene Datenverarbeitungsaufgaben durchzuführen, wie etwa Computer-Visions-Aufgaben, Spracherkennungsaufgaben oder andere geeignete Datenverarbeitungsaufgaben.
  • Figurenliste
    • 1 stellt ein Blockdiagramm eines Prozessors dar, umfassend ein Network-on-Chip-System (NoC), der ein neuronales Netzwerk in Übereinstimmung mit bestimmten Ausführungsformen umsetzen kann.
    • 2 stellt einen beispielhaften Teil eines neuronalen Netzwerks in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 3A stellt einen beispielhaften Zeitverlauf eines Membranpotentials einer Neuronaleinheit in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 3B stellt einen beispielhaften Zeitverlauf eines Membranpotentials einer Neuronaleinheit eines ereignisgesteuerten und zeitspringenden neuronalen Netzwerks in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 4A stellt einen beispielhaften Zeitverlauf eines Membranpotentials einer Integrate-and-Fire-Neuronaleinheit in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 4B stellt einen beispielhaften Zeitverlauf eines Membranpotentials einer Leaky-Integrate-and-Fire-Neuronaleinheit in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 5 stellt Kommunikation von lokalen nächsten Pulszeiten über einem NoC in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 6 stellt Kommunikation einer globalen nächsten Pulszeit über einem NoC in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 7 stellt Logik zum Berechnen einer lokalen nächsten Pulszeit über einem NoC in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 8 stellt einen beispielhaften Ablauf zum Berechnen einer nächsten Pulszeit und Empfangen einer globalen Pulszeit in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 9 stellt zulässige relative Zeitschritte zwischen zwei verbundenen Neuronenkernen für ein lokalisiertes Zeitschrittbestimmungsschema in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 10A-10D stellen eine Sequenz von Verbindungszuständen zwischen mehreren Kernen in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 11 stellt eine beispielhafte Neuronenkernsteuerung 1100 zum Aufzeichnen von Zeitschritten für neuromorphe Kerne in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 12 stellt einen neuromorphen Kern 1200 in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 13 stellt einen Ablauf zum Verarbeiten von Pulsen aus verschiedenen Zeitschritten und Inkrementieren eines Zeitschritts eines neuromorphen Kerns in Übereinstimmung mit bestimmten Ausführungsformen dar.
    • 14A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue (In-order) Pipeline als auch eine beispielhafte reihenfolgeveränderte (Out-of-order) Ausgabe-/Ausführungspipeline mit Registerumbenennung in Übereinstimmung mit bestimmten Ausführungsformen darstellt.
    • 14B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines reihenfolgetreuen Architekturkerns als auch eines beispielhaften reihenfolgeveränderten Registerumbenennungs-Ausgabe/Ausführungs-Architekturkerns, der in einem Prozessor aufzunehmen ist, in Übereinstimmung mit bestimmten Ausführungsformen darstellt;
    • 15A-B stellen ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen (In-order) Kernarchitektur dar, deren Kern einer von mehreren Logikblöcken (potenziell einschließlich anderer Kerne vom gleichen Typ und/oder anderen Typen) in einem Chip in Übereinstimmung mit bestimmten Ausführungsformen wäre.
    • 16 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und eine integrierte Grafik in Übereinstimmung mit bestimmten Ausführungsformen aufweisen kann;
    • 17, 18, 19 und 20 sind Blockdiagramme von beispielhaften Computerarchitekturen in Übereinstimmung mit bestimmten Ausführungsformen; und
    • 21 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz in Übereinstimmung mit bestimmten Ausführungsformen kontrastiert.
  • Ähnliche Bezugszeichen und Benennungen in den verschiedenen Zeichnungen zeigen ähnliche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, wie etwa Beispiele von spezifischen Typen von Prozessoren und Systemauslegungen, spezifischen Hardwarestrukturen, spezifischen architektonischen und mikroarchitektonischen Details, spezifischen Registerauslegungen, spezifischen Befehlstypen, spezifischen Systemkomponenten, spezifischen Maßen/Höhen, spezifischen Prozessor-Pipeline-Stufen und Betrieb usw., um ein gründliches Verständnis der vorliegenden Offenbarung bereitzustellen. Es wird allerdings für den Fachmann ersichtlich sein, dass diese spezifischen Details nicht eingesetzt werden müssen, um die vorliegende Offenbarung auszuüben. In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie zum Beispiel spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/-code für beschriebene Algorithmen, spezifischer Firmware-Code, spezifischer Verschaltungsbetrieb, spezifische Logikauslegungen, spezifische Herstellungstechniken und - Materialien, spezifische Compiler-Umsetzungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Abschalt- und Gattertechniken/-Logik und andere spezifische Betriebsdetails von Computersystemen nicht detailliert beschrieben, um unnötiges Verschleiern der vorliegenden Offenbarung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf spezifische integrierte Schaltungen, wie zum Beispiel in Computerplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Typen integrierter Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewendet werden. Beispielsweise können die offenbarten Ausführungsformen in verschiedenen Vorrichtungen verwendet werden, wie etwa Servercomputersystemen, Desktopcomputersystemen, handgehaltenen Vorrichtungen, Tablets, anderen schlanken Notebooks, System-on-a-Chip-Vorrichtungen (SOC) und eingebetteten Anwendungen. Einige Beispiele für handgehaltene Vorrichtungen umfassen Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, Persönliche Digitale Assistenten (Personal Digital Assistants, PDAs) und tragbare PCs. Eingebettete Anwendungen umfassen typischerweise eine Mikrosteuerung, einen Digitalsignalprozessor (DSP), ein System-on-a-Chip, Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerkknoten, Weitbereichsnetzwerk-Weichen (WAN) oder jedes andere System, das die nachfolgend gelehrten Funktionen und Vorgänge durchführen kann. Darüber hinaus sind die hier beschriebenen Einrichtungen, Verfahren und Systeme nicht auf physische Datenverarbeitungsvorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen für Energieeinsparung und - effizienz beziehen.
  • 1 stellt ein Blockdiagramm eines Prozessors 100 dar, umfassend ein Networkon-Chip-System (NoC), das ein neuronales Netzwerk in Übereinstimmung mit bestimmten Ausführungsformen umsetzen kann. Der Prozessor 100 kann jeden Prozessor oder jede Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Koprozessor, ein SoC oder eine andere Vorrichtung zum Ausführen von Code umfassen. In einer bestimmten Ausführungsform ist der Prozessor 100 auf einem einzelnen Die umgesetzt.
  • In der dargestellten Ausführungsform umfasst der Prozessor 100 mehrere Netzwerkelemente 102, angeordnet in einem Gitternetzwerk und miteinander über bidirektionale Verbindungen gekoppelt. Allerdings kann ein NoC in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung auf alle geeigneten Netzwerktopologien (z. B. ein hierarchisches Netzwerk oder ein Ringnetzwerk), Größen, Busbreiten und Prozesse angewendet werden. In der dargestellten Ausführungsform umfasst jedes Netzwerkelement 102 einen Router 104 und einen Kern 108 (der in einigen Ausführungsformen ein neuromorpher Kern sein kann), allerdings können, in anderen Ausführungsformen, mehrere Kerne von unterschiedlichen Netzwerkelementen 102 einen einzelnen Router 104 gemeinsam nutzen. Die Router 104 können kommunikativ miteinander in einem Netzwerk, wie etwa einem paketvermittelten Netzwerk und/oder einem leitungsvermittelten Netzwerk, verbunden sein, dadurch Kommunikation zwischen Komponenten (wie etwa Kernen, Speicherelementen oder anderen Logikblöcken) des NoC, die mit den Routern verbunden sind, ermöglichend. In der dargestellten Ausführungsform ist jeder Router 104 kommunikativ mit seinem eigenen Kern 108 gekoppelt. In verschiedenen Ausführungsformen kann jeder Router 104 kommunikativ mit mehreren Kernen 108 (oder anderen Verarbeitungselementen oder Logikblöcken) gekoppelt sein. Wie hier verwendet, kann eine Bezugnahme auf einen Kern auch für andere Ausführungsformen gelten, bei denen ein unterschiedlicher Logikblock anstelle eines Kerns verwendet wird. Beispielsweise können verschiedene Logikblöcke einen Hardwarebeschleuniger (z. B. Grafikbeschleuniger, Multimedia-Beschleuniger oder Videocodierungs-/-decodierungsbeschleuniger), E/A-Block, Speichersteuerung oder eine andere geeignete feste Funktionslogik umfassen. Der Prozessor 100 kann eine beliebige Anzahl von Verarbeitungselementen oder anderen Logikblöcken, die symmetrisch oder asymmetrisch sein können, umfassen. Beispielsweise können die Kerne 108 von Prozessor 100 asymmetrische Kerne oder symmetrische Kerne umfassen. Prozessor 100 kann Logik zum Betreiben als eines oder beide aus einem paketvermittelten Netzwerk und einem leitungsvermittelten Netzwerk zum Bereitstellen von Intra-Die-Kommunikation umfassen.
  • In bestimmten Ausführungsformen können Pakete zwischen den verschiedenen Routern 104 unter Verwendung von Ressourcen eines paketvermittelten Netzwerks kommuniziert werden. Das heißt, das paketvermittelte Netzwerk kann Kommunikation zwischen den Routern (und ihren zugehörigen Kernen) bereitstellen. Die Pakete können einen Steuerteil und einen Datenteil umfassen. Der Steuerteil kann eine Zieladresse des Pakets umfassen, und der Datenteil kann die spezifischen Daten umfassen, die an den Prozessor 100 kommuniziert werden sollen. Beispielsweise kann der Steuerteil eine Zieladresse umfassen, die einem der Netzwerkelemente oder Kerne des Dies entspricht. In einigen Ausführungsformen umfasst das paketvermittelte Netzwerk Pufferlogik, da ein dedizierter Pfad von einer Quelle zu einem Ziel nicht gesichert ist, sodass ein Paket möglicherweise vorübergehend gestoppt werden muss, wenn zwei oder mehr Pakete dieselbe Verknüpfung oder Verbindung durchlaufen müssen. Als ein Beispiel können die Pakete an jedem der entsprechenden Router gepuffert werden (z. B. durch Flip-Flops), wenn das Paket von einer Quelle zu einem Ziel unterwegs ist. In anderen Ausführungsformen kann die Pufferlogik ausgelassen sein, und Pakete können fallen gelassen werden, wenn es zu einer Kollision kommt. Die Pakete können durch die Router 104 empfangen, gesendet und verarbeitet werden. Das paketvermittelte Netzwerk kann Punkt-zu-Punkt-Kommunikation zwischen benachbarten Routern verwenden. Der Steuerteil der Pakete kann zwischen Routern basierend auf einem Pakettakt übertragen werden, wie etwa einem 4-GHz-Takt. Der Datenteil der Pakete kann zwischen Routern basierend auf einem ähnlichen Takt übertragen werden, wie etwa einem 4-GHz-Takt.
  • In einer Ausführungsform können Router des Prozessors 100 verschiedenartig in zwei Netzwerken bereitgestellt sein oder in zwei Netzwerken kommunizieren, wie etwa einem paketvermittelten Netzwerk und einem leitungsvermittelten Netzwerk. Ein solcher Kommunikationsansatz kann als hybrides paket-/leitungsvermitteltes Netzwerk bezeichnet werden. In solchen Ausführungsformen können Pakete zwischen den verschiedenen Routern 104 unter Verwendung von Ressourcen des paketvermittelten Netzwerks und des leitungsvermittelten Netzwerks verschiedenartig kommuniziert werden. Um ein einzelnes Datenpaket zu senden, kann das leitungsvermittelte Netzwerk einen ganzen Pfad zuordnen, wohingegen das paketvermittelte Netzwerk nur ein einzelnes Segment (oder eine einzelne Verbindung) zuordnen kann. In einigen Ausführungsformen kann das paketvermittelte Netzwerk genutzt werden, um Ressourcen des leitungsvermittelten Netzwerks zum Senden von Daten zwischen Routern 104 zu reservieren.
  • Router 104 kann mehrere Portmengen umfassen, um verschiedenartig mit angrenzenden Netzwerkelementen 102 zu koppeln und zu kommunizieren. Beispielsweise können leitungsvermittelte und/oder paketvermittelte Signale über diese Portmengen kommuniziert werden. Portmengen von Router 104 können logisch aufgeteilt sein, gemäß der Richtung von angrenzenden Netzwerkelementen und/oder der Richtung von Verkehrsaustauschen mit solchen Elementen. Beispielsweise kann der Router 104 eine nördliche Portmenge mit Eingabe- („EIN“) und Ausgabeports („AUS“) umfassen, die dazu ausgelegt sind, Kommunikationen von einem Netzwerkelement 102, das sich in einer „nördlichen“ Richtung mit Bezug zum Router 104 befindet, zu empfangen bzw. an dieses zu senden. Zusätzlich oder alternativ dazu kann der Router 104 ähnliche Portmengen als Schnittstelle mit Netzwerkelementen umfassen, die sich in südlicher, westlicher, östlicher oder einer anderen Richtung befinden. In der dargestellten Ausführungsform ist der Router 104 für eine Weiterleitung mit X als erstes, Y als zweites ausgelegt, wobei sich Daten zuerst in der Ost/West-Richtung und dann in der Nord/Süd-Richtung bewegen. In anderen Ausführungsformen kann jedes geeignete Weiterleitungsschema verwendet werden.
  • In verschiedenen Ausführungsformen umfasst der Router 104 ferner eine andere Portmenge, umfassend einen Eingabeport und einen Ausgabeport, dazu ausgelegt, Kommunikationen von einem anderen Agenten des Netzwerks zu empfangen bzw. an diesen zu senden. In der dargestellten Ausführungsform ist diese Portmenge in der Mitte von Router 104 gezeigt. In einer Ausführungsform dienen diese Ports den Kommunikationen mit Logik, die angrenzend an, in Kommunikation mit oder anderweitig verbunden mit Router 104 ist, wie etwa Logik eines „lokalen“ Kerns 108. Hier wird diese Portmenge als eine „Kernportmenge“ bezeichnet, obwohl sie, in einigen Umsetzungen, mit Logik verbunden sein kann, die von einem Kern verschieden ist. In verschiedenen Ausführungsformen kann die Kernportmenge mit mehreren Kernen verbunden sein (wenn z. B. mehrere Kerne einen einzelnen Router gemeinsam nutzen), oder der Router 104 kann mehrere Kernportmengen umfassen, die jeweils mit einem entsprechenden Kern verbunden sind. In einer anderen Ausführungsform dient diese Portmenge den Kommunikationen mit einem Netzwerkelement, das sich in einer nächsten Ebene einer Netzwerkhierarchie höher als die des Routers 104 befindet. In einer Ausführungsform sind die östlichen und westlichen Richtungsverbindungen auf einer Metallschicht, die nördlichen und südlichen Richtungsverbindungen sind auf einer zweiten Metallschichtm und die Kernverbindungen sind auf einer dritten Metallschicht. In einer Ausführungsform umfasst Router 104 Koordinatenschaltung und Arbitrierungslogik zum Bereitstellen der Pfade für Kommunikation zwischen den Ports, wie die in 1 gezeigten. Logik (wie etwa Kern 108) in jedem Netzwerkelement kann eine(n) eindeutige(n) Takt und/oder Spannung haben oder kann eine(n) Takt und/oder Spannung mit einer oder mehreren anderen Komponenten des NoC gemeinsam nutzen.
  • In bestimmten Ausführungsformen kann ein Kern 108 eines Netzwerkelements einen neuromorphen Kern einschließlich einer oder mehrerer Neuronaleinheiten umfassen. Ein Prozessor kann einen oder mehrere neuromorphe Kerne umfassen. In verschiedenen Ausführungsformen kann jeder neuromorphe Kern einen oder mehrere Berechnungslogikblöcke umfassen, die über den Neuronaleinheiten des neuromorphen Kerns zeitgemultiplext sind. Ein Berechnungslogikblock kann dazu betreibbar sein, verschiedene Berechnungen für eine Neuronaleinheit durchzuführen, wie etwa Aktualisieren des Membranpotentials der Neuronaleinheit, Bestimmen, ob das Membranpotential eine Schwelle überschreitet und/oder andere Operationen im Zusammenhang mit einer Neuronaleinheit. Hier kann sich ein Bezug auf eine Neuronaleinheit auf Logik beziehen, die verwendet wird, um ein Neuron eines neuronalen Netzwerks umzusetzen. Solche Logik kann Speicher für einen oder mehrere Parameter im Zusammenhang mit dem Neuron umfassen. In einigen Ausführungsformen kann sich die Logik, die zum Umsetzen eines Neurons verwendet wird, mit der Logik überschneiden, die zum Umsetzen von einem oder mehreren anderen Neuronen verwendet wird (in einigen Ausführungsformen kann eine Neuronaleinheit entsprechend einem Neuron Berechnungslogik mit anderen Neuronaleinheiten entsprechend anderen Neuronen gemeinsam nutzen, und Steuersignale können bestimmen, welche Neuronaleinheit momentan die Logik zur Verarbeitung verwendet).
  • 2 stellt einen beispielhaften Teil eines neuronalen Netzwerks 200 in Übereinstimmung mit bestimmten Ausführungsformen dar. Das neuronale Netzwerk 200 umfasst Neuronaleinheiten X1-X9. Neuronaleinheiten X1-X4 sind Eingangsneuronaleinheiten, die entsprechend primäre Eingänge I1-I4 empfangen (die konstant gehalten werden können, während das neuronale Netzwerk 200 einen Ausgang verarbeitet). Jeder geeignete primäre Eingang kann verwendet werden. Als ein Beispiel kann, wenn das neuronale Netzwerk 200 Bildverarbeitung durchführt, ein primärer Eingangswert der Wert eines Pixels aus einem Bild sein (und der Wert des primären Eingangs kann konstant bleiben, während das Bild verarbeitet wird). Als ein weiteres Beispiel kann, wenn das neuronale Netzwerk 200 Sprachverarbeitung durchführt, der primäre Eingangswert, der auf eine bestimmte Eingangsneuronaleinheit angewendet wird, sich im Laufe der Zeit ändern, basierend auf Änderungen des Spracheingangs.
  • Während ein bestimmtes Topologie- und Konnektivitätsschema in 2 gezeigt wird, können die Lehren der vorliegenden Offenbarung in neuronalen Netzwerken verwendet werden, die eine beliebige geeignete Topologie und/oder Konnektivität aufweisen. Beispielsweise kann ein neuronales Netzwerk ein vorwärtsgerichtetes neuronales Netzwerk, ein rekurrentes Netzwerk oder ein anderes neuronales Netzwerk mit einer beliebigen geeigneten Konnektivität zwischen Neuronaleinheiten sein. In der dargestellten Ausführungsform hat jede Verknüpfung zwischen zwei Neuronaleinheiten ein Synapsengewicht, das die Stärke der Beziehung zwischen den zwei Neuronaleinheiten anzeigt. Die Synapsengewichte sind als WXY dargestellt, wobei X die präsynaptische Neuronaleinheit anzeigt und Y die postsynaptische Neuronaleinheit anzeigt. Verknüpfungen zwischen den Neuronaleinheiten können in ihrer Wirkung auf den Aktivierungszustand der verbundenen Neuronaleinheiten exzitatorisch oder inhibitorisch sein. Beispielsweise kann ein Puls, der sich von X1 zu X5 ausbreitet, das Membranpotential von X5 in Abhängigkeit vom Wert von W15 erhöhen oder verringern. In verschiedenen Ausführungsformen können die Verbindungen gerichtet oder nicht gerichtet sein.
  • Im Allgemeinen kann, während jedes Zeitschritts eines neuronalen Netzwerks, eine Neuronaleinheit jeden geeigneten Eingang empfangen, wie etwa einen Vorspannungswert oder einen oder mehrere Eingangspulse von einer oder mehreren der Neuronaleinheiten, die über entsprechende Synapsen mit der Neuronaleinheit verbunden sind (diese Menge von Neuronaleinheiten wird auch als Neuronaleinheiten mit Eingangsauffächerung der Neuronaleinheit bezeichnet). Der Vorspannungswert, der auf eine Neuronaleinheit angewendet wird, kann eine Funktion eines primären Eingangs, der auf eine Eingangsneuronaleinheit angewendet wird, und/oder irgendein anderer Wert, der auf eine Neuronaleinheit angewendet wird (z. B. ein konstanter Wert, der während des Trainings oder einer anderen Operation des neuronalen Netzwerks angepasst werden kann), sein. In verschiedenen Ausführungsformen kann jede Neuronaleinheit mit ihrem eigenen Vorspannungswert verknüpft werden, oder ein Vorspannungswert kann auf mehrere Neuronaleinheiten angewendet werden.
  • Die Neuronaleinheit kann unter Nutzung der Werte ihrer Eingänge und ihres aktuellen Membranpotentials eine Funktion durchführen. Beispielsweise können die Eingänge zum aktuellen Membranpotential der Neuronaleinheit addiert werden, um ein aktualisiertes Membranpotential zu erzeugen. Als ein weiteres Beispiel kann eine nichtlineare Funktion, wie etwa eine Sigmoid-Übertragungsfunktion, auf die Eingänge und das aktuelle Membranpotential angewendet werden. Jede andere geeignete Funktion kann verwendet werden. Die Neuronaleinheit aktualisiert dann ihr Membranpotential basierend auf dem Ausgang der Funktion. Wenn das Membranpotential einer Neuronaleinheit eine Schwelle überschreitet, kann die Neuronaleinheit Pulse an jede ihrer Neuronaleinheiten mit Ausgangsauffächerung senden (d. h. die Neuronaleinheiten, die mit dem Ausgang der gepulsten Neuronaleinheit verbunden sind). Wenn beispielsweise X1 pulst, können die Pulse auf X5, X6 und X7 ausgebreitet werden. Als ein weiteres Beispiel können, wenn X5 pulst, die Pulse auf X8 und X9 (und in einigen Ausführungsformen auf X1, X2, X3 und X4) ausgebreitet werden. In verschiedenen Ausführungsformen kann, wenn eine Neuronaleinheit pulst, der Puls auf eine oder mehrere verbundene Neuronaleinheiten ausgebreitet werden, die sich auf dem gleichen neuromorphen Kern befinden und/oder in Pakete strukturiert und durch einen oder mehrere Router 104 zu einem neuromorphen Kern übertragen werden, der eine oder mehrere der Neuronaleinheiten mit Ausgangsauffächerung der gepulsten Neuronaleinheit umfasst. Die Neuronaleinheiten, an die ein Puls gesendet wird, wenn eine bestimmte Neuronaleinheit pulst, werden als die Neuronaleinheiten mit Ausgangsauffächerung der Neuronaleinheit bezeichnet.
  • In einer bestimmten Ausführungsform können ein oder mehrere Speicherfelder Speicherzellen umfassen, die die Synapsengewichte, Membranpotentiale, Schwellen, Ausgänge (z. B. die Anzahl von Malen, die eine Neuronaleinheit gepulst hat), Vorspannungsbeträge oder andere Werte, die während des Betriebs des neuronalen Netzwerks 200 verwendet wurden, speichern. Die Anzahl von Bits, die für jeden dieser Werte verwendet wurde, kann von der Umsetzung abhängen. In den oben dargestellten Beispielen können spezifische Bitlängen mit Bezug auf bestimmte Werte beschrieben sein, aber in anderen Ausführungsformen kann jede geeignete Bitlänge verwendet werden. Jeder geeignete flüchtige und/oder nichtflüchtige Speicher kann verwendet werden, um die Speicherfelder umzusetzen.
  • In einer bestimmten Ausführungsform ist das neuronale Netzwerk 200 ein gepulstes neuronales Netzwerk (SNN, Spiking Neural Network), umfassend mehrere Neuronaleinheiten, die jeweils ihre entsprechenden Membranpotentiale über eine Anzahl von Zeitschritten aufzeichnen. Ein Membranpotential wird für jeden Zeitschritt aktualisiert durch Anpassen des Membranpotentials des vorherigen Zeitschritts mit einem Vorspannungsterm, Leckterm (wenn z. B. die Neuronaleinheiten Leaky-integrate-and-Fire-Neuronaleinheiten sind), und/oder Beiträgen für eingehende Pulse. Die Übertragungsfunktion, die auf das Ergebnis angewendet wird, kann einen binären Ausgang erzeugen.
  • Obwohl der Grad von Spärlichkeit in verschiedenen SNNs für typische Mustererkennungsarbeitslasten sehr hoch ist (beispielsweise kann 5 % der gesamten Neuronaleinheitenpopulation bei einem bestimmten Eingangsmuster pulsen), ist die Menge an Energie, die beim Speicherzugriff zum Aktualisieren von neuronalen Zustände aufgewendet wird (selbst bei Abwesenheit von Eingangspulsen), erheblich. Beispielsweise kann Speicherzugriff für das Abrufen von Synapsengewichten und Aktualisieren von Neuronaleinheitenzuständen die primäre Komponente des Gesamtenergieverbrauchs eines neuromorphen Kerns sein. In neuronalen Netzwerken (z. B. SNNs) mit spärlicher Aktivität führen viele Aktualisierungen von Neuronaleinheitenzuständen sehr wenig hilfreiche Berechnungen durch.
  • In verschiedenen Ausführungsformen der vorliegenden Offenbarung wird ein globales Zeitschrittkommunikationsschema für ein ereignisgesteuertes neuronales Netzwerk unter Ausnutzung von Zeitsprungberechnung bereitgestellt. Verschiedene hier beschriebene Ausführungsformen stellen Systeme und Verfahren zum Verringern der Anzahl von Speicherzugriffen ohne Beeinträchtigung der Genauigkeit oder Leistung einer Datenverarbeitungsarbeitslast einer neuromorphen Datenverarbeitungsplattform bereit. In bestimmten Ausführungsformen berechnet das neuronale Netzwerk Änderungen des Zustands der Neuronaleinheit nur bei Zeitschritten, an denen Pulsereignisse verarbeitet werden (d. h. aktive Zeitschritte). Wenn das Membranpotential einer Neuronaleinheit aktualisiert wird, werden die Beiträge zum Membranpotential aufgrund der Zeitschritte, in denen der Zustand der Neuronaleinheit nicht aktualisiert wurde (d. h. Leerlaufzeitschritte) bestimmt und mit den Beiträgen zum Membranpotential aufgrund des aktiven Zeitschritts zusammengefasst. Die Neuronaleinheit kann dann bis zum nächsten aktiven Zeitschritt im Leerlauf bleiben (d. h. Aktualisierungen des Membranpotentials überspringen), dadurch die Leistung verbessernd und gleichzeitig Speicherzugriffe verringernd, um Energieverbrauch zu reduzieren (aufgrund des Überspringens von Speicherzugriffen für Leerlaufzeitschritte). Der nächste aktive Zeitschritt für ein neuronales Netzwerk (oder einen Unterteil davon) kann an einer zentralen Position bestimmt und an verschiedene neuromorphe Kerne des neuronalen Netzwerks kommuniziert werden.
  • Das ereignisgesteuerte neuronale Netzwerk mit Zeitsprung kann verwendet werden, um beliebige geeignete Arbeitslasten durchzuführen, wie etwa die spärliche Codierung von Eingangsbildern oder andere geeignete Arbeitslasten (z. B. Arbeitslasten, bei denen die Häufigkeit von Pulsen relativ niedrig ist). Obwohl hier verschiedene Ausführungsformen im Kontext von SNNs erörtert werden, können die Konzepte dieser Offenbarung auf beliebige geeignete neuronale Netzwerke angewendet werden, wie etwa faltende neuronale Netzwerke oder andere geeignete neuronale Netzwerke.
  • 3A stellt einen beispielhaften Zeitverlauf eines Membranpotentials 302A einer Neuronaleinheit in Übereinstimmung mit bestimmten Ausführungsformen dar. Der dargestellte Zeitverlauf basiert auf zeitschrittbasierten neuronalen Berechnungen, bei denen das Membranpotential einer Neuronaleinheit bei jedem Zeitschritt 308 aktualisiert wird. 3A stellt einen beispielhaften Zeitverlauf eines Membranpotentials für eine Integrate-and-Fire-Neuronaleinheit (ohne Leck) mit einem arbiträren Eingangspulsmuster dar. 304A stellt Zugriffe auf ein Feld dar, in dem Synapsengewichte für Verbindungen zwischen Neuronaleinheiten gespeichert werden („Synapsenfeld“), und 306A stellt Zugriffe auf ein Feld, in dem Vorspannungsterme für die Neuronaleinheiten gespeichert werden („Vorspannungsfeld“), und ein Feld, in dem die aktuellen Membranpotentiale der Neuronaleinheiten gespeichert werden („neuronales Zustandsfeld“), dar. In verschiedenen hier dargestellten Ausführungsformen ist das Membranpotential einfach eine Summe des aktuellen Membranpotentials und der Eingänge zur Neuronaleinheit, obwohl in anderen Ausführungsformen jede geeignete Funktion verwendet werden kann, um ein aktualisiertes Membranpotential zu bestimmen.
  • In verschiedenen Ausführungsformen wird das Synapsenfeld getrennt vom Vorspannungsfeld und/oder vom neuronalen Zustandsfeld gespeichert. In einer bestimmten Ausführungsform werden die Vorspannungs- und neuronalen Zustandsfelder unter Verwendung eines relativ schnellen Speichers, wie etwa einer Registerdatei (in der jede Speicherzelle ein Transistor, ein Auffangspeicher oder eine andere geeignete Struktur ist), umgesetzt, während das Synapsenfeld unter Verwendung eines relativ langsameren Speichers (z. B. eines statischen Direktzugriffsspeichers (SRAM, Static Random-Access Memory) gespeichert wird, der besser zum Speichern großer Mengen von Informationen geeignet ist (aufgrund der relativ großen Anzahl von Verbindungen zwischen Neuronaleinheiten). Allerdings können in verschiedenen Ausführungsformen beliebige geeignete Speichertechnologien (z. B. Registerdateien, SRAM, dynamischer Direktzugriffsspeicher (DRAM, Dynamic Random-Access Memory), Flash-Speicher, Phasenwechselspeicher oder ein anderer geeigneter Speicher) für jedes dieser Felder verwendet werden.
  • Bei Zeitschritt 308A wird auf das Vorspannungsfeld und das neuronale Zustandsfeld zugegriffen, und das Membranpotential der Neuronaleinheit wird um einen Vorspannungsterm (B) für die Neuronaleinheit erhöht, und das aktualisierte Membranpotential wird in das neuronale Zustandsfeld zurückgeschrieben. Während des Zeitschritts 308A können auch die anderen Neuronaleinheiten aktualisiert werden (in verschiedenen Ausführungsformen kann Verarbeitungslogik von mehreren Neuronaleinheiten gemeinsam genutzt werden, und die Neuronaleinheiten können anschließend aktualisiert werden). Bei Zeitschritt 308B wird erneut auf das Vorspannungsfeld und das neuronale Zustandsfeld zugegriffen, und das Membranpotential wird um B erhöht. Bei Zeitschritt 308C wird ein Eingangspuls 310A empfangen. Entsprechend wird auf das Synapsenfeld zugegriffen, um das Gewicht der Verbindung zwischen der Neuronaleinheit, die gerade verarbeitet wird, und der Neuronaleinheit, von der der Puls empfangen wurde (oder mehrere Synapsengewichte, wenn mehrere Pulse empfangen werden), abzurufen. In diesem Beispiel hat der Puls eine negative Auswirkung auf das Membranpotential (obwohl ein Puls alternativ eine positive Auswirkung auf das Membranpotential oder keine Auswirkung auf das Membranpotential haben kann), und die Gesamtauswirkung auf das Potential bei Zeitschritt 308C ist B - W. Bei den Zeitschritten 308D-308F werden keine Eingangspulse empfangen, sodass nur auf das Vorspannungsfeld und das neuronale Zustandsfeld zugegriffen wird und der Vorspannungsterm bei jedem Zeitschritt zum Membranpotential addiert wird. Bei Zeitschritt 308G wird ein weiterer Eingangspuls 310B empfangen, sodass auf das Synapsenfeld, das Vorspannungsfeld und das neuronale Zustandsfeld zugegriffen wird, um Werte zu erhalten, um das Membranpotential zu aktualisieren.
  • Bei diesem Ansatz, bei dem der neuronale Zustand bei jedem Zeitschritt aktualisiert wird, kann das Membranpotential ausgedrückt werden als: u ( t + 1 ) = u ( t ) + B i W i I i
    Figure DE102018006015A1_0001
    wobei u(t + 1) gleich dem Membranpotential beim nächsten Zeitschritt ist, u(t) gleich dem aktuellen Membranpotential ist, B der Vorspannungsterm für die Neuronaleinheit ist und Wi · Ii das Produkt aus einer binären Anzeige (d. h. 1 oder 0), ob eine bestimmte Neuronaleinheit i pulst, die mit der Neuronaleinheit, die gerade verarbeitet wird, gekoppelt ist, und dem Synapsengewicht der Verbindung zwischen Neuronaleinheit i und der Neuronaleinheit, die gerade verarbeitet wird, ist. Die Summierung kann über alle Neuronaleinheiten, die mit der Neuronaleinheit, die gerade verarbeitet wird, gekoppelt sind, durchgeführt werden.
  • In diesem Beispiel, wo die Neuronaleinheiten bei jedem Zeitschritt aktualisiert werden, wird bei jedem Zeitschritt auf das Vorspannungsfeld und das neuronale Zustandsfeld zugegriffen. Ein solcher Ansatz kann übermäßige Energie verwenden, wenn Eingangspulse relativ selten sind (z. B. für Arbeitslasten wie das spärliche Codieren von Bildern).
  • 3B stellt einen beispielhaften Zeitverlauf eines Membranpotentials 302B einer Neuronaleinheit eines ereignisgesteuerten und zeitspringenden neuronalen Netzwerks in Übereinstimmung mit bestimmten Ausführungsformen dar. Der dargestellte Zeitverlauf ist eine ereignisgesteuerte und zeitsprungbasierte neuronale Berechnung, bei der das Membranpotential einer Neuronaleinheit nur bei den aktiven Zeitschritten 308C und 308G, in denen einer oder mehrere Eingangspulse empfangen werden, aktualisiert wird. Wie in 3A stellt dieser Zeitverlauf eine Integrate-and-Fire-Neuronaleinheit (ohne Leck) mit dem gleichen Pulsmuster und Vorspannungseingang wie Zeitverlauf 302A dar. 304B stellt Zugriffe auf ein Synapsenfeld dar, und 306B stellt Zugriffe auf ein Vorspannungsfeld und ein neuronales Zustandsfeld dar.
  • Im Gegensatz zu dem in 3A gezeigten Ansatz überspringt die Neuronaleinheit die Zeitschritte 308A und 308B, und auf das Vorspannungsfeld und das neuronale Zustandsfeld wird nicht zugegriffen. Bei Zeitschritt 308C wird Eingangspuls 310A empfangen. Ähnlich dem Zeitverlauf aus 3A wird auf das Synapsenfeld zugegriffen, um das Gewicht der Verbindung zwischen der Neuronaleinheit, die gerade verarbeitet wird, und der Neuronaleinheit, von der der Puls empfangen wurde (oder mehrere Synapsengewichte, wenn mehrere Pulse empfangen werden), abzurufen. Auf das neuronale Zustandsfeld und das Vorspannungsfeld wird ebenfalls zugegriffen. Zusätzlich zur Identifizierung von Synapsengewichten entsprechend den empfangenen Pulsen werden die Eingänge zur Neuronaleinheit für den aktuellen Zeitschritt und alle Leerlaufzeitschritte, die noch nicht berücksichtigt wurden (z. B. Zeitschritte, die zwischen aktiven Zeitschritten auftreten), bestimmt (z. B. über den Vorspannungsfeldzugriff oder andere Mittel). Entsprechend wird die Aktualisierung des Membranpotentials bei 308C als 3*B - W berechnet, was drei Vorspannungsterme (einen für den aktuellen Zeitschritt und zwei für die Leerlaufzeitschritte 308A und 308B, die übersprungen wurden) und das Gewicht des eingehenden Pulses umfasst. Die Neuronaleinheit überspringt dann die Zeitschritte 308D, 308E und 308F. Beim nächsten aktiven Zeitschritt 308G wird das Membranpotential erneut aktualisiert, basierend auf Eingängen an jedem Leerlaufzeitschritt und dem aktuellen Zeitschritt, was in einer Änderung des Membranpotentials von 4*B - W resultiert.
  • Nach jedem aktiven Zeitschritt aus 3B stimmt das Membranpotential 302B mit dem Membranpotential 302A des gleichen Zeitschritts aus 3A überein. In diesem Beispiel, bei dem die Neuronaleinheiten in Reaktion auf eingehende Pulse anstatt bei jedem Zeitschritt aktualisiert werden, wird auf das Vorspannungsfeld und das neuronale Zustandsfeld nur in aktiven Zeitschritten zugegriffen, wodurch Energie gespart und Verarbeitungszeit verbessert wird, bei gleichzeitiger Beibehaltung einer genauen Aufzeichnung der Membranpotentiale.
  • Bei diesem Ansatz, bei dem der neuronale Zustand nicht bei jedem Zeitschritt aktualisiert wird und der Vorspannungsterm vom letzten verarbeiteten Zeitschritt bis zum Zeitschritt, der gerade verarbeitet wird, konstant bleibt, kann das Membranpotential ausgedrückt werden als: u ( t + n ) = u ( t ) + B n i W i I i
    Figure DE102018006015A1_0002
    wobei u(t + n) gleich dem Membranpotential bei dem Zeitschritt, der gerade verarbeitet wird, ist, u(t) gleich dem Membranpotential beim letzten verarbeiteten Zeitschritt ist, n die Anzahl von Zeitschritten ab dem letzten verarbeiteten Zeitschritt bis zu dem Zeitschritt, der gerade verarbeitet wird, ist, B der Vorspannungsterm für die Neuronaleinheit ist und Wi · Ii das Produkt aus einer binären Anzeige (d. h. 1 oder 0), ob eine bestimmte Neuronaleinheit i pulst, die mit der Neuronaleinheit, die gerade verarbeitet wird, gekoppelt ist, und dem Synapsengewicht der Verbindung zwischen Neuronaleinheit i und der Neuronaleinheit, die gerade verarbeitet wird, ist. Die Summierung kann über alle Neuronaleinheiten, die mit der Neuronaleinheit, die gerade verarbeitet wird, gekoppelt sind, durchgeführt werden. Wenn die Vorspannung ab dem letzten verarbeiteten Zeitschritt bis zum Zeitschritt, der gerade verarbeitet wird, nicht konstant ist, kann die Gleichung modifiziert werden zu:
    Figure DE102018006015A1_0003
    wobei Bj der Vorspannungsterm für die Neuronaleinheit bei Zeitschrittj ist.
  • In verschiedenen Ausführungsformen kann, nachdem das Membranpotential für eine Neuronaleinheit aktualisiert ist, eine Bestimmung dahingehend durchgeführt werden, wie viele Zeitschritte in der Zukunft die Neuronaleinheit bei Abwesenheit von Eingangspulsen pulsen soll (d. h. die Berechnung wird unter der Annahme vorgenommen, dass, bevor die Neuronaleinheit pulst, keine Eingangspulse von der Neuronaleinheit empfangen werden). Bei einer konstanten Vorspannung B kann die Anzahl von Zeitschritten, bis das Membranpotential eine Schwelle θ überschreitet, wie folgt bestimmt werden: t n e x t = ( θ u ) / B
    Figure DE102018006015A1_0004
    wobei tnext gleich der Anzahl von Zeitschritten ist, bis das Membranpotential die Schwelle überschreitet, u gleich dem Membranpotential ist, das für den aktuellen Zeitschritt berechnet wurde, und B gleich dem Vorspannungsterm ist. Obwohl die Methodik hier nicht gezeigt ist, kann die Anzahl von Zeitschritten, bis das Membranpotential in Abwesenheit von Eingangspulsen eine Schwelle θ überschreitet, auch in Situationen bestimmt werden, bei denen eine Vorspannung nicht konstant bleibt, durch Bestimmen, wie viele Zeitschritte verstreichen, bevor die Summe der Vorspannungen an jedem Zeitschritt plus das aktuelle Membranpotential die Schwelle überschreiten.
  • 4A stellt einen beispielhaften Zeitverlauf eines Membranpotentials einer Integrate-and-Fire-Neuronaleinheit in Übereinstimmung mit bestimmten Ausführungsformen dar. Dieser Zeitverlauf stellt einen zeitschrittbasierten Ansatz ähnlich dem in 4A gezeigten dar, wobei das Membranpotential einer Neuronaleinheit bei jedem Zeitschritt aktualisiert wird. 4A stellt auch eine Schwelle θ dar. Sobald das Membranpotential die Schwelle überschreitet, kann die Neuronaleinheit einen Puls erzeugen und dann in eine Refraktärperiode eintreten, die dazu ausgelegt ist zu verhindern, dass die Neuronaleinheit unmittelbar wieder pulst (in einigen Ausführungsformen kann das Potential auf einen bestimmten Wert zurückgesetzt werden, wenn die Neuronaleinheit pulst). Wie oben angegeben, kann das Membranpotential im Zeitschrittansatz wie folgt berechnet werden: u ( t + 1 ) = u ( t ) + B i W i
    Figure DE102018006015A1_0005
  • 4B stellt einen beispielhaften Zeitverlauf eines Membranpotentials einer Leaky-Integrate-and-Fire-Neuronaleinheit in Übereinstimmung mit bestimmten Ausführungsformen dar. In der dargestellten Ausführungsform leckt das Membranpotential zwischen Zeitschritten, und die Eingänge werden basierend auf einer Zeitkonstante τ skaliert. Das Membranpotential kann entsprechend der folgenden Gleichung berechnet werden: u ( t + 1 ) = ( 1 τ ) u ( t ) + τ ( B i W i )
    Figure DE102018006015A1_0006
  • Ähnlich den oben beschriebenen Ausführungsformen kann, nachdem das Membranpotential für eine Leaky-Integrate-and-Fire-Neuronaleinheit aktualisiert ist, eine Bestimmung dahingehend durchgeführt werden, wie viele Zeitschritte in der Zukunft bei Abwesenheit von Eingangspulsen die Neuronaleinheit pulsen soll. Bei einer konstanten Vorspannung B kann die Anzahl von Zeitschritten, bis das Membranpotential eine Schwelle θ überschreitet, basierend auf der obigen Gleichung berechnet werden: Bei Abwesenheit von Eingangspulsen wird die obige Gleichung zu: u ( t + 1 ) = ( 1 τ ) u ( t )
    Figure DE102018006015A1_0007
  • In ähnlicher Weise: u ( t + 2 ) = ( 1 τ ) u ( t + 1 ) = ( 1 τ ) 2 u ( t ) + τ
    Figure DE102018006015A1_0008
  • Entsprechend: u ( t + n ) = ( 1 τ ) n u ( t ) + τ B [ 1 + ( 1 τ ) + .. ( 1 τ ) n 1 ] = ( 1 τ ) n u ( t ) + B [ 1 ( 1 τ ) n ] = ( 1 τ ) n ( u ( t ) B ) + B
    Figure DE102018006015A1_0009
  • Um dies für tnext zu lösen (die Anzahl von Zeitschritten, bis die Neuronaleinheit bei Abwesenheit von Eingangspulsen die Schwelle θ überschreitet), wird u(t + n) auf θ gesetzt, und n (hier als tnext gezeigt) wird auf einer Seite der Gleichung isoliert:
    Figure DE102018006015A1_0010
  • Wobei unew das letzte berechnete Membranpotential für die Neuronaleinheit ist. Daher kann tnext unter Verwendung von Logik bestimmt werden, die die obige Berechnung nutzt. In einigen Ausführungsformen kann die Logik durch Verwendung einer Annäherung vereinfacht werden. In einer bestimmten Ausführungsform kann die Gleichung für u(t + n): u ( t + n ) = ( 1 τ ) n ( u ( t ) B ) + B τ i W i
    Figure DE102018006015A1_0011
    angenähert werden als: u ( t + n ) ( 1 n τ ) ( u ( t ) B ) + B τ i W i
    Figure DE102018006015A1_0012
  • Nach Entfernen des Beitrags von den eingehenden Pulsen und Setzen von u(t + n) gleich θ, kann tnext berechnet werden als: t n e x t = 1 τ ( u n e w θ u n e w B )
    Figure DE102018006015A1_0013
  • Entsprechend kann tnext über Logik gelöst werden, die diese Annäherung umsetzt. Obwohl die Methodik hier nicht gezeigt ist, kann die Anzahl von Zeitschritten, bis das Membranpotential in Abwesenheit von Eingangspulsen eine Schwelle θ überschreitet, auch in Situationen bestimmt werden, bei denen eine Vorspannung nicht konstant bleibt, durch Bestimmen, wie viele Zeitschritte verstreichen, bevor die Summe der Vorspannungen an jedem Zeitschritt plus das aktuelle Membranpotential die Schwelle überschreiten (und Einberechnen des Leckstroms bei jedem Zeitschritt).
  • 5 stellt Kommunikation von lokalen nächsten Pulszeiten über einem NoC in Übereinstimmung mit bestimmten Ausführungsformen dar. Wie oben beschrieben, erhöhen ereignisgesteuerte SNNs die Effizienz beim Bestimmen des nächsten Zeitschritts, bei dem ein Eingangspuls auftritt (d. h. nächste Pulszeit), für eine bestimmte Gruppe von Neuronaleinheiten, im Gegensatz zur Annahme, dass ein Puls standardmäßig im nächsten Zeitschritt auftritt. Wenn beispielsweise Neuronaleinheiten in Schichten angeordnet sind, in denen jedes Neuron in einer Schicht gerichtete Verbindungen zu den Neuronen der nachfolgenden Schicht hat (z. B. ein vorwärtsgerichtetes Netzwerk), kann der nächste zu verarbeitende Zeitschritt für die Neuronaleinheiten einer bestimmten Schicht der Zeitschritt sein, der unmittelbar auf den Zeitschritt folgt, bei dem eine beliebige Neuronaleinheit der vorhergehenden Schicht pulsen soll. Als ein weiteres Beispiel ist in einem rekurrenten Netzwerk, in dem jede Neuronaleinheit eine gerichtete Verbindung zu jeder anderen Neuronaleinheit hat, der nächste zu verarbeitende Zeitschritt für die Neuronaleinheiten der nächste Zeitschritt, an dem eine beliebige der Neuronaleinheiten pulsen soll. Zum Zwecke der Erläuterung fokussiert die folgende Diskussion auf Ausführungsformen, die ein rekurrentes Netzwerk beinhalten, obwohl die Lehren für jedes geeignete neuronale Netzwerk angepasst werden können.
  • In ereignisgesteuerten SNNs, die mehrere Kerne nutzen (z. B. kann jeder neuromorphe Kern mehrere Neuronaleinheiten des Netzwerks umfassen), kann der nächste Zeitschritt, in dem ein Puls auftritt, über alle Kerne kommuniziert werden, um sicherzustellen, dass Pulse in der korrekten Reihenfolge verarbeitet werden. Die Kerne können jeweils Pulsintegration und Schwellenberechnungen für ihre Neuronaleinheiten unabhängig und parallel durchführen. In einem ereignisgesteuerten neuronalen Netzwerk kann ein Kern auch die nächste Pulszeit bestimmen, zu der eine beliebige Neuronaleinheit im Kern bei Abwesenheit von Eingangspulsen vor der berechneten spekulativen nächsten Pulszeit pulst. Beispielsweise kann eine nächste Pulszeit für eine Neuronaleinheit unter Verwendung der oben erörterten Methodiken oder anderer geeigneter Methodiken berechnet werden.
  • Zum Auflösen von Pulsabhängigkeiten und Berechnen der nicht spekulativen Pulszeit für das neuronale Netzwerk (d. h. des nächsten Zeitschritts, in dem ein Puls in dem Netzwerk auftritt), wird eine minimale nächste Pulszeit über die Kerne berechnet. In verschiedenen Ausführungsformen verarbeiten alle Kerne den bzw. die Pulse, die zu dieser nicht spekulativen nächsten Pulszeit erzeugt werden. In einigen Systemen kommuniziert jeder Kern die nächste Pulszeit seiner Neuronaleinheiten unter Verwendung von Unicast-Nachrichten an jeden anderen Kern, und dann bestimmt jeder Kern die minimale nächste Pulszeit der empfangenen Pulszeiten und führt die Verarbeitung am entsprechenden Zeitschritt durch. Andere Systeme können sich auf eine globale Ereigniswarteschlange und eine Steuerung verlassen, um die verarbeiteten Zeitschritte zu koordinieren. In verschiedenen Ausführungsformen der vorliegenden Offenbarung wird Kommunikation der Pulszeit in einer energieeffizienten Weise mit niedriger Latenz durch Verarbeitung im Netzwerk und Multicast-Pakete durchgeführt.
  • In der dargestellten Ausführungsform ist jeder Router mit einem entsprechenden Kern gekoppelt. Beipsielsweise ist Router Null mit Kern Null gekoppelt, Router Eins ist mit Kern Eins gekoppelt, und so weiter. Jeder dargestellte Router kann jede geeignete Eigenschaft von Router 104 haben, und jeder Kern kann jede geeignete Eigenschaft von Kern 108 oder andere geeignete Eigenschaften haben. Beispielsweise können die Kerne jeweils neuromorphe Kerne sein, die jede geeignete Anzahl von Neuronaleinheiten umsetzen. In anderen Ausführungsformen kann ein Router direkt mit jeder Anzahl von neuromorphen Kernen gekoppelt sein (z. B. über Ports des Routers). Beispielsweise kann jeder Router direkt mit vier neuromorphen Kernen gekoppelt sein.
  • Nachdem ein bestimmter Zeitschritt verarbeitet wird, kann eine Sammeloperation die nächste Pulszeit für das Netzwerk an eine zentrale Einheit kommunizieren (z. B. Router10 in der dargestellten Ausführungsform). Die zentrale Einheit kann jede geeignete Verarbeitungslogik sein, wie etwa ein Router, ein Kern oder eine damit zusammenhängende Logik. In einer bestimmten Ausführungsform können die Kommunikationen zwischen Kernen und Routern während der Sammeloperation einem überspannenden Baum folgen, der die zentrale Einheit als Wurzel hat. Jeder Knoten des Baums (z. B. ein Kern oder ein Router) kann eine Kommunikation mit einer nächsten Pulszeit an seinen übergeordneten Knoten (z. B. Router) auf dem überspannenden Baum senden.
  • Eine lokale nächste Pulszeit für einen bestimmten Router ist die minimale nächste Pulszeit der nächsten Pulszeiten, die an diesem Router empfangen werden. Ein Router kann Pulszeiten von jedem der Kerne, die direkt mit dem Router verbunden sind (in der dargestellten Ausführungsform ist jeder Router nur mit einem einzelnen Kern direkt gekoppelt), sowie eine oder mehrere nächste Pulszeiten von angrenzenden Routern empfangen. Der Router wählt die lokale nächste Pulszeit als das Minimum der empfangenen nächsten Pulszeiten aus und leitet diese lokale nächste Pulszeit an den nächsten Router weiter. In der dargestellten Ausführungsform sind die lokalen nächsten Pulszeiten der Router 0, 3, 4, 7, 8, 11, 12 und 15 einfach die nächste Pulszeit der entsprechenden Kerne, mit denen die Router gekoppelt sind. Router1 wählt die lokale nächste Pulszeit aus der lokalen nächsten Pulszeit, die er von Router0 empfangen hat, und der nächsten Pulszeit, die er von Kern1 empfangen hat, aus. Router5 wählt die lokale nächste Pulszeit aus der lokalen nächsten Pulszeit, die er von Router4 empfangen hat, und der nächsten Pulszeit, die er von Kern5 empfangen hat, aus. Router9 wählt die lokale nächste Pulszeit aus der lokalen nächsten Pulszeit, die er von Router8 empfangen hat, und der nächsten Pulszeit, die er von Kern9 empfangen hat, aus. Router13 wählt die lokale nächste Pulszeit aus der lokalen nächsten Pulszeit, die er von Router12 empfangen hat, und der nächsten Pulszeit, die er von Kern13 empfangen hat, aus. Router2 wählt die lokale nächste Pulszeit aus der lokalen nächsten Pulszeit, die er von Router1 empfangen hat, der lokalen nächsten Pulszeit, die er von Router3 empfangen hat, und der nächsten Pulszeit, die er von Kern2 empfangen hat, aus. Router6 wählt die lokale nächste Pulszeit aus der lokalen nächsten Pulszeit, die er von Router5 empfangen hat, der lokalen nächsten Pulszeit, die er von Router2 empfangen hat, der lokalen nächsten Pulszeit, die er von Router7 empfangen hat, und der nächsten Pulszeit, die er von Kern6 empfangen hat, aus. Router14 wählt die lokale nächste Pulszeit aus der lokalen nächsten Pulszeit, die er von Router13 empfangen hat, der lokalen nächsten Pulszeit, die er von Router15 empfangen hat, und der nächsten Pulszeit, die er von Kern14 empfangen hat, aus. Schließlich wählt Router10 (der Wurzelknoten des überspannenden Baumes) die globale nächste Pulszeit aus den lokalen nächsten Pulszeiten, die er von Router6, Router9, Router11 und Router14 empfangen hat, und der nächsten Pulszeit, der von Kern10 empfangen hat, aus. Diese globale nächste Pulszeit stellt die nächste Pulszeit über das Netzwerk dar, zu der eine Neuronaleinheit pulsen wird.
  • Daher senden die Blätter des überspannenden Baumse (Kerne 0 bis 15) ihren spekulativen nächsten Zeitschritt einen Sprung in Richtung der Wurzel des überspannenden Baumes (z. B. in einem Paket). Jeder Router sammelt Pakete von Eingabeports, bestimmt die minimale nächste Pulszeit unter den Eingängen und kommuniziert nur die minimale nächste Pulszeit einen Sprung in Richtung der Wurzel. Dieser Prozess setzt sich fort, bis die Wurzel die minimale Pulszeit aller verbundenen Kerne empfängt, wobei zu diesem Zeitpunkt die Pulszeit nicht spekulativ wird und an die Kerne kommuniziert werden kann (z. B. unter Verwendung einer Multicast-Nachricht), sodass die Kerne den Zeitschritt, der durch die nächste Pulszeit angezeigt wird, verarbeiten können (z. B. können die Neuronaleinheiten jedes Kerns aktualisiert werden, und die neue nächste Pulszeit kann bestimmt werden).
  • Verwenden dieses Wellenmechanismus, anstatt Senden einzelner Unicast-Nachrichten von jedem Kern zur Wurzel verringert Netzwerkkommunikation und verbessert Latenz und Leistung. Die Topologie des Baumes, die die Routerkommunikationen führt, kann vorab berechnet oder spontan unter Verwendung beliebiger geeigneter Techniken bestimmt werden. In der dargestellten Ausführungsform kommunizieren die Router unter Verwendung eines Baumes, der einem Dimensionsordnungsweiterleitungsschema folgt, spezifisch einem Weiterleitungsschema mit X als erstes, Y als zweites, wobei die lokalen nächsten Pulszeiten zuerst in Ost/West-Richtung transportiert werden und dann in Nord/Süd-Richtung. In anderen Ausführungsformen kann jedes geeignete Weiterleitungsschema verwendet werden.
  • In verschiedenen Ausführungsformen ist jeder Router dazu programmiert zu wissen, von wie vielen Eingabeports er die nächsten Pulszeiten empfängt und an welche Ausgabeports die lokale nächste Pulszeit gesendet werden soll. In verschiedenen Ausführungsformen kann jede Kommunikation (z. B. Paket) zwischen Routern, die eine lokale nächste Pulszeit umfasst, ein Kennzeichnungsbit oder einen Opcode umfassen, das bzw. der anzeigt, dass die Kommunikation eine lokale nächste Pulszeit umfasst. Jeder Router wartet, um Eingaben von der angegebenen Anzahl von Eingabeports zu empfangen, bevor er die lokale nächste Pulszeit bestimmt und die lokale nächste Pulszeit an den nächsten Sprung sendet.
  • 6 stellt Kommunikation einer globalen nächsten Pulszeit über einem auf einem NoC umgesetzten neuronalen Netzwerk in Übereinstimmung mit bestimmten Ausführungsformen dar. In der dargestellten Ausführungsform sendet die zentrale Einheit (z. B. Router10) eine Multicast-Nachricht umfassend die globale nächste Pulszeit an jeden Kern des Netzwerks. In einer bestimmten Ausführungsform folgt die Multicast-Nachricht dem gleichen überspannenden Baum (wobei sich die Kommunikationen in einer Rückwärtsrichtung bewegen) wie die lokalen nächsten Pulszeiten, obwohl in anderen Ausführungsformen die globale nächste Pulszeit unter Verwendung eines beliebigen geeigneten Multicast-Verfahrens an die Kerne kommuniziert werden kann. Bei jedem Zweig im Baum kann die Nachricht über einen Eingabeport empfangen und an mehrere Ausgabeports repliziert werden. In der Multicast-Phase wird die globale nächste Pulszeit an alle Kerne kommuniziert, und alle Kerne verarbeiten Neuronenaktivität, die während dieses Zeitschritts auftritt, unabhängig von ihrem eigenen lokalen spekulativen nächsten Zeitschritt.
  • 7 stellt Logik zum Berechnen einer lokalen nächsten Pulszeit über einem NoC in Übereinstimmung mit bestimmten Ausführungsformen dar. In verschiedenen Ausführungsformen kann die Logik zum Berechnen einer lokalen nächsten Pulszeit an jedem geeigneten Knoten des Netzwerks enthalten sein, wie etwa einem Kern, einem Router oder einer Netzwerkschnittstelle zwischen einem Kern und einem Router. In ähnlicher Weise kann die Logik zum Berechnen einer globalen nächsten Pulszeit und Senden der globalen nächsten Pulszeit über eine Multicast-Nachricht an jedem geeigneten Knoten des Netzwerks enthalten sein.
  • In verschiedenen Ausführungsformen kann die dargestellte Logik Schaltungsanordnungen zum Durchführen der hier beschriebenen Funktionen umfassen. In einer bestimmten Ausführungsform kann sich die in 7 dargestellte Logik innerhalb jedes Routers befinden und kann mit einem oder mehreren Kernen (oder Netzwerkschnittstellen zwischen den Kernen und dem Router) und mit den Routerports (d. h. Ports, die mit anderen Routern gekoppelt sind) kommunizieren. Die Anzahl der Eingabeports, die dazu dienen, lokale nächste Pulszeiten von Kernen und/oder Routern zu empfangen, und der Ausgabeport, der dazu dient, die berechnete lokale nächste Pulszeit an den nächsten Sprung zu senden, können programmiert werden, wenn das neuronale Netzwerk auf Hardware des NoC abgebildet wird, und während des Betriebs des neuronalen Netzwerks konstant bleiben.
  • Die Eingabeports 702 können beliebige geeignete Eigenschaften der Bezug nehmend auf 1 beschriebenen Eingabeports umfassen. Ein Eingabeport kann mit einem Kern oder einem anderen Router verbunden sein. Die dargestellten „Daten“ können Pakete sein, einschließlich nächste Pulszeiten (d. h. nächste Pulszeit-Pakete), die durch einen Router oder einen Kern gesendet werden. In verschiedenen Ausführungsformen können diese Pakete mit einem Opcode (oder einem Kennzeichen) im Paketkopf bezeichnet werden, was sie von anderen Typen von Paketen unterscheidet, die über das NoC kommuniziert werden. Anstatt, dass diese Pakete direkt weitergeleitet werden, kann das Paketdatenfeld mit der nächsten Pulszeit unter Verwendung eines Vergleichers 706 mit der aktuellen lokalen nächsten Pulszeit verglichen werden. Der asynchrone Zusammenführungsblock 704 kann steuern, welche lokale nächste Pulszeit für den Vergleicher 706 bereitgestellt wird (und kann Arbitrierung bereitstellen, wenn mehrere Pakete, umfassend nächste Pulszeiten, bereit sind, verarbeitet zu werden). Der Vergleicher 706 kann die ausgewählte lokale nächste Pulszeit mit einer aktuellen lokalen nächsten Pulszeit, die im Puffer 708 gespeichert ist, vergleichen. Wenn die ausgewählte lokale nächste Pulszeit niedriger als die in Puffer 708 gespeicherte lokale nächste Pulszeit ist, wird die ausgewählte lokale nächste Pulszeit als die aktuelle lokale nächste Pulszeit in Puffer 708 gespeichert. Der asynchrone Zusammenführungsblock 704 kann auch ein Anforderungssignal an Zähler 710 senden, der die Anzahl von lokalen nächsten Pulszeiten aufzeichnet, die verarbeitet wurden. Das Anforderungssignal kann den durch den Zähler 710 gespeicherten Wert inkrementieren. Der im Zähler gespeicherte Wert kann gegen einen Wert der Anzahl von Eingängen 712 verglichen werden, die vor dem Betrieb des neuronalen Netzwerks ausgelegt sein können. Die Anzahl von Eingängen kann gleich der Anzahl von lokalen nächsten Pulszeiten sein, die der Router zu empfangen erwartet, nachdem ein Zeitschritt verarbeitet wird und die lokalen nächsten Pulszeiten an die zentrale Einheit gesendet werden. Sobald der Wert von Zähler 710 gleich der Anzahl von Eingängen ist, wurden alle lokalen nächsten Pulszeiten verarbeitet, und der im Minimumpuffer 708 gespeicherte Wert stellt die lokale nächste Pulszeit für den Router dar. Der Router kann ein Paket erzeugen, das die lokale nächste Pulszeit enthält, und das Paket in einer vorab programmierten Richtung in Richtung des zentralen Orts (z. B. des Wurzelknotens des überspannenden Baumes) senden. Beispielsweise kann das Paket über einen Ausgabeport an den Router des nächsten Sprungs gesendet werden. Wenn der Router der zentrale Router ist, ist die lokale nächste Pulszeit, die er berechnet, die globale nächste Pulszeit und kann über mehrere unterschiedliche Ausgabeports als Multicast-Paket kommuniziert werden.
  • Nachdem die lokale nächste Pulszeit an den Ausgabeport kommuniziert wird, werden der Minimumpuffer 708 und Zähler 710 zurückgesetzt. In einer Ausführungsform kann der Minimumpuffer 708 auf einen Wert gesetzt werden, der hoch genug ist, um sicherzustellen, dass jede empfangene lokale nächste Pulszeit kleiner als der Rücksetzwert ist und den Rücksetzwert überschreibt.
  • Obwohl die dargestellte Logik asynchron ist (z. B. für Verwendung in einem asynchronen NoC ausgelegt), können beliebige geeignete Schaltungstechniken verwendet werden (z. B. kann die Logik synchrone Schaltungen umfassen, die für ein synchrones NoC angepasst sind). In bestimmten Ausführungsformen kann die Logik eine blockierende Flusssteuerung mit 1 Flit pro Paket nutzen (z. B. für die Anforderungs- (request) und Quittierungssignale (ack)), obwohl in verschiedenen Ausführungsformen jede geeignete Flusssteuerung mit garantierter Zustellung verwendet werden kann. In der dargestellten Ausführungsform können die Anforderungs- und Quittierungssignale genutzt werden, um Flusssteuerung bereitzustellen. Sobald beispielsweise ein Eingabesignal (z. B. Daten) gültig ist und ein Ziel der Daten bereit ist (wie durch ein durch das Ziel gesendetes Quittierungssignal angezeigt wird), kann ein Anforderungssignal bestätigt oder umgeschaltet werden, wobei zu diesem Zeitpunkt die Daten durch das Ziel empfangen werden (z. B. kann ein Eingabeport Daten auffangen, die als sein Eingang empfangen wurden, wenn das Anforderungssignal bestätigt ist und der Eingabeport verfügbar ist, um neue Daten zu akzeptieren). Wenn eine nachgelagerte Schaltung nicht bereit ist, kann der Zustand des Quittierungssignals den Eingabeport anweisen, keine Daten zu akzeptieren. In der dargestellten Ausführungsform kann das durch den Ausgabeport gesendete Quittierungssignal den Zähler 710 auf Null zurücksetzen, und den Minimumpuffer 708 auf den maximalen Wert setzen, nachdem die nächste Pulszeit gesendet wurde.
  • 8 stellt einen beispielhaften Ablauf 800 zum Berechnen einer nächsten Pulszeit und Empfangen einer globalen Pulszeit in Übereinstimmung mit bestimmten Ausführungsformen dar. Der Ablauf kann, z. B., durch ein Netzwerkelement 102 (z. B. einen Router und/oder einen oder mehrere neuromorphe Kerne) durchgeführt werden.
  • Bei 802 wird ein erster Zeitschritt verarbeitet. Beispielsweise können einer oder mehrere neuromorphe Kerne Membranpotentiale ihrer Neuronaleinheiten aktualisieren. Bei 804 können der eine oder die mehreren neuromorphen Kerne den nächsten Zeitschritt bestimmen, zu dem eine beliebige der Neuronaleinheiten bei Abwesenheit von Eingangspulsen pulst. Diese nächsten Pulszeiten können für einen Router bereitgestellt werden, der mit dem bzw. den neuromorphen Kern(en) verbunden ist.
  • Bei 806 werden eine oder mehrere Pulszeiten von dem einen oder den mehreren angrenzenden Knoten (z. B. Routern) empfangen. Bei 808 wird eine minimale nächste Pulszeit aus den nächsten Pulszeiten, die von dem oder den Router(n) und/oder Kern(en) empfangen wurden, ausgewählt. Bei 810 wird die ausgewählte minimale nächste Pulszeit an einen angrenzenden Knoten weitergeleitet (z. B. den nächsten Sprungrouter eines überspannenden Baumes mit einem Wurzelknoten an einer zentralen Einheit).
  • Zu einem späteren Zeitpunkt kann der Router den nächsten Zeitschritt (d. h. die globale nächste Pulszeit) von einem angrenzenden Knoten bei 812 empfangen. Bei 814 kann der Router den nächsten Zeitschritt an einen oder mehrere angrenzende Knoten weiterleiten (z. B. die neuromorphen Kerne und/oder Router, von denen er bei 806 die nächsten Pulszeiten empfangen hat).
  • Einige der in 8 dargestellten Blöcke können wiederholt, kombiniert, modifiziert oder ausgelassen werden, und zusätzliche Blöcke können auch dem Flussdiagramm hinzugefügt werden. Zusätzlich können Blöcke in jeglicher geeigneten Reihenfolge ausgeführt werden, ohne vom Schutzumfang bestimmter Ausführungsformen abzuweichen.
  • Obwohl die obigen Ausführungsformen auf Kommunizieren des globalen Zeitschritts zu allen Kernen fokussieren, müssen, in einigen Ausführungsformen, Pulsabhängigkeiten möglicherweise nur zwischen miteinander verbundenen Neuronaleinheiten aufgelöst werden, beispielsweise benachbarten Schichten von Neuronaleinheiten in einem neuronalen Netzwerk. Entsprechend kann die globale nächste Pulszeit an jede geeignete Gruppe von Kernen kommuniziert werden, die dazu dienen, die Pulse zu verarbeiten (oder die anderweitig eine Notwendigkeit haben, die Pulszeit zu empfangen). So können, beispielsweise, in einem bestimmten neuronalen Netzwerk, Kerne in getrennte Domänen aufgeteilt werden, und ein globaler Zeitschritt wird für jede Domäne an einem zentralen Ort der jeweiligen Domäne berechnet (in einer Weise ähnlich der oben beschriebenen), z. B. in Übereinstimmung mit einem überspannenden Baum für die jeweilige Domäne, und nur an die Kerne dieser Domäne kommuniziert.
  • 9 stellt zulässige relative Zeitschritte zwischen zwei verbundenen Neuronenkernen für ein lokalisiertes Zeitschrittbestimmungsschema in Übereinstimmung mit bestimmten Ausführungsformen dar. Neuromorphe Prozessoren können SNNs mit extrem paralleler Pulsverarbeitung innerhalb eines Zeitschritts und Pulsabhängigkeiten mit notwendiger reihenfolgetreuer Verarbeitung zwischen Zeitschritten durchführen. Innerhalb eines einzelnen Zeitschritts sind alle Pulse unabhängig. Da aber das Verhalten von Pulsen in einem Zeitschritt bestimmt, welche Neuronaleinheiten in nachfolgenden Zeitschritten pulsen, bestehen Pulsabhängigkeiten zwischen Zeitschritten.
  • Koordinieren von Zeitschritten zum Auflösen von Pulsabhängigkeiten in neuromorphen Mehrkernprozessoren zum Auflösen von Pulsabhängigkeiten ist eine latenzkritische Operation. Die Dauer eines Zeitschritts ist nicht einfach vorhersehbar, da gepulste neuronale Netzwerke variierenden Berechnungsaufwand pro Zeitschritt pro Kern haben. Einige Systeme können Pulsabhängigkeiten in einer globalen Weise auflösen, indem alle Kerne beim gleichen Zeitschritt im SNN gehalten werden. Einige Systeme können die maximal mögliche Anzahl von Hardwaretaktzyklen zuordnen, um die einzelnen Zeitschritte zu berechnen. In solchen Systemen kann der neuromorphe Prozessor selbst dann, wenn jedes Neuron im SNN gleichzeitig pulst, alle Berechnungen vor dem Ende des Zeitschritts abschließen. Die Dauer des Zeitschritts kann fest sein (und muss nicht von der Arbeitslast abhängig sein). Da Pulsraten für SNNs typischerweise niedrig sind (Pulsraten können sogar unter 1 % fallen), kann diese Technik zu vielen verschwendeten Taktzyklen und unnötigen Latenzeinbußen führen. Andere Systeme (z. B. Ausführungsformen, die in Verbindung mit 5-8 beschrieben wurden) können das Ende eines Zeitschritts detektieren, wenn jeder Kern seine lokale Verarbeitung für einen Zeitschritt abgeschlossen hat. Solche Systeme profitieren von einer kürzeren durchschnittlichen Zeitschrittdauer (die Zeitschrittdauer wird durch die Ausführungszeit des langsamsten Kerns bei jedem Zeitschritt festgelegt), nutzen aber eine globale kollektive Operation, und ein globaler Zeitschritt wird von den Kernen gemeinsam genutzt.
  • Verschiedene Ausführungsformen der vorliegenden Offenbarung steuern die Zeitschritte der neuromorphen Kerne auf einer kernweisen Basis unter Verwendung lokaler Kommunikationen zwischen Kernen, die im SNN verbunden sind, bei gleichzeitigem Erhalten der korrekten Verarbeitung der Pulsabhängigkeiten. Da Pulsabhängigkeiten nur zwischen verbundenen Neuronaleinheiten bestehen, kann Aufzeichnen der Zeitschritte für die verbundenen Neuronen jedes Kerns ermöglichen, Pulsabhängigkeiten ohne strikte globale Synchronisierung zu behandeln. Daher kann jeder neuromorphe Kern den Zeitschritt verfolgen, in dem sich benachbarte Kerne (d. h. Kerne, die Eingänge zu dem bestimmten Kern bereitstellen oder Ausgänge von diesem empfangen) befinden, und seinen eigenen Zeitschritt inkrementieren, wenn Pulse von Eingangskernen (d. h. Kerne mit Neuronaleinheiten mit Eingangsauffächerung für Neuronaleinheiten des Kerns) empfangen wurden, die lokale Pulsverarbeitung abgeschlossen ist und alle Ausgangskerne (d. h. Kerne mit Neuronaleinheiten mit Ausgangsauffächerung für Neuronaleinheiten des Kerns) bereit sind, neue Pulse zu empfangen. Kernen, die näher am Eingang des SNN liegen (vorgelagerte Kerne), ist es erlaubt, Neuronaleinheitsverarbeitung für Zeitschritte zu berechnen, die vor nachgelagerten Kernen liegen, und zukünftige Pulse und partielle Integrationsergebnisse für spätere Verwendung zwischenzuspeichern. Daher können verschiedene Ausführungsformen Zeitschrittsteuerung für einen ganzen neuromorphen Mehrkernprozessor in einer verteilten Weise unter Verwendung lokaler Kommunikation erreichen.
  • Bestimmte Ausführungsformen können die Hardwareskalierbarkeit erhöhen, um größere SNNs zu unterstützen, wie etwa Netzwerke im Gehirnmaßstab. Verschiedene Ausführungsformen der vorliegenden Offenbarung verringern die Latenz beim Durchführen von SNN-Arbeitslasten auf neuromorphen Prozessoren. Beispielsweise können bestimmte Ausführungsformen die Latenz um etwa 24 % in einem vollständig rekurrenten SNN mit 16 Kernen und um etwa 20 % in einem vorwärtsgerichteten SNN mit 16 Kernen verbessern, wenn jedem Kern gestattet ist, einen Zeitschritt in die Zukunft zu verarbeiten. Latenz kann ferner verbessert werden durch Erhöhen der Anzahl von Zeitschritten in die Zukunft, die einem Kern zu verarbeiten gestattet wird.
  • 9A stellt relative Zeitschritte dar, die zwischen zwei verbundenen Neuronenkernen (ein „DAVOR-Kern“ und ein „JETZT-Kern“) erlaubt sind. Der DAVOR-Kern kann ein Kern sein, der Neuronaleinheiten umfasst, die Neuronaleinheiten mit Eingangsauffächerung für eine oder mehrere Neuronaleinheiten des JETZT-Kerns sind (wenn also eine Neuronaleinheit des DAVOR-Kerns pulst, kann der Puls an eine oder mehrere Neuronaleinheiten des JETZT-Kerns gesendet werden). Der JETZT-Kern kann mit jeder geeigneten Anzahl von DAVOR-Kernen verbunden sein. Die dargestellten Zustände gehen davon aus, dass der JETZT-Kern bei Zeitschritt t ist. Pulse, die am JETZT-Kern vom DAVOR-Kern für Zeitschritt t-1 empfangen werden, werden im JETZT-Kern bei Zeitschritt t verarbeitet. Wenn der DAVOR-Kern und der JETZT-Kern im gleichen Zeitschritt t sind, kann der JETZT-Kern abgeschlossene DAVOR-Pulse von Zeitschritt t-1 verarbeiten, und die Verbindung ist aktiv. Wenn der JETZT-Kern dem DAVOR-Kern voraus ist (z. B. bei Zeitschritt t-1), sind die DAVOR-Pulse nicht abgeschlossen, und die JETZT-Verbindung ist im Leerlauf, da der JETZT-Kern wartet, dass der DAVOR-Kern aufschließt. Wenn der DAVOR-Kern dem JETZT-Kern voraus ist (z. B. bei Zeitschritt t+1, t+2, ... t+n), kann der JETZT-Kern damit beschäftigt sein, einen vorherigen Zeitschritt zu berechnen, oder er kann auf Eingänge von einer unterschiedlichen Verbindung warten. Während der JETZT-Kern auf Eingänge von anderen DAVOR-Kernen wartet, kann der JETZT-Kern Pulse für zukünftige Zeitschritte von DAVOR-Kernen verarbeiten, mit denen er eine vorausschauende Verbindung hat. Die Verarbeitungsergebnisse werden in separaten Puffern (z. B. einem separaten Puffer für jeden Zeitschritt) gespeichert, um reihenfolgetreuen Betrieb sicherzustellen. Die Anzahl von verfügbaren Pufferressourcen kann bestimmen, wie viele Zeitschritte ein Kern seinen DAVOR-Kernen voraus verarbeiten kann (z. B. kann die Anzahl von vorausschauenden Zuständen von 1 bis n variieren, wobei n die Anzahl von verfügbaren Puffern zum Speichern von Pulsen von DAVOR-Kernen ist). Wenn diese Grenze mit Bezug zu einem bestimmten DAVOR-Kern erreicht ist, kann der DAVOR-Kern daran gehindert werden, seinen Zeitschritt weiter zu inkrementieren, was durch die Vor-Leerlauf-Verbindung dargestellt ist.
  • 9B stellt relative Zeitschritte dar, die zwischen zwei verbundenen Neuronenkernen (der JETZT-Kern und ein „DANACH-Kern“) erlaubt sind. Der DANACH-Kern kann ein Kern sein, der Neuronaleinheiten umfasst, die Neuronaleinheiten mit Ausgangsauffächerung für eine oder mehrere Neuronaleinheiten des JETZT-Kerns sind (wenn also eine Neuronaleinheit des JETZT-Kerns pulst, kann der Puls an eine oder mehrere Neuronaleinheiten des DANACH-Kerns gesendet werden). Der JETZT-Kern kann mit jeder geeigneten Anzahl von DANACH-Kernen verbunden sein. Die dargestellten Zustände gehen davon aus, dass der JETZT-Kern bei Zeitschritt t ist. Diese Verbindungszustände spiegeln die Verbindungszustände zwischen dem DAVOR-Kern und dem JETZT-Kern. Wenn beispielsweise der DANACH-Kern zu weit hinter dem JETZT-Kern bei t - n - 1 ist, ist die Verbindung zwischen dem JETZT-Kern und dem DANACH-Kern im Leerlauf (da es nicht genug Pufferressourcen im DANACH-Kern gibt, um zusätzliche Pulse vom JETZT-Kern zu speichern). Wenn der DANACH-Kern bei Zeitschritten t - n bis t - 1 ist, ist der Verbindungszustand ein vorausschauender Zustand (Look Ahead), da der DANACH-Kern den Eingang puffern und verarbeiten kann. Wenn der DANACH-Kern dem JETZT-Kern bei Zeitschritt t + 1 voraus ist, ist die Verbindung nach dem Leerlauf, da Pulse für Zeit t noch nicht für den DANACH-Kern zum Verarbeiten bei Zeitschritt t + 1 verfügbar sind.
  • 10A-10D stellen eine Sequenz von Verbindungszuständen zwischen mehreren Kernen in Übereinstimmung mit bestimmten Ausführungsformen dar. Diese Sequenz stellt dar, wie lokale Zeitschrittsynchronisierung eine vorausschauende Berechnung ermöglicht (d. h. dem JETZT-Kern ermöglicht, Eingangspulse für einige DAVOR-Kerne für Zeitschritte zu verarbeiten, die dem letzten, durch den JETZT-Kern abgeschlossenen Zeitschritt voraus sind) und dabei eine reihenfolgetreue Pulsausführung erhaltend. In diesen Figuren ist der JETZT-Kern mit den Eingangskernen DAVOR-Kern 0 und DAVOR-Kern 1 gekoppelt. DAVOR-Kern 0 und DAVOR-Kern 1 umfassen beide Neuronaleinheiten, die Pulse für eine oder mehrere Neuronaleinheiten des JETZT-Kerns bereitstellen.
  • In 10A sind alle Kerne in Zeitschritt 1, und der JETZT-Kern kann Pulse verarbeiten, die er von beiden DAVOR-Kernen von Zeitschritt 0 empfangen hat, sodass beide Verbindungszustände aktiv sind. In 10B haben DAVOR-Kern 1 und JETZT-Kern Zeitschritt 1 abgeschlossen, aber DAVOR-Kern 0 hat Zeitschritt 1 noch nicht abgeschlossen. Der JETZT-Kern kann Pulse vom DAVOR-Kern 1 von Zeitschritt 1 verarbeiten, muss aber auf Eingangspulse von DAVOR-Kern 0 für Zeitschritt 1 warten, bevor er Zeitschritt 2 abschließt, sodass der Verbindungszustand mit DAVOR-Kern 0 Leerlauf ist. In 10C beendet der JETZT-Kern das Verarbeiten der Pulse für Zeitschritt 1 von DAVOR-Kern 1, kann aber Zeitschritt 1 nicht abschließen, da er noch auf Pulse von DAVOR-Kern 0 für Zeitschritt 1 wartet. Der JETZT-Kern kann jetzt vorausschauendes Verarbeiten durchführen durch Empfangen von Pulsen von DAVOR-Kern 1 für Zeitschritt 2, wobei die Pulse in einem Puffer gespeichert werden und Teilaktualisierungen an den Membranpotentialen der Neuronaleinheiten durchgeführt werden (die Aktualisierungen werden erst als vollständig erachtet, wenn alle Pulse von allen DAVOR-Kernen für den bestimmten Zeitschritt empfangen wurden). In 10D schließt DAVOR-Kern 0 schließlich den Zeitschritt 1 ab und wechselt in Zeitschritt 2, und Pulse von DAVOR-Kern 0 für Zeitschritt 1 kommen an und werden verarbeitet, sodass der Verbindungszustand zwischen dem JETZT-Kern und dem DAVOR-Kern 0 wieder aktiv wird. Der JETZT-Kern kann dann zu Zeitschritt 3 übergehen.
  • 11 stellt eine beispielhafte Neuronenkernsteuerung 1100 zum Aufzeichnen von Zeitschritten für neuromorphe Kerne in Übereinstimmung mit bestimmten Ausführungsformen dar. In einer bestimmten Ausführungsform umfasst die Steuerung 1100 Schaltungsanordnungen oder andere Logik zum Durchführen der angegebenen Funktionen. Entsprechend der Konvention aus 9 und 10 wird der Kern, der die Steuerung 1100 enthält (oder anderweitig damit verbunden ist) als der JETZT-Kern bezeichnet.
  • Die Neuronenkernsteuerung 1100 kann den Zeitschritt des JETZT-Kerns mit Zeitschrittzähler 1102 aufzeichnen. Die Neuronenkernsteuerung kann auch die Zeitschritte der DAVOR-Kerne mit Zeitschrittzählern 1104 und die Zeitschritte der DANACH-Kerne mit Zeitschrittzählern 1106 aufzeichnen. Zähler 1102 kann inkrementiert werden, wenn der JETZT-Kern die Neuronenverarbeitung (z. B. aller Pulse für den aktuellen Zeitschritt) abgeschlossen hat und Verbindungen mit allen benachbarten Kernen (sowohl DAVOR- als auch DANACH-Kerne) entweder im aktiven oder im vorausschauenden Zustand sind. Wenn eine Verbindung mit einem beliebigen DAVOR-Kern im Nach-Leerlaufzustand ist, dann können für den aktuellen Zeitschritt des JETZT-Kerns immer noch zusätzliche Eingangspulse von diesem DAVOR-Kern empfangen werden, sodass der aktuelle Zeitschritt möglicherweise nicht inkrementiert wird. Wenn der JETZT-Kern bei einem Zeitschritt ist, der dem DANACH-Kern zu weit voraus ist, dann kann die Verbindung in einen Vor-Leerlaufzustand wechseln, da bei dem DANACH-Kern (oder anderem Speicherplatz, der für den DANACH-Kern zugänglich ist) der Platz zum Speichern von Ausgangspulsen des JETZT-Kerns beim letzten Zeitschritt ausgehen kann. Sobald ein Zeitschritt vollständig durch den JETZT-Kern verarbeitet wurde und die Verbindungszustände mit den Nachbarkernen des JETZT-Kerns dem Kern ermöglichen, zum nächsten Zeitschritt überzugehen, inkrementiert ein Fertig-Signal (Done) 1108 den Zähler 1102.
  • Wenn der Zeitschritt des JETZT-Kerns inkrementiert wird, kann das Fertig-Signal (z. B. über eine Multicast-Nachricht) an alle DAVOR-Kerne und DANACH-Kerne, die mit dem JETZT-Kern verbunden sind, gesendet werden. Der JETZT-Kern kann ähnliche Fertig-Signale von seinen DAVOR- und DANACH-Kernen empfangen, wenn diese Kerne ihre Zeitschritte inkrementieren. Der JETZT-Kern zeichnet den Zeitschritt seiner DAVOR- und DANACH-Kerne auf durch Inkrementieren des entsprechenden Zählers 1104 oder 1106, wenn ein Fertig-Signal von einem DAVOR- oder DANACH-Kern empfangen wird. Beispielsweise kann, in der dargestellten Ausführungsform, der JETZT-Kern ein Fertig-Signal eines DAVOR-Kerns 1110 zusammen mit einer DAVOR-Kern-ID empfangen, die den bestimmten DAVOR-Kern, der mit dem Fertig-Signal verbunden ist, anzeigt (in einer bestimmten Ausführungsform kann ein Paket mit der DAVOR-Kern-ID und dem Fertig-Signal des DAVOR-Kerns vom DAVOR-Kern an den JETZT-Kern gesendet werden). Decodierer 1114 kann basierend auf der DAVOR-Kern-ID ein Inkrementierungssignal an den entsprechenden Zähler 1104 senden. Auf diese Weise kann der JETZT-Kern die Zeitschritte jedes seiner DAVOR-Kerne aufzeichnen. Der JETZT-Kern kann auch die Zeitschritte jedes seiner DANACH-Kerne in einer ähnlichen Weise aufzeichnen, dabei die DANACH-Kern-Fertig-Signale 1118, die DANACH-Kern-IDs 1120 und Inkrementierungssignale 1122 nutzend. In anderen Ausführungsformen können beliebige geeignete Signalisierungsmechanismen zum Kommunizieren von Fertig-Signalen zwischen Kernen und inkrementierenden Zeitschrittzählern verwendet werden.
  • Um zu bestimmen, in welchem Zustand sich die Verbindungen befinden, kann der Wert von Zeitschrittzähler 1102 für jeden DAVOR-Kern-Verbindungszustandslogikblock 1124 und DANACH-Kern-Verbindungszustandslogikblock 1126 bereitgestellt werden. Die Differenz zwischen dem Wert von Zähler 1102 und dem Wert des entsprechenden Zählers 1104 oder 1106 kann berechnet werden, und ein zugehöriger Verbindungszustand wird basierend auf dem Ergebnis identifiziert. Jeder Verbindungszustandslogikblock 1124 oder 1126 kann auch Zustandsausgangslogik 1128 oder 1130 umfassen, die ein Signal ausgeben kann, das bestätigt wird, wenn der entsprechende Verbindungszustand ein aktiver oder vorausschauender Zustand ist. Die Ausgänge aller Zustandsausgänge können kombiniert und verwendet werden (in Kombination mit einem Ausgang der Neuronenverarbeitungslogik 1132, die anzeigt, ob im Pulsspeicher, der dem aktuellen Zeitschritt entspricht, zu verarbeitende Pulse verblieben sind), um zu bestimmen, ob der JETZT-Kern seinen Zeitschritt inkrementieren kann.
  • In einer bestimmten Ausführungsform kann der Zeitschrittzähler 1102 einen Zählerwert erhalten, der mehr Bits hat, als die Zählerwerte, die durch Zeitschrittzähler 1104 und 1106 erhalten werden (die in einigen Ausführungsformen jeweils die gleiche Anzahl von Bits halten können). In einem Beispiel kann Zähler 1102 für andere Operationen des neuronalen Netzwerks verwendet werden, während die Zeitschrittzähler 1104 und 1106 nur verwendet werden, um den Zustand der Verbindungen des JETZT-Kerns aufzuzeichnen. In Ausführungsformen, bei denen der Zeitschrittzähler 1102 mehr Bits erhält als die Zähler 1104 und 1106, wird anstelle des gesamten Zählerwerts eine Gruppe von niedrigstwertigen Bits (LSBs, Least Significant Bits) des Zählers 1102 jedem Verbindungszustandslogikblock 1124 und 1126 zugeführt. Beispielsweise kann eine Anzahl von Bits des Zählers 1102, die mit der Anzahl von Bits, die durch die Zähler 1104 und 1106 gespeichert sind, für Blöcke 1124 und 1126 bereitgestellt werden. Die Anzahl von Bits, die durch die Zähler 1104 und 1106 erhalten wird, kann ausreichend sein, um die Anzahl von Zuständen darzustellen, z. B. einen aktiven Zustand, alle vorausschauenden Zustände und zumindest einen Leerlaufzustand (in einer bestimmten Ausführungsform können die zwei unterschiedlichen Leerlaufzustände füreinander stehen, da sie das gleiche Verhalten hervorrufen). Beispielsweise können zwei Bitzähler verwendet werden, um zwei vorausschauende Zustände, einen aktiven Zustand und einen Leerlaufzustand zu unterstützen, oder drei Bitzähler können verwendet werden, um zusätzliche vorausschauende Zustände zu unterstützen.
  • In bestimmten Ausführungsformen kann, anstatt Fertig-Signale an die DAVOR- und DANACH-Kerne zu senden, wenn der JETZT-Kern seinen Zeitschritt inkrementiert, ein ereignisbasierter Ansatz verfolgt werden, bei dem der JETZT-Kern seinen aktualisierten Zeitschritt (oder die LSBs seines aktualisierten Zeitschritts) an die DAVOR- und DANACH-Kerne sendet. Entsprechend können die Zähler 1104 und 1106 in solchen Ausführungsformen ausgelassen und durch Speicher zum Speichern der empfangenen Zeitschritte oder andere Schaltungsanordnungen zum Ermöglichen des Betriebs der Kernzustandslogik 1128 und 1130 ersetzt werden.
  • 12 stellt einen neuromorphen Kern 1200 in Übereinstimmung mit bestimmten Ausführungsformen dar. Der Kern 1200 kann eine oder mehrere Eigenschaften der anderen hier beschriebenen neuromorphen Kerne haben. Kern 1200 umfasst Neuronenkernsteuerung 1100, DAVOR-Pulspuffer 1202, synaptischen Gewichtsspeicher 1204, Gewichtssummierungslogik 1206, Membranpotential-Deltapuffer 1208 und Neuronenverarbeitungslogik 1132.
  • DAVOR-Pulspuffer 1202 speichert Eingangspulse (d.h. DAVOR-Kernpulse 1212), die für vorausschauende Zeitschritte zu verarbeiten sind (diese Pulse können durch einen oder mehrere DAVOR-Kerne am aktuellen Zeitschritt oder einem zukünftigen Zeitschritt ausgegeben werden), sowie Eingangspulse, die für den aktuellen/aktiven Zeitschritt des Kerns 1200 zu verarbeiten sind (diese Pulse können durch einen oder mehrere DAVOR-Kerne am vorherigen Zeitschritt ausgegeben werden). In der dargestellten Ausführungsform umfasst der DAVOR-Pulspuffer 1202 vier Einträge, wobei ein Eintrag Pulse betrifft, die von DAVOR-Kernen für den aktuellen Zeitschritt empfangen wurden, und drei Einträge jeweils Pulse betreffen, die von den DAVOR-Kernen für einen bestimmten vorausschauenden Zeitschritt empfangen wurden.
  • Wenn ein Puls 1212 von einer Neuronaleinheit eines DAVOR-Kerns empfangen wird, kann er basierend auf einer Kennung (d. h. einer DAVOR-Pulsadresse 1214) der Neuronaleinheit, die gepulst hat, und eines angegebenen Zeitschritts 1216, in dem die Neuronaleinheit gepulst hat, an einen Ort im DAVOR-Pulspuffer 1202 geschrieben werden. Obwohl der Puffer 1202 in jeder geeigneten Weise adressiert werden kann, kann, in einer bestimmten Ausführungsform, der Zeitschritt 1216 die Spalte des Puffers 1202 identifizieren, und die DAVOR-Pulsadresse 1214 kann eine Zeile des Puffers 1202 identifizieren (sodass jede Zeile von Puffer 1202 einer unterschiedlichen Neuronaleinheit eines DAVOR-Kerns entsprechen kann). In einigen Ausführungsformen kann jede Spalte des Puffers 1202 verwendet werden, um Pulse eines bestimmten Zeitschritts zu speichern.
  • In verschiedenen Ausführungsformen kann jeder Puls in seiner eigenen Nachricht (z. B. Paket) von einem DAVOR-Kern an den Kern 1200 gesendet werden. In anderen Ausführungsformen können Pulse 1212 (und DAVOR-Pulsadressen 1214) in einer Nachricht zusammengefasst und als ein Vektor an den Kern 1200 gesendet werden.
  • Zusätzlich zum Aufzeichnen von Zuständen der benachbarten Kerne (wie z. B. oben beschrieben), kann Neuronenkernsteuerung 1100 die Verarbeitung von Pulsen aus verschiedenen Zeitschritten koordinieren. Beim Verarbeiten der Pulse kann die Neuronenkernsteuerung 1100 Pulse des frühesten Zeitschritts priorisieren. Daher kann die Steuerung 1100 beliebige Pulse des im Puffer 1202 vorhandenen aktuellen Zeitschritts verarbeiten, bevor sie Pulse von vorausschauenden Zeitschritten, wie in Puffer 1202 vorhanden, verarbeitet. Die Steuerung 1100 kann auch beliebige Pulse des im Puffer 1202 vorhandenen vorausschauenden Zeitschritts verarbeiten, bevor sie Pulse des zweiten vorausschauenden Zeitschritts in Puffer 1202 und so weiter verarbeitet.
  • In einer bestimmten Ausführungsform kann die Neuronenkernsteuerung 1100 einen Puls aus dem Puffer lesen (z. B. durch Bestätigen der Zeile und der Spalte des Pulses) und auf Synapsengewichte von Verbindungen zwischen Neuronaleinheiten des Kerns 1200 und der gepulsten Neuronaleinheit zugreifen. Wenn beispielsweise die Neuronaleinheit, die den Puls erzeugt hat, mit jeder Neuronaleinheit von Kern 1200 verbunden ist, kann auf eine Zeile, die Synapsengewichte für jede Neuronaleinheit im Kern 1200 umfasst, zugegriffen werden. Der synaptische Gewichtsspeicher 1204 umfasst Synapsengewichte für Verbindungen zwischen Neuronaleinheiten mit Eingangsauffächerung des DAVOR-Kerns und den Neuronaleinheiten des Kerns 1200.
  • Gewichtssummierungslogik 1206 kann Synapsengewichte für jede Neuronaleinheit von Kern 1200 separat in einem Membranpotential-Delta für dieses Neuron summieren. Wenn daher ein Puls an alle Neuronaleinheiten des Kerns 1200 gesendet wird, kann die Gewichtssummierungslogik 1206 durch die Neuronaleinheiten iterieren, wobei das Synapsengewicht für eine gepulste Neuronaleinheit und die Neuronaleinheit, die gerade aktualisiert wird, auf das Membranpotential-Delta dieser Neuronaleinheit für den anwendbaren Zeitschritt aktualisiert wird.
  • Der Membranpotential-Deltapuffer 1208 kann mehrere Einträge umfassen, die jeweils einem bestimmten Zeitschritt entsprechen. Innerhalb jedes Eintrags wird mit jedem Delta eine Menge von Membranpotential-Deltas gespeichert, die einer bestimmten Neuronaleinheit entsprechen. Die Membranpotential-Deltas stellen teilweise Verarbeitungsergebnisse für die Neuronaleinheiten dar, bis der Zeitschritt abgeschlossen ist (d. h. alle DAVOR-Kerne ihre entsprechenden Pulse zugeführt haben). In einer bestimmten Ausführungsform kann die gleiche Spaltenadresse (z. B. Zeitschritt 1218), die für den Zugriff auf DAVOR-Pulspuffer 1202 verwendet wurde, während der Verarbeitung eines Pulses auch für Zugriff auf Membranpotential-Deltapuffer 1208 verwendet werden.
  • Nachdem der Zeitschritt abgeschlossen ist, wird jede Neuronaleinheit durch Neuronenverarbeitungslogik 1132 verarbeitet, indem ihr Membranpotential-Delta für den aktuellen Zeitschritt am Ende des vorherigen Zeitschritts zum Membranpotential der Neuronaleinheit addiert wird (was durch Neuronenverarbeitungslogik 1132 oder in einem für Logik 1132 zugänglichen Speicher gespeichert werden kann). In einigen Ausführungsformen wird, wenn sich eine bestimmte Neuronaleinheit in einer Refraktärperiode befindet, das Membranpotential-Delta nicht zu dem Membranpotential für diese Neuronaleinheit addiert. Neuronenverarbeitungslogik 1132 kann beliebige geeignete Operationen auf den Neuronaleinheiten durchführen, wie etwa Anwenden einer Vorspannungs- und/oder einer Leckoperation auf die Neuronaleinheiten sowie Bestimmen, ob die Neuronaleinheit beim aktuellen Zeitschritt pulst. Wenn eine Neuronaleinheit pulst, kann die Neuronenverarbeitungslogik den Puls 1220 an Kerne senden, die Neuronaleinheiten mit Ausgangsauffächerung für die gepulste Neuronaleinheit haben (d. h. die DANACH-Kerne), zusammen mit einer Pulsadresse 1222, umfassend eine Kennung der Neuronaleinheit, die gepulst hat.
  • In verschiedenen Ausführungsformen können, für einen Kern mit einer großen Anzahl von Neuronaleinheiten, serielle Zugriffe auf den synaptischen Gewichtsspeicher 1204 und serielle Verarbeitung für Gewichtssummierung und Neuronenverarbeitung durchgeführt werden, obwohl jede dieser Operationen unter Verwendung beliebiger geeigneter Verfahren durchgeführt werden kann.
  • In verschiedenen Ausführungsformen kann Neuronenkernsteuerung 1100 die Verarbeitung eines Eingangspulses 1212 erleichtern durch Ausgeben eines Zeitschritts 1218, der verwendet wird, um auf Einträge des DAVOR-Pulspuffers 1202 und des Membranpotential-Deltapuffers 1208 zuzugreifen. Wenn alle empfangenen Eingangspulse des aktuellen Zeitschritts bereits verarbeitet wurden (und der Kern 1200 darauf wartet, dass einer oder mehrere DAVOR-Kerne das Erzeugen von Pulsen, die für den aktuellen Zeitschritt verarbeitet werden sollen, abschließt), kann die Neuronenkernsteuerung 1100 eine Adresse entsprechend einem vorausschauenden Zeitschritt ausgeben und Pulse von dem vorausschauenden Zeitschritt verarbeiten, bis zusätzliche Eingangspulse für den aktuellen Zeitschritt empfangen werden (oder die verbleibenden DAVOR-Kerne den Zeitschritt abschließen, ohne zusätzliche Pulse zu senden).
  • Wenn ein bestimmter Zeitschritt abgeschlossen wurde, können der entsprechende Eintrag des DAVOR-Pulspuffers 1202 und der Eintrag des Membranpotential-Deltapuffers 1208 gelöscht (z. B. zurückgesetzt) und für einen zukünftigen Zeitschritt verwendet werden.
  • In einer bestimmten Ausführungsform wird die Anzahl von DAVOR-Kernen und DANACH-Kernen für jeden neuromorphen Kern vorbestimmt, wenn das SNN auf Hardware abgebildet wird, und die Logik jedes Kerns kann entsprechend ausgestaltet sein. Beispielsweise kann die Neuronensteuerung 1100 von jedem Kern an die spezifische Auslegung des Kerns angepasst werden und kann, z. B., unterschiedliche Zahlen der Zähler 1104 und 1106 basierend auf der Anzahl von DAVOR-Kernen and DANACH-Kernen des Kerns umfassen. Als ein weiteres Beispiel kann die Anzahl von Zeilen des DAVOR-Pulsspeichers 1202 von Kern 1200 basierend auf der Anzahl von Neuronaleinheiten der DAVOR-Kerne für Kern 1200 ausgelegt werden.
  • In den dargestellten Ausführungsformen ist die Anzahl von zulässigen vorausschauenden Zuständen vorab ausgelegt, bevor das neuronale Netzwerk mit dem Betrieb beginnt, basierend auf der Anzahl von Einträgen im DAVOR-Pulspuffer 1202 und im Membranpotential-Deltapuffer 1208, obwohl in anderen Ausführungsformen die Anzahl von zulässigen vorausschauenden Zuständen (d. h. die Anzahl von Zeitschritten, die ein Kern über einen benachbarten Kern hinaus fortgesetzt werden kann) dynamisch bestimmt werden kann. Beispielsweise können eine oder mehrere lokale Speichersammlungen von unterschiedlichen Zeitschritten und/oder Kernen und Teilen des Speichers dynamisch für Verwendung durch die Zeitschritte und/oder Kerne zugeordnet werden (um z. B. Ausgänge und/oder Membranpotential-Deltas zu speichern). In bestimmten Ausführungsformen kann eine zentrale Steuerung den Speicher dynamisch unter den Zeitschritten und/oder Kernen in einer intelligenten Weise zuordnen, um effizienten Betrieb des neuronalen Netzwerks zu unterstützen.
  • 13 stellt einen Ablauf zum Verarbeiten von Pulsen aus verschiedenen Zeitschritten und Inkrementieren eines Zeitschritts eines neuromorphen Kerns in Übereinstimmung mit bestimmten Ausführungsformen dar. Bei 1302 wird ein Puls mit einem frühesten Zeitschritt identifiziert. Beispielsweise kann Pulspuffer 1202 durchsucht werden, um zu bestimmen, ob irgendwelche Pulse im Puffereintrag entsprechend dem aktuellen Zeitschritt vorhanden sind. Wenn keine Pulse für den aktuellen Zeitschritt vorhanden sind, kann der Puffereintrag entsprechend dem nächsten Zeitschritt durchsucht werden, und so weiter.
  • Bei 1304 wird auf ein Synapsengewicht einer Neuronaleinheit mit Ausgangsauffächerung für den Puls zugegriffen. Das Synapsengewicht kann das Gewicht der Verbindung zwischen der gepulsten Neuronaleinheit und der zu aktualisierenden Neuronaleinheit (d. h. der Neuronaleinheit mit Ausgangsauffächerung) sein. Bei 1306 wird das Synapsengewicht zu einem Membranpotential-Delta der Neuronaleinheit mit Ausgangsauffächerung für den mit dem Puls verknüpften Zeitschritt (der tatsächlich ein Zeitschritt später als der Zeitschritt sein kann, in dem der Puls aufgetreten ist) addiert.
  • Bei 1308 wird bestimmt, ob die Neuronaleinheit, die gerade aktualisiert wurde, die letzte Neuronaleinheit mit Ausgangsauffächerung der Neuronaleinheit ist, die gepulst hat. Wenn das nicht der Fall ist, kehrt der Fluss zu 1304 zurück, und eine zusätzliche Neuronaleinheit wird aktualisiert. Wenn die Neuronaleinheit die letzte Neuronaleinheit mit Ausgangsauffächerung für den Puls ist, wird bei 1310 eine Bestimmung durchgeführt, ob der aktuelle Zeitschritt abgeschlossen ist. Beispielsweise kann ein Zeitschritt abgeschlossen sein, wenn alle DAVOR-Kerne ihre Eingangspulse für diesen Zeitschritt für den Kern bereitgestellt haben und alle Pulse für diesen Zeitschritt verarbeitet wurden. Wenn der Zeitschritt nicht abgeschlossen ist, kann der Fluss zu 1302 zurückkehren, wo zusätzliche Pulse (entweder für den aktuellen Zeitschritt oder für vorausschauende Zeitschritte) verarbeitet werden können.
  • Bei 1312 kann, nach einer Bestimmung, dass der aktuelle Zeitschritt abgeschlossen ist, eine Neuronenverarbeitung bei 1312 durchgeführt werden. Beispielsweise kann Neuronenverarbeitungslogik 1132 beliebige geeignete Operationen durchführen, wie etwa Bestimmen, welche Neuronaleinheiten während des aktuellen Zeitschritts gepulst haben, Anwenden von Leck- und/oder Vorspannungstermen oder Durchführen anderer geeigneter Operationen. Ausgangspulse können auf die entsprechenden Kerne ausgebreitet werden.
  • Bei 1314 werden die Zustände der benachbarten Kerne geprüft. Wenn die benachbarten Kerne alle in Zuständen (z. B. Zeitschritten) sind, die in aktiven oder vorausschauenden Verbindungszuständen mit dem Kern resultieren, kann der Zeitschritt bei 1316 inkrementiert werden. Wenn irgendwelche Leerlaufverbindungen vorhanden sind, kann der Kern Verarbeiten von Pulsen für vorausschauende Zeitschritte fortsetzen, bis es die Verbindungszustände ermöglichen, den Zeitschritt des Kerns zu inkrementieren.
  • Einige der in 13 dargestellten Blöcke können wiederholt, kombiniert, modifiziert oder ausgelassen werden, und zusätzliche Blöcke können auch dem Flussdiagramm hinzugefügt werden. Zusätzlich können Blöcke in jeglicher geeigneten Reihenfolge ausgeführt werden, ohne vom Schutzumfang bestimmter Ausführungsformen abzuweichen.
  • Die Figuren unten stellen beispielhafte Architekturen und Systeme zum Umsetzen von Ausführungsformen des Obigen ausführlich dar. Beispielsweise kann der oben beschriebene neuromorphe Prozessor in einem beliebigen der nachfolgend beschriebenen System enthalten sein. In einigen Ausführungsformen kann der neuromorphe Prozessor kommunikativ mit einem beliebigen der folgenden Prozessoren gekoppelt sein. In verschiedenen Ausführungsformen kann der neuromorphe Prozessor innerhalb und/oder auf dem gleichen Chip umgesetzt sein, wie ein beliebiger der folgenden Prozessoren. Bei manchen Ausführungsformen werden ein/e oder mehrere Hardwarekomponenten und/oder Befehle, die oben beschrieben sind, emuliert, wie unten ausführlich beschrieben ist, oder als Softwaremodule umgesetzt.
  • Prozessorkerne können auf verschiedene Arten, für verschiedene Zwecke und in unterschiedlichen Prozessoren umgesetzt sein. Beispielsweise können Umsetzungen solcher Kerne Folgendes umfassen: 1) einen universellen reihenfolgetreuen (In-order) Kern, gedacht für universelles Rechnen; 2) einen universellen reihenfolgeveränderten (Out-of-order) Hochleistungskern, gedacht für universelles Rechnen; 3) einen speziellen Kern, primär gedacht für Grafik und/oder wissenschaftliche (Durchsatz) Berechnung. Umsetzungen von unterschiedlichen Prozessoren können umfassen: 1) eine CPU, einen oder mehrere universelle reihenfolgetreue (In-order) Kerne, gedacht für universelles Rechnen, umfassend, und/oder einen oder mehrere universelle reihenfolgeveränderte (Out-of-order) Kerne, gedacht für universelles Rechnen; und 2) einen Koprozessor, einen oder mehrere spezielle Kerne, primär gedacht für Grafik und/oder Wissenschaft (Durchsatz), umfassend. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes umfassen können: 1) den Koprozessor auf einem von der CPU separaten Chip; 2) den Koprozessor auf einem separaten Die im gleichen Chipgehäuse wie eine CPU; 3) den Koprozessor auf dem gleichen Die wie eine CPU (in diesem Fall wird ein solcher Koprozessor manchmal als spezielle Logik, wie etwa als integrierte Grafik und/oder wissenschaftliche (Durchsatz) Logik, oder als spezielle Kerne bezeichnet); und 4) ein System auf einem Chip, das auf demselben Die die beschriebene CPU (manchmal als der bzw. die Anwendungskeme oder Anwendungsprozessoren bezeichnet), den oben beschriebenen Koprozessor und zusätzliche Funktionalität umfassen kann. Beispielhafte Kernarchitekturen werden als nächstes beschrieben, gefolgt von Beschreibungen von beispielhaften Prozessoren und Computerarchitekturen.
  • 14A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue (In-order) Pipeline als auch eine beispielhafte reihenfolgeveränderte (Out-of-order) Ausgabe-/Ausführungspipeline mit Registerumbenennung gemäß Ausführungsformen der Offenbarung darstellt. 14B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines reihenfolgetreuen (In-order) Architekturkerns als auch eines reihenfolgeveränderten (Out-of-order) Ausgabe-/Ausführungs-Architekturkerns mit Registerumbenennung, in einen Prozessor einzuschließen, gemäß Ausführungsformen der Offenbarung darstellt. Die Felder mit durchgezogenen Linien in 14A-B stellen die reihenfolgetreue Pipeline und den reihenfolgetreuen Kern dar, während die optionale Hinzufügung von Feldern mit gestrichelten Linien die/den reihenfolgeveränderte(n) Ausgabe-/Ausführungspipeline bzw. -kern mit Registerumbenennung darstellt. Unter der Voraussetzung, dass der reihenfolgetreue Aspekt eine Teilmenge des reihenfolgeveränderten Aspekts ist, wird der reihenfolgeveränderte Aspekt beschrieben.
  • In 14A umfasst eine Prozessorpipeline 1400 eine Abrufstufe 1402, eine Längendecodierstufe 1404, eine Decodierstufe 1406, eine Zuordnungsstufe 1408, eine Umbenennungsstufe 1410, eine Ablaufsteuerungsstufe (Scheduling, auch als Verteilung oder Ausgabe bekannt) 1412, eine Registerlese-/Speicherlesestufe 1414, eine Ausführungsstufe 1416, eine Zurückschreibe-/Speicherschreibestufe 1418, eine Ausnahmenbehandlungsstufe 1422 und eine Übergabestufe 1424.
  • 14B zeigt Prozessorkern 1490, eine Frontendeinheit 1430 umfassend, gekoppelt mit einer Ausführungsengineeinheit 1450, und beide sind mit einer Speichereinheit 1470 gekoppelt. Der Kern 1490 kann ein Kern mit reduziertem Befehlssatz (RISC, Reduced Instruction Set Computing), ein Kern mit komplexem Befehlssatz (CISC, Complex Instruction Set Computing), ein Kern mit sehr langen Befehlswörtern (VLIW, Very Long Instruction Word) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 1490 ein spezieller Kern sein, wie etwa, beispielsweise, ein Netzwerk- oder Kommunikationskern, eine Komprimierungs- und/oder Dekomprimierungsengine, ein Koprozessorkern, ein universeller Berechnungskern für Grafikprozessoreinheiten (GPGPU, General Purpose Computing Graphics Processing Unit), ein Grafikkern oder ähnliches.
  • Die Frontendeinheit 1430 umfasst eine Verzweigungsvorhersageeinheit 1432, gekoppelt mit einer Befehlscacheeinheit 1434, die mit einem Befehlsübersetzungspuffer (TLB, Instruction Translation Lookaside Buffer) 1436 gekoppelt ist, der mit einer Befehlsabrufeinheit 1438 gekoppelt ist, die mit einer Decodiereinheit 1440 gekoppelt ist. Die Decodiereinheit 1440 (oder der Decoder) kann Befehle decodieren und eine(n) oder mehrere Mikrooperationen, Mikrocodeeinstiegspunkte, Mikrobefehle oder andere Befehle oder andere Steuersignale, die aus den ursprünglichen Befehlen decodiert wurden oder diese anderweitig reflektieren oder anderweitig von diesen abgeleitet sind, als eine Ausgabe erzeugen. Die Decodiereinheit 1440 kann unter Verwendung verschiedener unterschiedlicher Mechanismen umgesetzt sein. Beispiele von geeigneten Mechanismen umfassen, sind aber nicht beschränkt auf, Nachschlagetabellen, Hardwareumsetzungen, programmierbare Logikarrays (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs, Read Only Memories) usw. In einer Ausführungsform umfasst der Kern 1490 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für gewisse Makrobefehle speichert (z. B. in Decodiereinheit 1440 oder anderweitig innerhalb der Frontendeinheit 1430). Die Decodiereinheit 1440 ist mit einer Umbenennungs-/Zuordnungseinheit 1452 in der Ausführungsengineeinheit 1450 gekoppelt.
  • Die Ausführungsengineeinheit 1450 umfasst die Umbenennungs-/Zuordnungseinheit 1452, gekoppelt mit einer Rückzugseinheit 1454 und einer Menge von einer oder mehreren Ablaufsteuerungseinheiten 1456. Die Ablaufsteuerungseinheit(en) 1456 stellt bzw. stellen eine beliebige Anzahl von unterschiedlichen Ablaufsteuerungseinheiten dar, einschließlich Reservierungsstationen, zentralem Befehlsfenster usw. Ablaufsteuerungseinheit(en) 1456 ist bzw. sind mit der bzw. den physischen Registerdateieinheiten 1458 gekoppelt. Jede der physischen Registerdatei(en)-Einheiten 1458 stellt eine oder mehrere physische Registerdateien dar, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie etwa skalare Ganzzahlen, skalare Gleitkommazahlen, gepackte Ganzzahlen, gepackte Gleitkommazahlen, Vektorganzzahlen, Vektorgleitkommazahlen, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Ausführungsform umfasst die physische Registerdatei(en)-Einheit 1458 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine skalare Registereinheit. Diese Registereinheiten können architektonische Vektorregister, Vektormaskenregister und universelle Register bereitstellen. Die physische(n) Registerdatei(en)einheit(en) 1458 wird bzw. werden von der Rückzugseinheit 1454 überlappt, um verschiedene Weisen darzustellen, in denen Registerumbenennung und reihenfolgeveränderte Ausführung umgesetzt werden können (z. B. unter Verwendung eines Neuordnungspuffers und einer Rückzugsregisterdatei; unter Verwendung einer Zukunftsdatei, eines Verlaufspuffers und einer Rückzugsregisterdatei; unter Verwendung einer Registerabbildung und einer Sammlung von Registern usw.). Die Rückzugseinheit 1454 und die physischen Registerdatei(en)einheit(en) 1458 ist bzw. sind mit dem bzw. den Ausführungsclustern 1460 gekoppelt. Das bzw. die Ausführungscluster 1460 umfassen eine Menge von einer oder mehreren Ausführungseinheiten 1462 und eine Menge von einer oder mehreren Speicherzugriffseinheiten 1464. Die Ausführungseinheiten 1462 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) auf verschiedenen Typen von Daten (z. B. skalare Gleitkommadaten, gepackte ganzzahlige Daten, gepackte Gleitkommadaten, Vektorganzzahl, Vektorgleitkomma) durchführen. Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten, speziell für spezifische Funktionen oder Mengen von Funktionen bestimmt, umfassen können, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, die allesamt alle Funktionen durchführen. Die Ablaufsteuerungseinheit(en) 1456, die physischen Registerdatei(en)einheit(en) 1458 und das bzw. die Ausführungscluster 1460 werden als möglicherweise mehrere gezeigt, da gewisse Ausführungsformen separate Pipelines für gewisse Typen von Daten/Operationen erzeugen (z. B. eine skalare ganzzahlige Pipeline, eine skalare Gleitkomma-/gepackte ganzzahlige/gepackte Gleitkomma-/Vektorganzzahl-/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffspipeline, die jeweils ihr(e) eigene(s) Ablaufsteuerungseinheit, physische Registerdatei(en)einheit und/oder Ausführungscluster haben - und im Falle einer separaten Speicherzugriffspipeline sind gewisse Ausführungsformen umgesetzt, bei denen nur das Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 1464 hat). Es versteht sich auch, dass dort, wo separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines reihenfolgeveränderte Ausgabe-/Ausführungspipelines und die restlichen reihenfolgetreue sein können.
  • Die Menge von Speicherzugriffseinheiten 1464 ist mit der Speichereinheit 1470 gekoppelt, die eine Daten-TLB-Einheit 1472 umfasst, gekoppelt mit einer Datencacheeinheit 1474, gekoppelt mit einer Level-2-Cacheeinheit (L2) 1476. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 1464 eine Ladeeinheit, eine Adressenspeichereinheit und eine Datenspeichereinheit beinhalten, wovon jede mit der Daten-TLB-Einheit 1472 in der Speichereinheit 1470 gekoppelt ist. Die Befehlscacheeinheit 1434 ist ferner mit einer Level-2-Cacheeinheit (L2) 1476 in der Speichereinheit 1470 gekoppelt. Die L2-Cacheeinheit 1476 ist mit einem oder mehreren anderen Cacheebenen und eventuell mit dem Hauptspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte, Register umbenennende reihenfolgeveränderte Ausgabe-/Ausführungskernarchitektur die Pipeline 1400 wie folgt umsetzen: 1) der Befehlsabruf 1438 führt die Abruf- und die Längendecodierstufen 1402 und 1404 durch; 2) die Decodiereinheit 1440 führt die Decodierstufe 1406 durch; 3) die Umbenennungs-/Zuordnungseinheit 1452 führt die Zuordnungsstufe 1408 und die Umbenennungsstufe 1410 durch; 4) die Ablaufsteuerungseinheit(en) 1456 führt bzw. führen die Ablaufsteuerungsstufe 1412 durch; 5) die physische(n) Registerdatei(en)einheit(en) 1458 und die Speichereinheit 1470 führen die Registerlese-/Speicherlesestufe 1414 durch; das Ausführungscluster 1460 führt die Ausführungsstufe 1416 durch; 6) die Speichereinheit 1470 und die physische(n) Registerdatei(en)einheit(en) 1458 führen die Zurückschreibe-/Speicherschreibestufe 1418 durch; 7) verschiedene Einheiten können bei der Ausnahmenbehandlungsstufe 1422 beteiligt sein; und 8) die Rückzugseinheit 1454 und die physische(n) Registerdatei(en)einheit(en) 1458 führen die Übergabestufe 1424 durch.
  • Der Kern 1490 kann einen oder mehrere Befehlssätze (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie etwa NEON) von ARM Holdings aus Sunnyvale, CA) unterstützen, einschließlich der hier beschriebenen Befehle. In einer Ausführungsform umfasst der Kern 1490 Logik zum Unterstützen einer Befehlssatzerweiterung mit gepackten Daten (z. B. AVX1, AVX2), dadurch ermöglichend, dass Operationen, die von vielen Multimedia-Anwendungen verwendet werden, mit gepackten Daten durchgeführt werden.
  • Es versteht sich, dass der Kern Mehrsträngigkeit (oder Multithreading, Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf vielfältige Weisen vornehmen kann, einschließlich Zeitscheiben-Multithreading, Simultan-Multithreading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern simultan im Multithreading behandelt), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und Simultan-Multithreading danach, wie etwa bei der Intel® Hyperthreading-Technologie).
  • Während Registerumbenennung im Kontext von reihenfolgeveränderter (Out-of-order) Ausführung beschrieben ist, versteht es sich, dass Registerumbenennung in einer reihenfolgetreuen (In-order) Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch separate Befehls- und Datencacheeinheiten 1434/1474 und eine gemeinsam genutzte L2-Cacheeinheit 1476 umfasst, können alternative Ausführungsformen einen einzelnen internen Cache für Befehle und Daten haben, wie etwa, beispielsweise, einen internen Level-1-Cache (L1) oder mehrere Ebenen von internem Cache. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache umfassen, die extern zum Kern und/oder zum Prozessor ist. Alternativ kann der gesamte Cache extern zum Kern und/oder zum Prozessor sein.
  • 15A-B stellen ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen (In-order) Kernarchitektur dar, deren Kern einer von mehreren Logikblöcken (potenziell einschließlich anderer Kerne vom gleichen Typ und/oder anderen Typen) in einem Chip wäre. Die Logikblöcke kommunizieren über ein Verbindungsnetzwerk mit hoher Bandbreite (z. B. ein Ringnetzwerk) mit einigen festen Funktionslogiken, Speicher-E/A-Schnittstellen und anderen notwendigen E/A-Logiken, in Abhängigkeit von der Anwendung.
  • 15A ist ein Blockdiagramm eines einzelnen Prozessorkerns, zusammen mit seiner Verbindung zu dem On-Die-Verbindungsnetzwerk 1502 und mit seinem lokalen Teilsatz des Level-2-Caches (L2) 1504, gemäß verschiedenen Ausführungsformen. In einer Ausführungsform unterstützt ein Befehlsdecodierer 1500 den x86-Befehlssatz mit einer Befehlssatzerweiterung mit gepackten Daten. Ein L1-Cache 1506 ermöglicht Zugriffe mit geringer Latenz auf einen Cachespeicher in die skalaren und Vektoreinheiten. Während in einer Ausführungsform (zum Vereinfachen der Konzeption) eine skalare Einheit 1508 und eine Vektoreinheit 1510 separate Registersätze verwenden (skalare Register 1512 bzw. Vektorregister 1514) und Daten, die zwischen ihnen transferiert werden, in Speicher geschrieben und dann von einem Level-1-Cache (L1) 1506 zurückgelesen werden, können alternative Ausführungsformen einen unterschiedlichen Ansatz verwenden (z. B. einen einzelnen Registersatz verwenden oder einen Kommunikationspfad umfassen, der Daten ermöglicht, zwischen den zwei Registerdateien transferiert zu werden, ohne geschrieben und zurückgelesen zu werden).
  • Der lokale Teilsatz des L2-Caches 1504 ist Teil eines globalen L2-Caches, der in separate lokale Teilsätze unterteilt wird (in einigen Ausführungsformen einen pro Prozessorkern). Jeder Prozessorkern hat einen direkten Zugriffspfad auf seinen eigenen lokalen Teilsatz des L2-Caches 1504. Daten, die von einem Prozessorkern gelesen werden, werden in dessen L2-Cacheteilsatz 1504 gespeichert, und auf sie kann schnell zugegriffen werden, parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cacheteilsätze zugreifen. Daten, die durch einen Prozessorkern geschrieben werden, werden in dessen eigenem L2-Cacheteilsatz 1504 gespeichert und werden, wenn nötig, aus anderen Teilsätzen ausgeräumt. Das Ringnetzwerk sichert Kohärenz der gemeinsam genutzten Daten. Das Ringnetzwerk ist bidirektional, um Agenten, wie etwa Prozessorkernen, L2-Caches und anderen Logikblöcken zu ermöglichen, innerhalb des Chips miteinander zu kommunizieren. In einer bestimmten Ausführungsform ist jeder Ringdatenpfad pro Richtung 1012 Bit breit.
  • 15B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 15A gemäß Ausführungsformen. 15B umfasst einen L1-Datencache 1506A als Teil des L1-Caches 1506, sowie weitere Details hinsichtlich der Vektoreinheit 1510 und der Vektorregister 1514. Insbesondere ist die Vektoreinheit 1510 eine 16-breite Vektorverarbeitungseinheit (VPU, Vector Processing Unit) (siehe die 16-breite ALU 1528), die einen oder mehrere Ganzzahlbefehle, Gleitkommabefehle mit einfacher Genauigkeit und Gleitkommabefehle mit doppelter Genauigkeit ausführt. Die VPU unterstützt Mischen der Registereingänge mit Mischeinheit 1520, numerische Umwandlung mit numerischen Umwandlungseinheiten 1522A-B und Replikation mit Replikationseinheit 1524 auf dem Speichereingang. Schreibmaskenregister 1526 ermöglichen das Prädizieren von resultierenden Vektorschreibvorgängen.
  • 16 ist ein Blockdiagramm eines Prozessors 1600, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann, gemäß verschiedenen Ausführungsformen. Die Felder mit den durchgezogenen Linien in 16 stellen einen Prozessor 1600 mit einem einzelnen Kern 1602A, einen Systemagenten 1610 und eine Menge von einer oder mehreren Bussteuerungseinheiten 1616 dar, während die optionale Hinzufügung von Feldern mit gestrichelten Linien einen alternativen Prozessor 1600 mit mehreren Kernen 1602A-N, eine Menge von einer oder mehreren integrierten Speichersteuerungeinheiten 1614 in der Systemagenteneinheit 1610 und spezieller Logik 1608 darstellt.
  • Daher können unterschiedliche Umsetzungen des Prozessors 1600 umfassen: 1) eine CPU, wobei die spezielle Logik 1608 integrierte Grafik und/oder wissenschaftliche (Durchsatz) Logik ist (die einen oder mehrere Kerne umfassen kann), und wobei die Kerne 1602A-N ein oder mehrere universelle Kerne sind (z. B. universelle reihenfolgetreue (In-order) Kerne, universelle reihenfolgeveränderte (Out-of-order) Kerne oder eine Kombination aus den zwei); 2) einen Koprozessor, wobei die Kerne 1602A-N eine große Anzahl von speziellen Kernen sind, primär für Grafik und/oder wissenschaftliches (Durchsatz) Rechnen gedacht; und 3) einen Koprozessor, wobei die Kerne 1602A-N eine große Anzahl von universellen reihenfolgetreuen (In-order) Kernen sind. Daher kann der Prozessor 1600 ein universeller Prozessor, Koprozessor oder spezieller Prozessor sein, wie etwa, beispielsweise, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs- oder Dekomprimierungsengine, ein Grafikprozessor, eine universelle Grafikprozessor-Berechnungseinheit (GPGPU, General Purpose Graphics Processing Unit), ein Koprozessor mit hohem Durchsatz und vielen integrierten Kernen (MIC, Many Integrated Core) (z. B. 30 oder mehr Kerne umfassend), ein eingebetteter Prozessor oder eine andere feste oder auslegbare Logik, die logische Operationen durchführt. Der Prozessor kann auf einem oder mehreren Chips umgesetzt sein. Der Prozessor 1600 kann ein Teil eines und/oder kann auf einem oder mehreren Substraten unter Verwendung einer beliebigen Anzahl von Prozesstechnologien umgesetzt sein, wie etwa, beispielsweise, BiCMOS, CMOS oder NMOS.
  • In verschiedenen Ausführungsformen kann ein Prozessor jede Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können. In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Softwarethreads. Beispiele von Hardwareverarbeitungselementen umfassen: eine Threadeinheit, einen Threadschlitz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardwarethread, einen Kern und/oder jedes andere Element, das in der Lage ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen architektonischen Zustand, zu halten. Mit anderen Worten, ein Verarbeitungselement, in einer Ausführungsform, bezieht sich auf jede Hardware, die in der Lage ist, unabhängig mit Code, wie etwa einem Softwarethread, Betriebssystem, einer Anwendung oder einem anderem Code assoziiert zu werden. Ein physischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell jede Anzahl von anderen Verarbeitungselementen, wie etwa Kerne oder Hardwarethreads umfasst.
  • Ein Kern kann sich auf Logik beziehen, die sich auf einer integrierten Schaltung befindet und in der Lage ist, einen unabhängigen architektonischen Zustand zu halten, wobei jeder unabhängig gehaltene architektonische Zustand mit zumindest einigen speziellen Ausführungsressourcen verbunden ist. Ein Hardwarethread kann sich auf jede Logik beziehen, die sich auf einer integrierten Schaltung befindet und in der Lage ist, einen unabhängigen architektonischen Zustand zu halten, wobei die unabhängig gehaltenen architektonische Zustände Zugriff auf Ausführungsressourcen gemeinsam nutzen. Wie zu sehen ist, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere speziell für einen architektonischen Zustand gedacht sind, überschneidet sich die begriffliche Linie zwischen einem Hardwarethread und einem Kern. Dennoch werden ein Kern und ein Hardwarethread durch ein Betriebssystem häufig als individuelle logische Prozessoren betrachtet, wobei das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Die Speicherhierarchie umfasst eine oder mehrere Cacheebenen innerhalb der Kerne, einen Satz von einer oder mehreren gemeinsam genutzten Cacheeinheiten 1606 und externen Speicher (nicht gezeigt), gekoppelt mit der Menge von integrierten Speichersteuerungseinheiten 1614. Die Menge von gemeinsam genutzten Cacheeinheiten 1606 kann einen oder mehrere Mid-Level-Caches, wie etwa Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cacheebenen, einen Cache auf der untersten Ebene (LLC, Last Level Cache) und/oder Kombinationen davon umfassen. Während in einer Ausführungsform eine ringbasierte Verbindungseinheit 1612 die spezielle Logik (z. B. integrierte Grafiklogik) 1608, die Menge von gemeinsam genutzten Cacheeinheiten 1606 und die Systemagenteneinheit 1610/die integrierte(n) Speichersteuerungseinheit(en) 1614 verbinden, können alternative Ausführungsformen eine beliebige Anzahl von wohlbekannten Techniken zum Verbinden solcher Einheiten verwenden. In einer Ausführungsform wird Kohärenz zwischen einer oder mehreren Cacheeinheiten 1606 und Kernen 1602A-N gewahrt.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1602A-N in der Lage, Multithreading durchzuführen. Der Systemagent 1610 umfasst diejenigen Komponenten, die Kerne 1602A-N koordinieren und betreiben. Die Systemagenteneinheit 1610 kann, beispielsweise, eine Leistungssteuerungseinheit (PCU, Power Control Unit) und eine Anzeigeeinheit umfassen. Die PCU kann Logik und Komponenten, die zum Regeln des Leistungszustands der Kerne 1602A-N und der speziellen Logik 1608 benötigt werden, sein oder umfassen. Die Anzeigeeinheit dient zum Ansteuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1602A-N können homogen oder heterogen in Bezug auf den Architekturbefehlssatz sein; das heißt, zwei oder mehr der Kerne 1602A-N können zum Ausführen des gleichen Befehlssatzes in der Lage sein, während andere möglicherweise in der Lage sind, nur einen Teilsatz dieses Befehlssatzes oder einen unterschiedlichen Befehlssatz auszuführen.
  • 17-20 sind Blockdiagramme von beispielhaften Computerarchitekturen. Andere im Fachgebiet bekannte Systemkonzeptionen und -auslegungen für Laptops, Desktops, handgestützte PCs, persönliche digitale Assistenten, technische Workstations, Server, Netzwerkvorrichtungen, Netzwerkknoten, Weichen, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrosteuerungen, Mobiltelefone, tragbare Medienabspielvorrichtungen, handgestützte Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind ebenfalls zum Durchführen der in dieser Offenbarung beschriebenen Verfahren geeignet. Im Allgemeinen ist eine riesige Vielfalt von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik, wie hier offenbart, zu integrieren, allgemein geeignet.
  • 17 stellt ein Blockdiagramm eines Systems 1700 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Das System 1700 kann einen oder mehrere Prozessoren 1710, 1715 umfassen, die mit einem Steuerungsknoten 1720 gekoppelt sind. In einer Ausführungsform umfasst der Steuerungsknoten 1720 einen Grafikspeichersteuerungsknoten (GMCH, Graphics Memory Controller Hub) 1790 und einen Eingabe-/Ausgabe-Knoten (IOH, Input/Output Hub) 1750 (die sich auf separaten Chips oder auf dem gleichen Chip befinden können); der GMCH 1790 umfasst Speicher- und Grafiksteuerungen, die mit Speicher 1740 und einem Koprozessor 1745 gekoppelt sind; der IOH 1750 koppelt Eingabe-/Ausgabevorrichtungen (E/A) 1760 mit dem GMCH 1790. Alternativ sind einer oder beide der Speicher- und Grafiksteuerungen in den Prozessor integriert (wie hier beschrieben), der Speicher 1740 und der Koprozessor 1745 sind direkt mit dem Prozessor 1710 gekoppelt, und der Steuerungsknoten 1720 ist ein einzelner Chip, umfassend den IOH 1750.
  • Die optionale Natur der zusätzlichen Prozessoren 1715 wird in 17 durch unterbrochene Linien gekennzeichnet. Jeder Prozessor 1710, 1715 kann einen oder mehrere der hier beschriebenen Verarbeitungskerne umfassen und kann eine Version des Prozessors 1600 sein.
  • Der Speicher 1740 kann, beispielsweise, ein dynamischer Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory), ein Phasenwechselspeicher (PCM, Phase Change Memory), ein anderer geeigneter Speicher oder jede Kombination daraus sein. Der Speicher 1740 kann beliebige geeignete Daten, wie etwa durch die Prozessoren 1710, 1715 verwendete Daten, speichern, um die Funktionalität des Computersystems 1700 bereitzustellen. Beispielsweise können Daten in Verbindung mit Programmen, die ausgeführt werden, oder mit Dateien, auf die durch Prozessoren 1710, 1715 zugegriffen wird, im Speicher 1740 gespeichert sein. In verschiedenen Ausführungsformen kann Speicher 1740 Daten und/oder Abfolgen von Befehlen speichern, die durch Prozessoren 1710, 1715 verwendet oder ausgeführt werden.
  • In zumindest einer Ausführungsform kommuniziert der Steuerungsknoten 1720 mit dem bzw. den Prozessoren 1710, 1715 über einen Multi-Drop-Bus, wie etwa einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie etwa QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 1795.
  • In einer Ausführungsform ist der Koprozessor 1745 ein spezieller Prozessor, wie etwa, beispielsweise, ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder ein Kommunikationsprozessor, eine Komprimierungs- und/oder Dekomprimierungsengine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches. In einer Ausführungsform kann der Steuerungsknoten 1720 einen integrierten Grafikbeschleuniger umfassen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 1710, 1715 im Hinblick auf ein Spektrum von relevanten Metriken geben, einschließlich architektonisch, mikroarchitektonisch, thermisch, der Stromverbrauchscharakteristiken und ähnliches.
  • In einer Ausführungsform führt der Prozessor 1710 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Eingebettet in die Befehle können Koprozessorbefehle sein. Der Prozessor 1710 erkennt, dass diese Koprozessorbefehle von einem Typ sind, der durch den angeführten Koprozessor 1745 ausgeführt werden soll. Entsprechend gibt der Prozessor 1710 diese Koprozessorbefehle (oder Steuersignale, die Koprozessorbefehle darstellend) auf einem Koprozessorbus oder einer anderen Verbindung, an den Koprozessor 1745 aus. Ein oder mehrere Koprozessoren 1745 akzeptieren die empfangenen Koprozessorbefehle und führen sie aus.
  • 18 stellt ein Blockdiagramm eines ersten spezielleren beispielhaften Systems 1800 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Wie in 18 gezeigt, ist Mehrprozessorsystem 1800 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 1870 und einen zweiten Prozessor 1880, die über eine Punkt-zu-Punkt-Verbindung 1850 gekoppelt sind. Jeder der Prozessoren 1870 und 1880 kann eine Version des Prozessors 1600 sein. In einer Ausführungsform der Offenbarung sind Prozessoren 1870 und 1880 Prozessoren 1710 bzw. 1715, während Koprozessor 1838 Koprozessor 1745 ist. In einer anderen Ausführungsform sind Prozessoren 1870 und 1880 Prozessor 1710 bzw. Koprozessor 1745.
  • Prozessoren 1870 und 1880 sind als integrierte Speichersteuerungseinheiten (IMC, Integrated Memory Controller) 1872 bzw. 1882 umfassend gezeigt. Prozessor 1870 umfasst auch als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt-Schnittstellen (P-P) 1876 und 1878; in ähnlicher Weise umfasst der zweite Prozessor 1880 P-P-Schnittstellen 1886 und 1888. Prozessoren 1870, 1880 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P) 1850 unter Verwendung von P-P-Schnittstellenschaltungen 1878, 1888 austauschen. Wie in 18 gezeigt, koppeln IMCs 1872 und 1882 die Prozessoren mit jeweiligen Speichern, insbesondere einem Speicher 1832 und einem Speicher 1834, die Teile des lokal mit den jeweiligen Prozessoren verbundenen Hauptspeichers sein können.
  • Prozessoren 1870, 1880 können auch jeweils Informationen mit einem Chipsatz 1890 über individuelle P-P-Schnittstellen 1852, 1854 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1876, 1894, 1886, 1898 austauschen. Der Chipsatz 1890 kann optional Informationen mit dem Koprozessor 1838 über eine Hochleistungsschnittstelle 1839 austauschen. In einer Ausführungsform ist der Koprozessor 1838 ein spezieller Prozessor, wie etwa, beispielsweise, ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder ein Kommunikationsprozessor, eine Komprimierungs- und/oder Dekomprimierungsengine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in einem der beiden Prozessoren oder außerhalb beider Prozessoren enthalten sein; jedoch kann er über eine P-P-Verschaltung mit den Prozessoren verbunden sein, sodass lokale Cache-Informationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Niederleistungsmodus gesetzt wird.
  • Chipsatz 1890 kann mit einem ersten Bus 1816 über eine Schnittstelle 1896 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1816 ein peripherer Komponentenverbindungsbus (PCI, Peripheral Component Interconnect) oder ein Bus, wie etwa ein PCI-Express-Bus oder ein anderer E/A-Verbindungsbus der dritten Generation sein, obwohl der Schutzumfang der vorliegenden Offenbarung nicht so beschränkt ist.
  • Wie in 18 gezeigt, können verschiedene E/A-Vorrichtungen 1814 mit dem ersten Bus 1816 gekoppelt sein, zusammen mit einer Busbrücke 1818, die den ersten Bus 1816 mit einem zweiten Bus 1820 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1815, wie etwa Koprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie etwa, z. B. Grafikbeschleuniger oder Digitalsignalverarbeitungseinheiten (DSPs)), feldprogrammierbare Gate-Arrays oder jeder andere Prozessor, mit dem ersten Bus 1816 gekoppelt. In einer Ausführungsform kann der zweite Bus 1820 ein Bus mit niedriger Pinzahl (LPC, Low Pin Count) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 1820 gekoppelt sein, einschließlich, beispielsweise eine Tastatur und/oder eine Maus 1822, Kommunikationsvorrichtungen 1827 und eine Speichereinheit 1828, wie etwa ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die, in einer Ausführungsform, Befehle/Code und Daten 1830 umfassen kann. Ferner kann eine Audio-E/A 1824 mit dem zweiten Bus 1820 gekoppelt sein. Es ist anzumerken, dass in dieser Offenbarung andere Architekturen in Betracht gezogen werden. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur aus 18 einen Multi-Drop-Bus oder eine andere solche Architektur umsetzen.
  • 19 stellt ein Blockdiagramm eines zweiten spezielleren beispielhaften Systems 1900 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Ähnliche Elemente in 18 und 19 tragen ähnliche Bezugszeichen, und gewisse Aspekte von 18 wurden in 19 ausgelassen, um Eintrüben von anderen Aspekten aus 19 zu verhindern.
  • 19 stellt dar, dass die Prozessoren 1870, 1880 integrierten Speicher und E/A-Steuerlogik („CL“, Control Logic) 1872 bzw. 1882 umfassen können. Daher umfasst die CL 1872, 1882 integrierte Speichersteuerungseinheiten und umfasst E/A-Steuerlogik. 19 stellt dar, dass nicht nur die Speicher 1832, 1834 mit der CL 1872, 1882 gekoppelt sind, sondern dass auch E/A-Vorrichtungen 1914 ebenfalls mit der Steuerlogik 1872, 1882 gekoppelt sind. Ältere E/A-Vorrichtungen 1915 sind mit dem Chipsatz 1890 gekoppelt.
  • 20 stellt ein Blockdiagramm eines SoC 2000 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Ähnliche Elemente in 16 tragen ähnliche Bezugszeichen. Außerdem sind Felder mit gestrichelten Linien optionale Merkmale auf weiterentwickelten SoCs. In 20 ist bzw. sind Verbindungseinheit(en) 2002 gekoppelt mit: einem Anwendungsprozessor 2010, der einen Satz von einem oder mehreren Kernen 1602A-N und gemeinsam genutzte Cacheeinheit(en) 1606 umfasst; einer Systemagenteneinheit 1610; einer oder mehreren Bussteuerungseinheiten 1616; einer oder mehreren integrierten Speichersteuerungseinheiten 1614; einem Satz aus einem oder mehreren Koprozessoren 2020, der integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen kann; einer statischen Direktzugriffsspeichereinheit (SRAM, Static Random Access Memory) 2030; einer Direktzugriffsspeichereinheit (DMA, Direct Memory Access) 2032; und einer Anzeigeeinheit 2040 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst bzw. umfassen der/die Koprozessor(en) 2020 einen speziellen Prozessor, wie etwa, beispielsweise, einen Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs- und/oder Dekomprimierungsengine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder ähnliches.
  • In einigen Fällen kann ein Befehlsumwandler verwendet werden, um einen Befehl aus einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Befehlsumwandler einen Befehl in einen oder mehrere andere Befehle, die durch den Kern zu verarbeiten sind, übersetzen (z. B. unter Verwendung von statischer binärer Übersetzung, dynamischer binärer Übersetzung, einschließlich dynamischer Kompilierung), morphen, emulieren oder anderweitig umwandeln. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination daraus umgesetzt sein. Der Befehlsumwandler kann auf dem Prozessor, außerhalb des Prozessors oder teilweise auf und teilweise außerhalb des Prozessors sein.
  • 21 ist ein Blockdiagramm, die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz abgesetzt darstellend, gemäß Ausführungsformen der Offenbarung. In der dargestellten Ausführungsform ist der Befehlsumwandler ein Softwarebefehlsumwandler, obwohl der Befehlsumwandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen daraus umgesetzt sein kann. 21 zeigt, wie ein Programm in einer höheren Sprache 2102 mit einem x86-Compiler 2104 kompiliert werden kann, um x86-Binärcode 2106 zu erzeugen, der systemintern durch einen Prozessor mit zumindest einem x86-Befehlssatzkern 2116 ausgeführt werden kann. Der Prozessor mit zumindest einem x86-Befehlssatzkern 2116 repräsentiert jeden Prozessor, der im Wesentlichen die gleichen Funktionen durchführen kann wie ein Intel-Prozessor mit zumindest einem x86-Befehlssatzkern durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel-x86-Befehlssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, dazu bestimmt, auf einem Intel-Prozessor mit zumindest einem x86-Befehlssatzkern ausgeführt zu werden, um im Wesentlichen das gleiche Ergebnis zu erreichen wie ein Intel-Prozessor mit zumindest einem x86-Befehlssatzkern. Der x86-Compiler 2104 repräsentiert einen Compiler, der betreibbar ist, um x86-Binärcode 2106 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit zumindest einem x86-Befehlssatzkern 2116 ausgeführt werden kann. In ähnlicher Weise zeigt 21, wie das Programm in der höheren Sprache 2102 mit einem alternativen Befehlssatzcompiler 2108 kompiliert werden kann, um alternativen Befehlssatz-Binärcode 2110 zu erzeugen, der systemintern durch einen Prozessor ohne zumindest einen x86-Befehlssatzkern 2114 (z.B. einen Prozessor mit Kernen, die den MIPS Befehlssatz von MIPS Technologies aus Sunnyvale, CA ausführen und/oder den ARM-Befehlssatz von ARM Holdings aus Sunnyvale, CA, ausführen) ausgeführt werden kann. Der Befehlsumwandler 2112 wird verwendet, um den x86-Binärcode 2106 in Code umzuwandeln, der systemintern durch den Prozessor ohne einen x86-Befehlssatzkern 2114 ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht der gleiche wie der alternative Befehlssatz-Binärcode 2110, da ein Befehlsumwandler, der dies erreichen könnte, schwierig zu erstellen ist; allerdings erfüllt der umgewandelte Code die allgemeine Operation und besteht aus Befehlen aus dem alternativen Befehlssatz. Daher repräsentiert der Befehlsumwandler 2112 Software, Firmware, Hardware oder eine Kombination daraus, die, durch Emulierung, Simulation oder jeden anderen Prozess, einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86-Befehlssatzprozessor oder -kern hat, ermöglicht, den x86-Binärcode 2106 auszuführen.
  • Eine Konzeption kann verschiedene Phasen durchlaufen, von der Erstellung über die Simulation bis zur Fertigung. Daten, die eine Konzeption darstellen, können die Konzeption auf eine Vielzahl von Weisen darstellen. Zuerst kann, da es für Simulationen nützlich ist, die Hardware unter Verwendung einer Hardwarebeschreibungssprache (HDL, Hardware Description Language) oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann ein Schaltungsniveaumodell mit Logik und/oder Transistorgattern bei einigen Phasen des Konzeptionsprozesses produziert werden. Ferner erreichen die meisten Konzeptionen, bei einer gewissen Phase, ein Niveau von Daten, die physische Positionierung von verschiedenen Vorrichtungen im Hardwaremodell darstellend. In dem Fall, wo herkömmliche Halbleiterfertigungstechniken verwendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die die Anwesenheit oder Abwesenheit von verschiedenen Merkmalen auf unterschiedlichen Maskenschichten für Masken angeben, die zum Herstellen der integrierten Schaltung verwendet werden. In einigen Umsetzungen können solche Daten in einem Datenbankdateiformat, wie etwa Graphic Data System II (GDS II), Open Artwork System Interchange Standard (OASIS), oder einem ähnlichen Format gespeichert sein.
  • In einigen Umsetzungen können softwarebasierte Hardwaremodelle sowie HDL und andere Objekte einer funktionalen Beschreibungssprache neben anderen Beispielen Registerübertragungssprachdateien (RTL, Register Transfer Language) einschließen. Solche Objekte können maschinell analysierbar sein, sodass ein Konzeptionswerkzeug das HDL-Objekt (oder - Modell) akzeptieren, das HDL-Objekt auf Attribute der beschriebenen Hardware hin analysieren und eine physische Schaltungs- und/oder On-Chip-Anordnung aus dem Objekt bestimmen kann. Die Ausgabe des Konzeptionswerkzeugs kann zur Herstellung der physischen Vorrichtung verwendet werden. Beispielsweise kann ein Konzeptionswerkzeug Auslegungen verschiedener Hardware- und/oder Firmwareelemente aus dem HDL-Objekt bestimmen, wie beispielsweise Busbreiten, Register (einschließlich Größen und Typen), Speicherblöcke, physische Verbindungspfade, Fabric-Topologien, unter anderen Attributen, die umgesetzt würden, um das im HDL-Objekt modellierte System zu realisieren. Konzeptionswerkzeuge können Werkzeuge zum Bestimmen der Topologie und Fabric-Konfigurationen von Ein-Chip-Systemen (System on a Chip, SoC) und anderen Hardwarevorrichtungen umfassen. In einigen Fällen kann das HDL-Objekt als Grundlage zum Entwickeln von Modellen und Konzeptionsdateien verwendet werden, die durch Herstellungsausrüstung zur Fertigung der beschriebenen Hardware verwendbar sind. Tatsächlich kann ein HDL-Objekt selbst als eine Eingabe für Herstellungssystemsoftware zur Herbeiführung der Herstellung der beschriebenen Hardware bereitgestellt werden.
  • In jeder Darstellung der Konzeption können die Daten, die die Konzeption repräsentieren, in beliebiger Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Speicher, wie etwa eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die übertragen werden über modulierte oder anderweitig erzeugte optische oder elektrische Wellen zum Übertragen solcher Informationen. Wenn eine elektrische Trägerwelle, den Code oder die Konzeption anzeigend oder transportierend, gesendet wird, wird in dem Maße, in dem Kopieren, Puffern oder erneutes Senden des elektrischen Signals durchgeführt wird, eine neue Kopie erzeugt. Daher kann ein Kommunikationsanbieter oder Netzwerkbetreiber einen Artikel, wie etwa in einer Trägerwelle, Techniken der vorliegenden Offenbarung verkörpernd, codierte Informationen, auf einem materiellen, maschinenlesbaren Medium, zumindest vorübergehend, speichern.
  • In verschiedenen Ausführungsformen kann ein Medium, das eine Repräsentation der Konzeption speichert, für ein Herstellungssystem bereitgestellt werden (z. B. ein Halbleiterherstellungssystem, das in der Lage ist, eine integrierte Schaltung und/oder diesbezügliche Komponenten herzustellen). Die Konzeptionsrepräsentation kann das System anweisen, eine Vorrichtung herzustellen, die in der Lage ist, eine beliebige Kombination der oben beschriebenen Funktionen durchzuführen. Beispielsweise kann die Konzeptionsrepräsentation das System dahingehend anweisen, welche Komponenten herzustellen sind, wie die Komponenten zusammengekoppelt werden sollten, wo die Komponenten auf der Vorrichtung platziert werden sollten und/oder hinsichtlich anderer geeigneter Spezifikationen im Zusammenhang mit der herzustellenden Vorrichtung.
  • Daher können ein oder mehrere Aspekte von zumindest einer Ausführungsform durch repräsentative Befehle, gespeichert auf einem maschinenlesbaren Medium, das unterschiedliche Logik innerhalb des Prozessors repräsentiert, umgesetzt sein, die, wenn von einer Maschine gelesen, die Maschine veranlassen, Logik zu erzeugen, um die hier beschriebenen Techniken durchzuführen. Solche Repräsentationen, häufig als „IP-Kerne“ bezeichnet, können auf einem nichtflüchtigen, greifbaren, maschinenlesbaren Medium gespeichert und verschiedenen Kunden oder Fertigungseinrichtungen bereitgestellt werden, um in die Fertigungsmaschinen geladen zu werden, die die Logik oder den Prozessor herstellen.
  • Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination aus solchen Umsetzungsansätzen umgesetzt sein. Ausführungsformen der Offenbarung können als Computerprogramm oder Programmcode, der auf programmierbaren Systemen, zumindest einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nichtflüchtiger Speicher und/oder Speicherelemente), zumindest eine Eingabevorrichtung und zumindest eine Ausgabevorrichtung umfassend, ausgeführt wird.
  • Programmcode, wie etwa Code 1830, dargestellt in 18, kann auf die Eingabebefehle angewendet werden, um die hier beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Weise auf eine oder mehrere Ausgabevorrichtungen angewendet werden. Im Zusammenhang mit dieser Anmeldung umfasst ein Verarbeitungssystem jedes System, das einen Prozessor hat, wie etwa, beispielsweise, einen Digitalsignalprozessor (DSP), eine Mikrosteuerung, eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit) oder einen Mikroprozessor.
  • Der Programmcode kann in einer höheren prozeduralen oder objektorientierten Programmiersprache umgesetzt sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch, wenn gewünscht, in Assembler- oder Maschinensprache umgesetzt sein. Tatsächlich sind die hier beschriebenen Mechanismen in ihrem Umfang nicht auf eine bestimmte Programmiersprache beschränkt. In verschiedenen Ausführungsformen kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die oben dargelegt sind, können umgesetzt werden über auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeicherte Befehle oder Code, die durch ein Verarbeitungselement ausführbar (oder anderweitig zugänglich) sind. Ein nichtflüchtiges maschinenzugängliches/-lesbares Medium umfasst jeden Mechanismus, der Informationen in einer durch eine Maschine, wie etwa einen Computer oder ein elektronisches System, lesbaren Form bereitstellt (d. h. speichert und/oder sendet). Beispielsweise umfasst ein nichtflüchtiges maschinenzugängliches Medium Direktzugriffsspeicher (RAM, Random-Access Memory), wie etwa statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; andere Form von Speichervorrichtungen zum Halten von Informationen, die über flüchtige (ausgebreitete) Signale (z. B. Trägerwellen, Infrarotsignale, Digitalsignale); usw. empfangen wurden, die von den nichtflüchtigen Medien zu unterscheiden sind, die Informationen von daher empfangen können.
  • Befehle, die zum Programmieren von Logik verwendet werden, um Ausführungsformen der Offenbarung durchzuführen, können innerhalb eines Speichers im System, wie etwa DRAM, Cache, Flash-Speicher oder anderer Speicher gespeichert werden. Ferner können die Befehle über ein Netzwerk oder mittels anderer computerlesbarer Medien verteilt werden. Daher kann ein maschinenlesbares Medium jeden Mechanismus zum Speichern oder Senden von Informationen in einer durch eine Maschine (z. B. einen Computer), lesbaren Form umfassen, ist aber nicht beschränkt auf Floppy Disks, optische Platten, Nur-Lese-Speicher mit Compact Discs (CDROMs, Read-Only Memory), und Nur-Lese-Speicher mit magnetooptischen Platten (ROMs, Read-Only Memory), Direktzugriffsspeicher (RAM, Random Access Memory), löschbaren programmierbaren Nur-Lese-Speicher (EPROM, Erasable Programmable Read-Only Memory), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM, Electrically Erasable Programmable Read-Only Memory), magnetische oder optische Karten, Flash-Speicher oder einen materiellen, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet wird. Entsprechend umfasst das computerlesbare Medium jeden Typ von materiellem maschinenlesbarem Medium, das geeignet für Speichern oder Senden von elektronischen Befehlen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form ist.
  • Logik kann verwendet werden, um eine beliebige Funktionalität der verschiedenen Komponenten umzusetzen, wie etwa Netzwerkelement 102, Router 104, Kern 108, die Logik aus 7, Neuronenkernsteuerung 1100, neuromorpher Kern 1200, jeder hier beschriebene Prozessor, andere hier beschriebene Komponenten oder jede Teilkomponente jeder beliebigen dieser Komponenten. „Logik“ kann sich auf Hardware, Firmware, Software und/oder Kombinationen aus diesen zum Durchführen einer oder mehrerer Funktionen beziehen. Als ein Beispiel kann Logik Hardware umfassen, wie etwa eine Mikrosteuerung oder einen Prozessor, verknüpft mit einem nichtflüchtigen Medium zum Speichern von Code, angepasst, um von der Mikrosteuerung oder vom Prozessor ausgeführt zu werden. Daher bezieht sich Bezugnahme auf Logik, in einer Ausführungsform, auf Hardware, die spezifisch ausgelegt ist, um den auf einem nichtflüchtigen Medium zu haltenden Code zu erkennen und/oder auszuführen. Ferner bezieht sich, in einer anderen Ausführungsform, Verwenden einer Logik auf das nichtflüchtige Medium, einschließlich des Codes, der spezifisch angepasst ist, um durch die Mikrosteuerung ausgeführt zu werden, um vorbestimmte Vorgänge durchzuführen. Und wie geschlossen werden kann, kann sich, in noch einer weiteren Ausführungsform, der Begriff Logik (in diesem Beispiel) auf die Kombination der Hardware und des nichtflüchtigen Mediums beziehen. In verschiedenen Ausführungsformen kann Logik einen Mikroprozessor oder ein anderes Verarbeitungselement, der bzw. das zum Ausführen von Softwarebefehlen betreibbar ist, diskrete Logik, wie etwa eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), eine programmierte Logikvorrichtung, wie etwa ein umfeldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA), eine Befehle enthaltende Speichervorrichtung, Kombinationen von Logikvorrichtungen (wie sie z. B. auf einer gedruckten Leiterplatte zu finden wären), oder andere geeignete Hardware und/oder Software umfassen. Logik kann ein oder mehrere Gatter oder andere Schaltungskomponenten umfassen, die z. B. durch Transistoren umgesetzt sein können. In einigen Ausführungsformen kann Logik zudem vollständig als Software ausgeführt sein. Software kann als ein Softwarepaket, Code, Befehle, Befehlssätze und/oder Daten, das/der/die auf einem nichtflüchtigen computerlesbaren Speichermedium aufgezeichnet ist/sind, ausgeführt sein. Firmware kann als Code, Befehle, Befehlssätze und/oder Daten, die in Speichervorrichtungen festcodiert (z. B. nichtflüchtig) sind, ausgeführt sein. Häufig variieren Logikgrenzen, die als separat dargestellt sind, allgemein und überlappen sich potenziell. Beispielsweise können eine erste und eine zweite Logik Hardware, Software, Firmware oder eine Kombination daraus gemeinsam nutzen, dabei potenziell etwas unabhängige Hardware, Software oder Firmware zurückhaltend.
  • Verwenden der Phrase „zum“ oder „dazu ausgelegt“, in einer Ausführungsform, bezieht sich auf Anordnen, Zusammenstellen, Fertigen, Anbieten zum Verkauf, Importieren und/oder Konzipieren einer Einrichtung, Hardware, Logik oder eines Elements zum Durchführen einer speziellen oder bestimmten Aufgabe. In diesem Beispiel ist eine Einrichtung oder ein Element davon, die bzw. das nicht arbeitet, immer noch „dazu ausgelegt“, eine spezielle Aufgabe durchzuführen, wenn sie bzw. es konzipiert, gekoppelt und/oder verbunden ist, um die bezeichnete Aufgabe durchzuführen. Als ein rein veranschaulichendes Beispiel kann ein Logikgatter während Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, „dazu ausgelegt“, ein Signal für einen Takt bereitzustellen, umfasst nicht jedes potenzielle Logikgatter, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das in einer Weise gekoppelt ist, dass während Betriebs der Ausgang 1 oder 0 dazu dient, den Takt zu aktivieren. Es ist erneut anzumerken, dass Verwenden des Begriffs „dazu ausgelegt“ keinen Betrieb erfordert, sondern stattdessen auf den latenten Zustand einer Einrichtung, Hardware und/oder eines Elements fokussiert, wobei in dem latenten Zustand die Einrichtung, die Hardware und/oder das Element dazu konzipiert ist, eine bestimmte Aufgabe durchzuführen, wenn die Einrichtung, Hardware und/oder das Element in Betrieb ist.
  • Ferner bezieht sich Verwenden der Phrasen „in der Lage zu“ und/oder „betreibbar zu“, in einer Ausführungsform, auf eine gewisse Einrichtung, Logik, Hardware und/oder ein Element, in einer Weise konzipiert, um Verwenden der Einrichtung, Logik, Hardware und/oder des Elements in einer angegebenen Weise zu ermöglichen. Wie oben, ist anzumerken, dass sich Verwenden von „zu“, „in der Lage zu“ oder „betreibbar zu“, in einer Ausführungsform auf den latenten Zustand einer Einrichtung, Logik, Hardware und/oder eines Elements bezieht, wo die Einrichtung, Logik, Hardware und/oder das Element nicht in Betrieb ist, aber in solch einer Weise konstruiert ist, um Verwenden einer Einrichtung in einer angegebenen Weise zu ermöglichen.
  • Ein Wert, wie hier verwendet, umfasst jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird das Verwenden von Logikpegeln, Logikwerten oder logischen Werten auch als 1en und 0en bezeichnet, was einfach binäre logische Zustände darstellt. Beispielsweise bezieht sich eine 1 auf einen hohen Logikpegel, und 0 bezieht sich auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie etwa ein Transistor oder eine Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Allerdings wurden andere Darstellungen von Werten in Computersystemen verwendet. Beispielsweise kann die Dezimalzahl Zehn auch als ein binärer Wert von 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Daher umfasst ein Wert eine beliebige Darstellung von Informationen, die in der Lage ist, in einem Computersystem gehalten zu werden.
  • Darüber hinaus können Zustände durch Werte oder durch Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert, wie etwa ein logischer, einen Standard- oder anfänglichen Zustand darstellen, während ein zweiter Wert, wie etwa eine logische Null, einen Nicht-Standardzustand darstellen kann. Zusätzlich beziehen sich die Begriffe „Rücksetzen“ und „Setzen“, in einer Ausführungsform, auf einen Standard- bzw. aktualisierten Wert oder Zustand. Beispielsweise umfasst ein Standardwert potenziell einen hohen logischen Wert, d. h. Rücksetzen, während ein aktualisierter Wert potenziell einen niedrigen logischen Wert umfasst, d. h. Setzen. Es ist anzumerken, dass jede Kombination von Werten genutzt werden kann, um jede beliebige Anzahl von Zuständen darzustellen.
  • In zumindest einer Ausführungsform umfasst ein Prozessor einen ersten neuromorphen Kern zum Umsetzen von mehreren Neuronaleinheiten eines neuronalen Netzwerks, wobei der erste neuromorphe Kern einen Speicher zum Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns umfasst; und eine Steuerung zum Aufzeichnen von aktuellen Zeitschritten von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder Pulse für diesen bereitstellen; und Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne.
  • In einer Ausführungsform dient der erste neuromorphe Kern dazu, einen von einem zweiten neuromorphen Kern empfangenen Puls zu verarbeiten, wobei der Puls in einem ersten Zeitschritt auftritt, der später ist als der aktuelle Zeitschritt des ersten neuromorphen Kerns, wenn der Puls durch den ersten neuromorphen Kern verarbeitet wird. In einer Ausführungsform dient, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, der erste neuromorphe Kern dazu, einen ersten Puls von einem zweiten neuromorphen Kern und einen zweiten Puls von einem dritten neuromorphen Kern zu empfangen, wobei der erste Puls in einem zweiten Zeitschritt auftritt und der zweite Ausgangspuls in einem Zeitschritt auftritt, der von dem zweiten Zeitschritt verschieden ist. In einer Ausführungsform dient, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns der erste Zeitschritt ist, der erste neuromorphe Kern zum Verarbeiten des ersten Pulses durch Zugreifen auf das erste Synapsengewicht in Verbindung mit dem ersten Ausgangspuls und Anpassen eines ersten Membranpotential-Deltas; und zum Verarbeiten des zweiten Pulses durch Zugreifen auf ein zweites Synapsengewicht in Verbindung mit dem zweiten Ausgangspuls und Anpassen eines zweiten Membranpotential-Deltas. In einer Ausführungsform dient die Steuerung dazu zu verhindern, dass der erste neuromorphe Kern zu einem nächsten Zeitschritt übergeht, wenn ein zweiter neuromorpher Kern, der Pulse an den ersten neuromorphen Kern senden soll, auf einen Zeitschritt gesetzt ist, der früher als der aktuelle Zeitschritt des ersten neuromorphen Kerns ist. In einer Ausführungsform verhindert die Steuerung, dass der erste neuromorphe Kern zu einem nächsten Zeitschritt übergeht, wenn ein zweiter neuromorpher Kern, der Pulse vom ersten neuromorphen Kern empfangen soll, auf einen Zeitschritt gesetzt ist, der mehr als eine Schwellenanzahl von Zeitschritten früher als der aktuelle Zeitschritt des ersten neuromorphen Kerns ist. In einer Ausführungsform dient die Steuerung des ersten neuromorphen Kerns dazu, eine Nachricht an die benachbarten neuromorphen Kerne zu senden, anzeigend, dass der aktuelle Zeitschritt des ersten neuromorphen Kerns inkrementiert wurde, wenn der aktuelle Zeitschritt des ersten neuromorphen Kerns inkrementiert wird. In einer Ausführungsform dient die Steuerung des ersten neuromorphen Kerns dazu, eine Nachricht, umfassend zumindest einen Teil des aktuellen Zeitschritts des ersten neuromorphen Kerns, an die benachbarten neuromorphen Kerne zu senden, wenn sich der aktuelle Zeitschritt des ersten neuromorphen Kerns um einen oder mehr Zeitschritte ändert. In einer Ausführungsform umfasst der erste neuromorphe Kern einen Pulspuffer, wobei der Pulspuffer einen ersten Eintrag zum Speichern von Pulsen eines ersten Zeitschritts und einen zweiten Eintrag zum Speichern von Pulsen eines zweiten Zeitschritts umfasst, wobei Pulse des ersten Zeitschritts und Pulse des zweiten Zeitschritts gleichzeitig im Puffer zu speichern sind. In einer Ausführungsform umfasst der erste neuromorphe Kern einen Puffer, umfassend einen ersten Eintrag zum Speichern von Membranpotential-Deltawerten für die mehreren Neuronaleinheiten für einen ersten Zeitschritt und einen zweiten Eintrag zum Speichern von Membranpotential-Deltawerten für die mehreren Neuronaleinheiten für einen zweiten Zeitschritt. In einer Ausführungsform dient die Steuerung dazu, den aktuellen Zeitschritt des ersten neuromorphen Kerns basierend auf einer Anzahl von zulässigen vorausschauenden Zuständen zu steuern, wobei die Anzahl von zulässigen vorausschauenden Zuständen durch eine Größe des zum Speichern von Pulsen für die zulässigen vorausschauenden Zustände verfügbaren Speichers bestimmt wird. In einer Ausführungsform umfasst der Prozessor ferner eine kommunikativ mit dem Prozessor gekoppelte Batterie, eine kommunikativ mit dem Prozessor gekoppelte Anzeige oder eine kommunikativ mit dem Prozessor gekoppelte Netzwerkschnittstelle.
  • In zumindest einer Ausführungsform umfasst ein Verfahren Umsetzen von mehreren Neuronaleinheiten eines neuronalen Netzwerks in einem ersten neuromorphen Kern; Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns; Aufzeichnen von aktuellen Zeitschritten von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder Pulse für diesen bereitstellen; und Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne.
  • In einer Ausführungsform umfasst ein Verfahren ferner Verarbeiten, am ersten neuromorphen Kern, eines von einem zweiten neuromorphen Kern empfangenen Pulses, wobei der Puls in einem ersten Zeitschritt auftritt, der später ist als der aktuelle Zeitschritt des ersten neuromorphen Kerns, wenn der Puls verarbeitet wird. In einer Ausführungsform umfasst ein Verfahren ferner Empfangen, am ersten neuromorphen Kern, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, eines ersten Pulses von einem zweiten neuromorphen Kern und eines zweiten Pulses von einem dritten neuromorphen Kern, wobei der erste Puls in einem zweiten Zeitschritt auftritt und der zweite Ausgangspuls in einem Zeitschritt auftritt, der von dem zweiten Zeitschritt verschieden ist. In einer Ausführungsform umfasst ein Verfahren ferner, während einer Zeitperiode, in der der erste neuromorphe Kern auf den ersten Zeitschritt gesetzt ist, Verarbeiten des ersten Pulses durch Zugreifen auf das erste Synapsengewicht in Verbindung mit dem ersten Puls und Anpassen eines ersten Membranpotential-Deltas; und Verarbeiten des zweiten Pulses durch Zugreifen auf ein zweites Synapsengewicht in Verbindung mit dem zweiten Puls und Anpassen eines zweiten Membranpotential-Deltas. In einer Ausführungsform umfasst ein Verfahren ferner Verhindern, dass der erste neuromorphe Kern zu einem nächsten Zeitschritt übergeht, wenn ein zweiter neuromorpher Kern, der Pulse an den ersten neuromorphen Kern senden soll, auf einen Zeitschritt gesetzt ist, der früher als der aktuelle Zeitschritt des ersten neuromorphen Kerns ist. In einer Ausführungsform umfasst ein Verfahren ferner Verhindern, dass der erste neuromorphe Kern zu einem nächsten Zeitschritt übergeht, wenn ein zweiter neuromorpher Kern, der Pulse vom ersten neuromorphen Kern empfangen soll, auf einen Zeitschritt gesetzt ist, der mehr als eine Schwellenanzahl von Zeitschritten früher als der aktuelle Zeitschritt des ersten neuromorphen Kerns ist. In einer Ausführungsform umfasst ein Verfahren ferner Senden einer Nachricht an die benachbarten neuromorphen Kerne, anzeigend, dass der aktuelle Zeitschritt des ersten neuromorphen Kerns inkrementiert wurde, wenn der aktuelle Zeitschritt des ersten neuromorphen Kerns inkrementiert wird. In einer Ausführungsform umfasst ein Verfahren ferner Senden einer Nachricht, umfassend zumindest einen Teil des aktuellen Zeitschritts des ersten neuromorphen Kerns, an die benachbarten neuromorphen Kerne, wenn sich der aktuelle Zeitschritt des ersten neuromorphen Kerns um einen oder mehr Zeitschritte ändert. In einer Ausführungsform umfasst der erste neuromorphe Kern einen Pulspuffer, wobei der Pulspuffer einen ersten Eintrag zum Speichern von Pulsen eines ersten Zeitschritts und einen zweiten Eintrag zum Speichern von Pulsen eines zweiten Zeitschritts umfasst, wobei Pulse des ersten Zeitschritts und Pulse des zweiten Zeitschritts gleichzeitig im Puffer zu speichern sind. In einer Ausführungsform umfasst der erste neuromorphe Kern einen Puffer, umfassend einen ersten Eintrag zum Speichern von Membranpotential-Deltawerten für die mehreren Neuronaleinheiten für einen ersten Zeitschritt und einen zweiten Eintrag zum Speichern von Membranpotential-Deltawerten für die mehreren Neuronaleinheiten für einen zweiten Zeitschritt. In einer Ausführungsform umfasst ein Verfahren ferner Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf einer Anzahl von zulässigen vorausschauenden Zuständen, wobei die Anzahl von zulässigen vorausschauenden Zuständen durch die Größe des zum Speichern von Pulsen für die zulässigen vorausschauenden Zustände verfügbaren Speichers bestimmt wird.
  • In zumindest einer Ausführungsform hat ein nichtflüchtiges maschinenlesbares Speichermedium darauf gespeicherte Befehle, wobei die Befehle, wenn sie durch die Maschine ausgeführt werden, die Maschine veranlassen, mehrere Neuronaleinheiten eines neuronalen Netzwerks in einem ersten neuromorphen Kern umzusetzen; einen aktuellen Zeitschritt des ersten neuromorphen Kerns zu speichern; aktuelle Zeitschritte von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder Pulse für diesen bereitstellen, aufzuzeichnen; und den aktuellen Zeitschritt des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne zu steuern.
  • In einer Ausführungsform veranlassen die Befehle, wenn sie von der Maschine ausgeführt werden, die Maschine, am ersten neuromorphen Kern, einen von einem zweiten neuromorphen Kern empfangenen Puls zu verarbeiten, wobei der Puls in einem ersten Zeitschritt auftritt, der später ist als der aktuelle Zeitschritt des ersten neuromorphen Kerns, wenn der Puls verarbeitet wird. In einer Ausführungsform veranlassen die Befehle, wenn sie von der Maschine ausgeführt werden, die Maschine, am ersten neuromorphen Kern, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, einen ersten Puls von einem zweiten neuromorphen Kern und einen zweiten Puls von einem dritten neuromorphen Kern zu empfangen, wobei der erste Puls in einem zweiten Zeitschritt auftritt und der zweite Puls in einem Zeitschritt auftritt, der von dem zweiten Zeitschritt verschieden ist. In einer Ausführungsform veranlassen die Befehle, wenn sie von der Maschine ausgeführt werden, die Maschine, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, den ersten Puls zu verarbeiten durch Zugreifen auf das erste Synapsengewicht in Verbindung mit dem ersten Puls und Anpassen eines ersten Membranpotential-Deltas; und den zweiten Puls zu verarbeiten durch Zugreifen auf ein zweites Synapsengewicht in Verbindung mit dem zweiten Puls und Anpassen eines zweiten Membranpotential-Deltas.
  • In zumindest einer Ausführungsform umfasst ein System Mittel zum Umsetzen von mehreren Neuronaleinheiten eines neuronalen Netzwerks in einem ersten neuromorphen Kern; Mittel zum Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns; Mittel zum Aufzeichnen von aktuellen Zeitschritten von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder Pulse für diesen bereitstellen; und Mittel zum Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne.
  • In einer Ausführungsform umfasst ein System ferner Mittel zum Verarbeiten, am ersten neuromorphen Kern, eines von einem zweiten neuromorphen Kern empfangenen Pulses, wobei der Puls in einem ersten Zeitschritt auftritt, der später ist als der aktuelle Zeitschritt des ersten neuromorphen Kerns, wenn der Puls verarbeitet wird. In einer Ausführungsform umfasst ein System ferner Mittel zum Empfangen, am ersten neuromorphen Kern, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, eines ersten Pulses von einem zweiten neuromorphen Kern und eines zweiten Pulses von einem dritten neuromorphen Kern, wobei der erste Puls in einem zweiten Zeitschritt auftritt und der zweite Puls in einem Zeitschritt auftritt, der von dem zweiten Zeitschritt verschieden ist. In einer Ausführungsform umfasst ein System ferner, während einer Zeitperiode, in der der erste neuromorphe Kern auf den ersten Zeitschritt gesetzt ist, Mittel zum Verarbeiten des ersten Pulses durch Zugreifen auf das erste Synapsengewicht in Verbindung mit dem ersten Puls und Anpassen eines ersten Membranpotential-Deltas; und Verarbeiten des zweiten Pulses durch Zugreifen auf ein zweites Synapsengewicht in Verbindung mit dem zweiten Puls und Anpassen eines zweiten Membranpotential-Deltas.
  • In zumindest einer Ausführungsform umfasst ein System einen Prozessor, umfassend einen ersten neuromorphen Kern zum Umsetzen von mehreren Neuronaleinheiten des neuronalen Netzwerks, wobei der erste neuromorphe Kern einen Speicher zum Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns umfasst; und eine Steuerung zum Aufzeichnen von aktuellen Zeitschritten von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder Pulse für diesen bereitstellen; und Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne; wobei das System ferner einen mit dem Prozessor gekoppelten Speicher zum Speichern der durch das neuronale Netzwerk erzeugten Ergebnisse umfasst.
  • In einer Ausführungsform umfasst das System ferner eine Netzwerkschnittstelle zum Übertragen der durch das neuronale Netzwerk erzeugten Ergebnisse. In einer Ausführungsform umfasst das System ferner eine Anzeige zum Anzeigen der durch das neuronale Netzwerk erzeugten Ergebnisse. In einer Ausführungsform umfasst das System ferner eine zelluläre Kommunikationsschnittstelle.
  • In dieser gesamten Spezifikation bedeutet ein Bezug auf „eine Ausführungsform“, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristik, in Verbindung mit der Ausführungsform beschrieben, in zumindest einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Daher bezieht sich die Phrase „in einer Ausführungsform“ an verschiedenen Stellen in dieser Spezifikation nicht notwendigerweise immer auf die gleiche Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristika in einer oder mehreren Ausführungsformen in jeder geeigneten Weise kombiniert sein.
  • In der vorangehenden Spezifikation wurde eine ausführliche Beschreibung mit Bezug auf spezielle beispielhafte Ausführungsformen gegeben. Es ist, allerdings, offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom weiteren Geist und Schutzumfang der Offenbarung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Spezifikation und Zeichnungen sind, entsprechend, in einem veranschaulichenden Sinne zu betrachten, nicht in einem einschränkenden Sinne. Ferner bezieht sich das vorgenannte Verwenden von Ausführungsform und beispielhafter Sprache nicht notwendigerweise auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern kann sich auf unterschiedliche und verschiedene Ausführungsformen sowie potenziell auf die gleiche Ausführungsform beziehen.

Claims (24)

  1. Prozessor, der Folgendes umfasst: einen ersten neuromorphen Kern zum Umsetzen von mehreren Neuronaleinheiten eines neuronalen Netzwerks, wobei der erste neuromorphe Kern Folgendes umfasst: einen Speicher zum Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns; und eine Steuerung zum: Aufzeichnen aktueller Zeitschritte von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder für diesen bereitstellen; und Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne.
  2. Prozessor nach Anspruch 1, wobei der erste neuromorphe Kern dazu dient, einen von einem zweiten neuromorphen Kern empfangenen Puls zu verarbeiten, wobei der Puls in einem ersten Zeitschritt auftritt, der später ist als der aktuelle Zeitschritt des ersten neuromorphen Kerns, wenn der Puls durch den ersten neuromorphen Kern verarbeitet wird.
  3. Prozessor nach Anspruch 1, wobei während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, der erste neuromorphe Kern dazu dient, einen ersten Puls von einem zweiten neuromorphen Kern und einen zweiten Puls von einem dritten neuromorphen Kern zu empfangen, wobei der erste Puls in einem zweiten Zeitschritt auftritt und der zweite Ausgangspuls in einem Zeitschritt auftritt, der von dem zweiten Zeitschritt verschieden ist.
  4. Prozessor nach Anspruch 3, wobei, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns der erste Zeitschritt ist, der erste neuromorphe Kern dient zum: Verarbeiten des ersten Pulses durch Zugreifen auf ein erstes Synapsengewicht in Verbindung mit dem ersten Ausgangspuls und Anpassen eines ersten Membranpotential-Deltas; und Verarbeiten des zweiten Pulses durch Zugreifen auf ein zweites Synapsengewicht in Verbindung mit dem zweiten Ausgangspuls und Anpassen eines zweiten Membranpotential-Deltas.
  5. Prozessor nach Anspruch 1, wobei die Steuerung dazu dient zu verhindern, dass der erste neuromorphe Kern zu einem nächsten Zeitschritt übergeht, wenn ein zweiter neuromorpher Kern, der Pulse an den ersten neuromorphen Kern senden soll, auf einen Zeitschritt gesetzt ist, der früher als der aktuelle Zeitschritt des ersten neuromorphen Kerns ist.
  6. Prozessor nach Anspruch 1, wobei die Steuerung verhindert, dass der erste neuromorphe Kern zu einem nächsten Zeitschritt übergeht, wenn ein zweiter neuromorpher Kern, der Pulse vom ersten neuromorphen Kern empfangen soll, auf einen Zeitschritt gesetzt ist, der mehr als eine Schwellenanzahl von Zeitschritten früher als der aktuelle Zeitschritt des ersten neuromorphen Kerns ist.
  7. Prozessor nach Anspruch 1, wobei die Steuerung des ersten neuromorphen Kerns dazu dient, eine Nachricht an die benachbarten neuromorphen Kerne zu senden, anzeigend, dass der aktuelle Zeitschritt des ersten neuromorphen Kerns inkrementiert wurde, wenn der aktuelle Zeitschritt des ersten neuromorphen Kerns inkrementiert wird.
  8. Prozessor nach Anspruch 1, wobei die Steuerung des ersten neuromorphen Kerns dazu dient, eine Nachricht, umfassend zumindest einen Teil des aktuellen Zeitschritts des ersten neuromorphen Kerns, an die benachbarten neuromorphen Kerne zu senden, wenn sich der aktuelle Zeitschritt des ersten des ersten neuromorphen Kerns um einen oder mehr Zeitschritte ändert.
  9. Prozessor nach Anspruch 1, wobei der erste neuromorphe Kern einen Pulspuffer umfasst, wobei der Pulspuffer einen ersten Eintrag zum Speichern von Pulsen eines ersten Zeitschritts und einen zweiten Eintrag zum Speichern von Pulsen eines zweiten Zeitschritts umfasst, wobei Pulse des ersten Zeitschritts und Pulse des zweiten Zeitschritts gleichzeitig im Puffer zu speichern sind.
  10. Prozessor nach Anspruch 1, wobei der erste neuromorphe Kern einen Puffer umfasst, umfassend einen ersten Eintrag zum Speichern von Membranpotential-Deltawerten für die mehreren Neuronaleinheiten für einen ersten Zeitschritt und einen zweiten Eintrag zum Speichern von Membranpotential-Deltawerten für die mehreren Neuronaleinheiten für einen zweiten Zeitschritt.
  11. Prozessor nach Anspruch 1, wobei die Steuerung dazu dient, den aktuellen Zeitschritt des ersten neuromorphen Kerns basierend auf einer Anzahl von zulässigen vorausschauenden Zuständen zu steuern, wobei die Anzahl von zulässigen vorausschauenden Zuständen durch eine Größe des zum Speichern von Pulsen für die zulässigen vorausschauenden Zustände verfügbaren Speichers bestimmt wird.
  12. Prozessor nach Anspruch 1, ferner umfassend eine kommunikativ mit einem Prozessor gekoppelte Batterie, eine kommunikativ mit dem Prozessor gekoppelte Anzeige oder eine kommunikativ mit dem Prozessor gekoppelte Netzwerkschnittstelle.
  13. Nichtflüchtiges maschinenlesbares Speichermedium, auf dem Befehle gespeichert sind, wobei die Befehle, wenn sie von einer Maschine ausgeführt werden, die Maschine veranlassen zum: Umsetzen von mehreren Neuronaleinheiten eines neuronalen Netzwerks in einem ersten neuromorphen Kern; Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns; Aufzeichnen aktueller Zeitschritte von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder für diesen bereitstellen; und Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne.
  14. Medium nach Anspruch 13, wobei die Befehle, wenn sie von der Maschine ausgeführt werden, die Maschine veranlassen, am ersten neuromorphen Kern, einen von einem zweiten neuromorphen Kern empfangenen Puls zu verarbeiten, wobei der Puls in einem ersten Zeitschritt auftritt, der später ist als der aktuelle Zeitschritt des ersten neuromorphen Kerns, wenn der Puls verarbeitet wird.
  15. Medium nach Anspruch 13, wobei die Befehle, wenn sie von der Maschine ausgeführt werden, die Maschine veranlassen, am ersten neuromorphen Kern, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, einen ersten Puls von einem zweiten neuromorphen Kern und einen zweiten Puls von einem dritten neuromorphen Kern zu empfangen, wobei der erste Puls in einem zweiten Zeitschritt auftritt und der zweite Ausgangspuls in einem Zeitschritt auftritt, der von dem zweiten Zeitschritt verschieden ist.
  16. Medium nach Anspruch 15, wobei die Befehle, wenn sie von der Maschine ausgeführt werden, die Maschine während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, veranlassen zum: Verarbeiten des ersten Pulses durch Zugreifen auf ein erstes Synapsengewicht in Verbindung mit dem ersten Puls und Anpassen eines ersten Membranpotential-Deltas; und Verarbeiten des zweiten Pulses durch Zugreifen auf ein zweites Synapsengewicht in Verbindung mit dem zweiten Puls und Anpassen eines zweiten Membranpotential-Deltas.
  17. Verfahren, das Folgendes umfasst: Umsetzen von mehreren Neuronaleinheiten eines neuronalen Netzwerks in einem ersten neuromorphen Kern; Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns; Aufzeichnen aktueller Zeitschritte von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder für diesen bereitstellen; und Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne.
  18. Verfahren nach Anspruch 16, ferner umfassend Verarbeiten, am ersten neuromorphen Kern, eines von einem zweiten neuromorphen Kern empfangenen Pulses, wobei der Puls in einem ersten Zeitschritt auftritt, der später ist als der aktuelle Zeitschritt des ersten neuromorphen Kerns, wenn der Puls verarbeitet wird.
  19. Verfahren nach Anspruch 16, ferner umfassend Empfangen, am ersten neuromorphen Kern, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, eines ersten Pulses von einem zweiten neuromorphen Kern und eines zweiten Pulses von einem dritten neuromorphen Kern, wobei der erste Puls in einem zweiten Zeitschritt auftritt und der zweite Ausgangspuls in einem Zeitschritt auftritt, der von dem zweiten Zeitschritt verschieden ist.
  20. Verfahren nach Anspruch 19, ferner umfassend, während einer Zeitperiode, in der der erste neuromorphe Kern auf den ersten Zeitschritt gesetzt ist: Verarbeiten des ersten Pulses durch Zugreifen auf ein erstes Synapsengewicht in Verbindung mit dem ersten Puls und Anpassen eines ersten Membranpotential-Deltas; und Verarbeiten des zweiten Pulses durch Zugreifen auf ein zweites Synapsengewicht in Verbindung mit dem zweiten Puls und Anpassen eines zweiten Membranpotential-Deltas.
  21. System, das Folgendes umfasst: Mittel zum Umsetzen von mehreren Neuronaleinheiten eines neuronalen Netzwerks in einem ersten neuromorphen Kern; Mittel zum Speichern eines aktuellen Zeitschritts des ersten neuromorphen Kerns; Mittel zum Aufzeichnen aktueller Zeitschritte von benachbarten neuromorphen Kernen, die Pulse vom ersten neuromorphen Kern empfangen oder für diesen bereitstellen; und Mittel zum Steuern des aktuellen Zeitschritts des ersten neuromorphen Kerns basierend auf den aktuellen Zeitschritten der benachbarten neuromorphen Kerne.
  22. System nach Anspruch 21, ferner umfassend Mittel zum Verarbeiten, am ersten neuromorphen Kern, eines von einem zweiten neuromorphen Kern empfangenen Pulses, wobei der Puls in einem ersten Zeitschritt auftritt, der später ist als der aktuelle Zeitschritt des ersten neuromorphen Kerns, wenn der Puls verarbeitet wird.
  23. System nach Anspruch 21, ferner umfassend Mittel zum Empfangen, am ersten neuromorphen Kern, während einer Zeitperiode, in der der aktuelle Zeitschritt des ersten neuromorphen Kerns ein erster Zeitschritt ist, eines ersten Pulses von einem zweiten neuromorphen Kern und eines zweiten Pulses von einem dritten neuromorphen Kern, wobei der erste Puls in einem zweiten Zeitschritt auftritt und der zweite Ausgangspuls in einem Zeitschritt auftritt, der von dem zweiten Zeitschritt verschieden ist.
  24. System nach Anspruch 23, ferner umfassend, während einer Zeitperiode, in der der erste neuromorphe Kern auf den ersten Zeitschritt gesetzt ist, Mittel zum: Verarbeiten des ersten Pulses durch Zugreifen auf ein erstes Synapsengewicht in Verbindung mit dem ersten Puls und Anpassen eines ersten Membranpotential-Deltas; und Verarbeiten des zweiten Pulses durch Zugreifen auf ein zweites Synapsengewicht in Verbindung mit dem zweiten Puls und Anpassen eines zweiten Membranpotential-Deltas.
DE102018006015.3A 2017-09-29 2018-07-30 Globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke Withdrawn DE102018006015A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/721,653 US20190102669A1 (en) 2017-09-29 2017-09-29 Global and local time-step determination schemes for neural networks
US15/721,653 2017-09-29

Publications (1)

Publication Number Publication Date
DE102018006015A1 true DE102018006015A1 (de) 2019-04-18

Family

ID=65897922

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018006015.3A Withdrawn DE102018006015A1 (de) 2017-09-29 2018-07-30 Globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke

Country Status (3)

Country Link
US (1) US20190102669A1 (de)
CN (1) CN109583578A (de)
DE (1) DE102018006015A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102224320B1 (ko) * 2017-12-01 2021-03-09 서울대학교 산학협력단 신경 모방 시스템
US11645501B2 (en) * 2018-02-28 2023-05-09 International Business Machines Corporation Distributed, event-based computation using neuromorphic cores
FR3083896B1 (fr) * 2018-07-12 2021-01-08 Commissariat Energie Atomique Circuit neuromorphique impulsionnel implementant un neurone formel
US11295205B2 (en) * 2018-09-28 2022-04-05 Qualcomm Incorporated Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization
US20200117988A1 (en) * 2018-10-11 2020-04-16 International Business Machines Corporation Networks for distributing parameters and data to neural network compute cores
JP6946364B2 (ja) * 2019-03-18 2021-10-06 株式会社東芝 ニューラルネットワーク装置
US20210252698A1 (en) * 2020-02-14 2021-08-19 Nvidia Corporation Robotic control using deep learning
US20220156564A1 (en) * 2020-11-18 2022-05-19 Micron Technology, Inc. Routing spike messages in spiking neural networks
CN116670660A (zh) * 2021-03-17 2023-08-29 北京希姆计算科技有限公司 片上网络的仿真模型生成方法、装置、电子设备及计算机可读存储介质
CN113240102B (zh) * 2021-05-24 2023-11-10 北京灵汐科技有限公司 神经元的膜电位更新方法、类脑神经元器件、处理核
CN113807511B (zh) * 2021-09-24 2023-09-26 北京大学 一种脉冲神经网络多播路由器及方法
CN114708639B (zh) * 2022-04-07 2024-05-14 重庆大学 一种基于异构脉冲神经网络的人脸识别的fpga芯片
CN116056285B (zh) * 2023-03-23 2023-06-23 浙江芯源交通电子有限公司 一种基于神经元电路的信号灯控制系统及电子设备

Also Published As

Publication number Publication date
US20190102669A1 (en) 2019-04-04
CN109583578A (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
DE102018006015A1 (de) Globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
DE102020122528A1 (de) Softwareunterstütztes Leistungsmanagement
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE102015109124B4 (de) Cache-Wegvorhersage
DE102018003221A1 (de) Unterstützung gelernter Sprungprädiktoren
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE112013004770T5 (de) Lese- und -Schreibmaskenaktualisierungsbefehl zur Vektorisierung rekursiver Berechnungen über unabhängige Daten
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE102020128808A1 (de) Einrichtung und Verfahren zur adaptiven Planung von Arbeit auf heterogenen Verarbeitungsressourcen
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112021002239T5 (de) Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE102016006399A1 (de) Hardwarevorrichtungen und verfahren zum durchführen von transaktionaler energieverwaltung
DE102014003667A1 (de) Konvertieren bedingter kurzer vorwärtsabzweigungen zu rechnerisch äquivalenten prädizierten instruktionen
DE102018129263A1 (de) Vorrichtung und verfahren zum multiplizieren, summieren und akkumulieren von sätzen von gepackten bytes

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee