-
HINTERGRUND
-
Ausführungsformen der vorliegenden Offenbarung betreffen Schnittstellen zu Nachrichtenübergabesystemen und insbesondere eine speicherbezogene Schnittstelle für Nachrichtenübergabe-Datenverarbeitungssysteme.
-
KURZDARSTELLU NG
-
Gemäß Ausführungsformen der vorliegenden Offenbarung werden Verfahren und Computerprogrammprodukte zum Anschließen eines speicherbezogenen Systems an ein Nachrichtenübergabesystem bereitgestellt. Es wird eine Schreibanforderung empfangen. Die Schreibanforderung weist Schreibdaten und eine Schreibadresse auf. Bei der Schreibadresse handelt es sich um eine Speicheradresse innerhalb eines Speicherbelegungsplans. Die Schreibadresse wird in eine neuronale Netzadresse übersetzt. Die neuronale Netzadresse kennzeichnet mindestens einen Eingabeort eines neuronalen Ziel-Netzes. Die Schreibdaten werden über ein Netzwerk gemäß der neuronalen Netzadresse an den mindestens einen Eingabeort des neuronalen Ziel-Netzes gesendet. Über das Netzwerk wird eine Nachricht von einem neuronalen Quell-Netz empfangen. Die Nachricht weist Daten und mindestens eine Adresse auf. Ein Ort in einem Puffer wird auf der Grundlage der mindestens einen Adresse ermittelt. Die Daten werden an dem Ort in dem Puffer gespeichert. Der Puffer ist über den Speicherbelegungsplan zugänglich.
-
Gemäß Ausführungsformen der vorliegenden Offenbarung werden Systeme zum Anschließen an Verarbeitungssysteme mit neuronalem Netz bereitgestellt. Ein Verarbeitungssystem mit neuronalem Netz weist mindestens einen Verarbeitungskern mit neuronalem Netz auf, der über ein Netzwerke verbunden ist. Eine Schnittstelle ist funktionsmäßig mit dem Netzwerk verbunden. Die Schnittstelle weist einen Speicherbelegungsplan auf. Der Speicherbelegungsplan weist einen ersten Bereich, der Eingaben in das Prozessorsystem mit neuronalem Netz entspricht, und einen zweiten Bereich auf, der Ausgaben aus dem Prozessorsystem mit neuronalem Netz entspricht. Die Schnittstelle ist geeignet zum Empfangen einer Schreibanforderung, die Schreibdaten und eine Schreibadresse aufweist. Die Schreibadresse entspricht einem Ort innerhalb des ersten Bereichs des Speicherbelegungsplans. Die Schnittstelle ist geeignet zum Senden der Schreibdaten über das Netzwerk an mindestens einen Eingabeort eines Ziel-Verarbeitungskerns mit neuronalem Netz. Die Schnittstelle ist geeignet zum Empfangen einer Leseanforderung, die eine Leseadresse aufweist. Die Leseadresse entspricht einem Ort innerhalb des zweiten Bereichs des Speicherbelegungsplans. Die Schnittstelle ist geeignet zum Zurücksenden von Lesedaten an einen Absender der Leseanforderung. Die Lesedaten weisen die Ausgabe eines Quell-Verarbeitungskerns mit neuronalem Netz auf.
-
Figurenliste
-
Ausführungsformen der Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, wobei:
- 1 ein beispielhaftes speicherbezogenes (MM, memory-mapped) System gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
- 2 veranschaulicht ein beispielhaftes Nachrichtenübergabe- (MP-, memory-passing) System gemäß Ausführungsformen der vorliegenden Offenbarung.
- 3 zeigt einen neurosynaptischen Kern gemäß Ausführungsformen der vorliegenden Offenbarung.
- 4 zeigt einen neurosynaptischen Kern und einen Mesh-Router gemäß Ausführungsformen der vorliegenden Offenbarung.
- 5 veranschaulicht ein kombiniertes speicherbezogenes Nachrichtenübergabesystem gemäß Ausführungsformen der vorliegenden Offenbarung.
- 6 veranschaulicht Eingabe- und Ausgabepuffer eines beispielhaften Kerns gemäß Ausführungsformen der vorliegenden Offenbarung.
- 7 veranschaulicht einen beispielhaften Speicherbelegungsplan gemäß Ausführungsformen der vorliegenden Offenbarung.
- 8 veranschaulicht eine beispielhafte speicherbezogene Schnittstelle für Nachrichtenübergabesysteme gemäß Ausführungsformen der vorliegenden Offenbarung.
- 9 veranschaulicht ein Verfahren zum Anschließen eines speicherbezogenen Systems an ein Nachrichtenübergabesystem gemäß Ausführungsformen der vorliegenden Offenbarung.
- 10 zeigt einen Datenverarbeitungsknoten gemäß einer Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Verschiedene herkömmliche Datenverarbeitungssysteme tauschen Daten zwischen Systemkomponenten über ein Paradigma mit gemeinsam genutztem Speicher/Speicherzuordnung (MM) aus. Im Gegensatz dazu tauschen verschiedene parallele, verteilte Datenverarbeitungssysteme wie zum Beispiel neurosynaptische Systeme über ein Nachrichtenübergabe- (MP-) Paradigma Daten miteinander aus. Die vorliegende Offenbarung sieht effiziente Schnittstellen zwischen diesen beiden Arten von Systemen vor.
-
Verschiedene beispielhafte Ausführungsformen, die hierin bereitgestellt werden, sind in Form von auf neurosynaptischen Spikes beruhenden Systemen beschrieben. Man wird jedoch verstehen, dass die vorliegende Offenbarung auf jedes beliebige Nachrichtenübergabesystem anwendbar ist, darunter verteilte Systeme, neurosynaptische Systeme und andere Systeme, die keine Von-Neumann-Systeme sind.
-
In verschiedenen neurosynaptischen Systemen stellen Arrays von neurosynaptischen Verarbeitungseinheiten mit extrem niedriger Leistung, als neurosynaptische Kerne bezeichnet, eine Architektur zum Lösen von Problemen in Bezug auf Exascale und Big Data bereit. Diese Kerne verwenden Spikes zum Codieren von Informationen. In einem Netz aus neurosynaptischen Kernen können sich Neuronen auf jedem Kern mit jedem beliebigen Axon jedes beliebigen anderen neurosynaptischen Kerns (einschließlich sich selbst) verbinden. Wenn ein Neuron einen Spike aufweist, sendet es ein Spike-Paket, das einem Ziel-Axon auf einem Ziel-Kern zugestellt wird.
-
In digitalen, Spikes nutzenden, neuromorphen Systemen werden Informationen durch Spikes dargestellt und zugestellt, wobei jeder Spike ein digitales Informationspaket ist, das ein oder mehrere Bits enthält. Zum Beispiel ist der Chip IBM TrueNorth ein digitales, Spikes nutzendes, neuromorphes System, in dem jeder Spike ein einzelnes Bit an Informationen trägt (ein binärer Spike). Spikes nutzende, neuronale Netze wie zum Beispiel TrueNorth beruhen auf dem Zustellen von Informationspaketen über vermittelte Datenübertragungsdrähte, wodurch die erforderliche Verdrahtung erheblich reduziert wird. Das Vorhandensein eines Spike wird als ein Empfangen einer 1 behandelt, seine Abwesenheit stellt eine 0 dar. Weitere Werte können unter Verwendung von mehreren verschiedenen Spike-Codierungsschemas in binäre Spikes codiert werden.
-
Eine Spike-Datenübertragung von einem Quell-Neuron auf einem Quell-Kern zu einem Ziel-Axon auf einem Ziel-Kern müsste effektiv eine bestimmte Anzahl von Hops über Router in einem 2D-Raster entweder in der Horizontalen oder in der Vertikalen oder einer Kombination von beiden durchlaufen, um dem Ziel-Axon auf einem Ziel-Kern zugestellt zu werden. Jeder Hop, den ein Spike-Paket durchläuft, verbraucht Leistung und Energie.
-
Innerhalb eines beispielhaften neuromorphen Systems wie zum Beispiel TrueNorth wird einem Spike eine feste Zeitspanne eingeräumt, um von seinem Quell-Neuron zu seinem Ziel-Axon zu gelangen. Dieses feste Fenster wird als Tick bezeichnet. Die Zeit, die ein Spike für seinen Weg benötigt, variiert auf der Grundlage der Entfernung, die der Spike zurücklegen muss, und der Anzahl an 2D-Mesh-Routing-, Chip- und Platinen-Schnittstellen, die der Spike passiert.
-
Bei jedem Tick werden die Neuronen in einem Kern sequenziell verarbeitet, beginnend mit dem ersten Neuron bis hin zu dem letzten Neuron. Dementsprechend wird zusätzlich zu den oben erörterten Übertragungsverzögerungen jeder Spike auch um einen zusätzlichen festen Betrag verzögert, und zwar beruhend darauf, welches Neuron auf einem Kern ihn erzeugt hat. Zum Beispiel wird in einem beispielhaften neuromorphen System wie zum Beispiel TrueNorth mit 256 Neuronen pro Kern das 256. Neuron erst dann verarbeitet, wenn die vorhergehenden 255 Neuronen verarbeitet sind.
-
Gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung stellt ein neurosynaptisches Programm ein neurosynaptisches Netz dar. Ein neurosynaptisches Programm enthält Informationen über das neurosynaptische Netz. In einigen Ausführungsformen umfassen die Informationen neuronale Eigenschaften und Dynamiken, die eine Reaktion eines elektronischen Neurons auf Eingabe-Spikes bestimmen. Zu neuronalen Eigenschaften und Dynamiken können zum Beispiel ein Schwellenwertparameter, ein Leak-Parameter, ein Verzögerungsparameter oder ein Rücksetzparameter gehören. In einigen Ausführungsformen enthalten die neurosynaptischen Programminformationen synaptische Verbindungen des Neurons (z.B. synaptische Verbindungen, die über eine synaptische Kreuzschiene hergestellt werden). In einigen Ausführungsformen enthalten die neurosynaptischen Programminformationen Axon-Eigenschaften (z.B. Axon-Typen). In einigen Ausführungsformen enthalten die neurosynaptischen Programminformationen ein oder mehrere Ziele (z. B. Ziel-Axonen), an die das Ausgabe-Spike des Neurons zugestellt werden soll.
-
Gemäß verschiedenen Ausführungsformen stellt ein neurosynaptisches Netz eine Instanziierung eines neurosynaptischen Programms dar. Ein neurosynaptisches Netz kann in Hardware, in einer Simulation oder in beidem instanziiert sein. Zum Beispiel können aus einem neurosynaptischen Programm eine oder mehrere Instanzen eines neurosynaptischen Netzes entstehen, wobei die Instanzen sich auf einem einzelnen Kern, mehreren Kernen oder mehreren Chips befinden können.
-
Gemäß verschiedenen Ausführungsformen stellt ein Schaltkreis mit neuromorphem Kern ein beispielhaftes neurosynaptisches Netz dar, das durch ein neurosynaptisches Programm beschrieben wird.
-
Gemäß verschiedenen Ausführungsformen stellen ein Corelet oder eine Corelet-Programmiersprache eine Software dar, die eine Abstraktion neurosynaptischer Programme bereitstellen. Eine Zusammensetzung neurosynaptischer Programme kann durch Zusammensetzen von Corelets geschaffen werden.
-
Bei einem TrueNorth Programm handelt es sich um eine vollständige Spezifikation eines Netzes aus neurosynaptischen Kernen, zusammen mit seinen externen Eingaben und Ausgaben. In verschiedenen Ausführungsformen wird ein Teilen-und-Bewältigen-Ansatz angewendet, bei dem ein großes Netz aus neurosynaptischen Kernen durch Verbinden mit einem Satz an kleineren Netzen von neurosynaptischen Kernen aufgebaut wird, wobei jedes der kleineren Netze wiederum durch Verbinden eines Satzes von noch kleineren Netzen aufgebaut werden könnte, und so weiter, bis hin zu einem Netz, das aus einem einzelnen neurosynaptischen Kern besteht, bei dem es sich um den grundlegenden, nicht teilbaren Baustein handelt. Dieses Programmierparadigma wird als Corelet-Programmierung bezeichnet.
-
Unter Bezugnahme auf 1 ist ein beispielhaftes speicherbezogenes System 100 veranschaulicht. Der Speicherbelegungsplan 101 ist unterteilt, und Bereiche 102...105 sind verschiedenen Systemkomponenten zugeordnet. Berechnungskerne 106...109, z.B. Prozessorkerne auf einem oder mehreren Chips, sind mit einem Bus 110 verbunden. Jeder Kern 106...109 ist mit dem Bus 110 verbunden und kann über gemeinsamen Speicher 111...112 Daten austauschen, die aufrufbaren Bereichen des Speicherbelegungsplans 102...103 entsprechen. Jeder Kern 106...109 kann über einen aufrufbaren Bereich 104 des Speicherbelegungsplans 101 mit einem Teilsystem 113 Daten austauschen. In ähnlicher Weise kann jeder Kern 106...109 über einen adressierbaren Bereich 105 des Speicherbelegungsplans 101 mit einem externen System 114 Daten austauschen.
-
Adressen des Speicherbelegungsplans (MM) stehen in Beziehung zu dem globalen Speicherbelegungsplan, der in diesem Beispiel von 0x00000000 bis OxFFFFFFFF reicht.
-
Unter Bezugnahme auf 2 ist ein beispielhaftes Nachrichtenübergabe- (MP-) System 200 veranschaulicht. Eine Mehrzahl von Kernen 201...209 weist jeweils einen Berechnungskern 210, einen Hauptspeicher 211 und eine Datenübertragungsschnittstelle 212 auf. Jeder der Kerne 201...209 ist an ein Netzwerk 213 angeschlossen. Die Datenübertragungsschnittstelle 212 weist einen Eingabepuffer 214 und einen Ausgabepuffer 215 zum Einspeisen und Empfangen von Paketen in das/aus dem Netzwerk 213 auf. Auf diese Weise können die Kerne 201...209 miteinander Daten austauschen, indem sie Nachrichten übergeben.
-
In ähnlicher Weise kann das Teilsystem 216 über eine Datenübertragungsschnittstelle 217 mit Eingabepuffer 218 und Ausgabepuffer 219 mit dem Netzwerk 213 verbunden sein. Externe Systeme können über eine Schnittstelle 220 mit dem Netzwerk 213 verbunden sein.
-
Auf diese Weise können die Kerne 201...209 mit Teilsystemen und externen Systemen Daten austauschen, indem sie Nachrichten übergeben.
-
Nachrichtenübergabe- (MP-) Adressen stehen in Beziehung zu Netzadressen, die sich lokal zu dem Kern befinden. Zum Beispiel kann ein einzelner Kern durch seine X,Y-Position auf einem Chip identifiziert werden, während die lokalen Adressen für einen Puffer oder Hauptspeicher verwendet werden können, der sich lokal zu einem einzelnen Kern befindet.
-
Unter Bezugnahme auf 3 ist ein neurosynaptischer Kern gemäß Ausführungsformen der vorliegenden Offenbarung dargestellt. In einigen Ausführungsformen enthält ein neurosynaptischer Kern 300 Axone 301, die als Zeilen dargestellt sind, Dendriten 302, die als Spalten dargestellt sind, Synapsen 303, die als Zeilen-Spalten-Verbindungsstellen dargestellt sind, und Neuronen 304, die Eingaben von Dendriten empfangen. In einigen Ausführungsformen gibt es 256 Axone und 256 Neuronen. In derartigen Ausführungsformen gibt es 256 x 256 = 65.536 Synapsen. Informationen fließen von den Axonen 301 zu den Neuronen 304, die durch die Synapsen 303 moduliert werden. In verschiedenen Ausführungsformen können die Synapsen binär sein und synaptischen Gewichten zugehörig sein.
-
In einigen Ausführungsformen ist eine Mehrzahl von neurosynaptischen Kernen auf einem Chip gekachelt. In einer beispielhaften Ausführungsformen ist ein Raster von 64 mal 64 Kernen gekachelt, woraus sich 4.096 Kerne mit insgesamt 1.048.576 Neuronen und 268.435.456 Synapsen ergeben. In derartigen Ausführungsformen sind Neuronen, Synapsen und Verbindungsmöglichkeiten über kurze Entfernungen durch den Kernschaltkreis umgesetzt. Verbindungsmöglichkeiten über weite Entfernungen sind logisch. Eine beispielhafte Ausführungsform ist in 4 dargestellt. Ein Mesh-Router 401 stellt eine Datenübertragung zwischen Kernen bereit. Auch werden auf einem gegebenen Kern Datenübertragungsverbindungen von Neuron zu Kern 402 und von Kern zu Axon 403 bereitgestellt.
-
Unter Bezugnahme auf 5 ist ein kombiniertes speicherbezogenes und Nachrichtenübergabesystem 500 gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Ein Speicherplatz 501 innerhalb des globalen Speicherbelegungsplans 101 wird zum Anschließen an das Nachrichtenübergabesystem bereitgestellt. Die Schnittstelle 220 übersetzt Adressen zwischen den Domänen des speicherbezogenen Systems und des Nachrichtenübergabesystems. Auf diese Weise erscheinen die Nachrichtenübergabe-E/A-Puffer jedes Kerns in dem Nachrichtenübergabesystem in dem Speicherbelegungsplan 101 und sind über diesen zugänglich.
-
Unter Bezugnahme auf 6 sind die Eingabe- und Ausgabepuffer 214, 215 eines beispielhaften Kerns 201 gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung veranschaulicht. In diesem beispielhaften Kern stellt der Berechnungskern 210 eine Neuronen-Berechnung bereit, wie zum Beispiel in den vorstehend in Bezug auf die 3 bis 4 beschriebenen neurosynaptischen Systemen. Die Datenübertragungsschnittstelle 212 stellt neuronale Spike-Ereignisse aus der neuronalen Berechnung 210 bereit. In neurosynaptischen Systemen wie zum Beispiel den vorstehend beschriebenen weist der lokale Hauptspeicher 211 die synaptische Kreuzschiene und lokale Parameter des Kerns auf.
-
In dieser beispielhaften Ausführungsform enthält der Ausgabepuffer 215 Daten aus jedem Ausgabe-Neuron (No) zu einer Mehrzahl von Ausgabezeiten (To). Der Eingabepuffer 214 enthält in ähnlicher Weise Daten zum Einspeisen in jedes Eingabe-Axon (Ai) zu einer Mehrzahl von Eingabezeiten (Ti).
-
Unter Bezugnahme auf 7 ist ein beispielhafter Speicherbelegungsplan 101 gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Ein Nachrichtenübergabeteil des Speicherbelegungsplans 101 ist in einen Eingabe- (Axon-) Bereich 702 und einen Ausgabe- (Neuronen-) Bereich 701 unterteilt. Für Co Ausgabekerne ist die Größe des Speicher-Ausgabebereichs 701 gleich Co * To * No * Bo, wobei Bo die Anzahl von Bits an Ausgabedaten pro Axon darstellt. Gleichermaßen ist für Ci Eingabekerne die Größe des Speicher-Eingabebereichs gleich Ci * Ti * Ai * Bi, wobei Bi die Anzahl von Bits der Eingabedaten pro Neuron darstellt.
-
Unter Bezugnahme auf 8 ist eine beispielhafte speicherbezogene Schnittstelle für Nachrichtenübergabesysteme gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Eine Schnittstelle 801 ist mit einem Bus 802 verbunden und über diesen zugänglich. Schreibanforderungen werden an der Schnittstelle 801 empfangen, die über einen Speicherbelegungsplan adressierbar ist. Schreibanforderungen sind an Speicheradressen gerichtet. Eine Adressübersetzungseinheit 803 der Schnittstelle 801 wandelt Speicheradressen in Nachrichtenkernadressen um. Wie oben erwähnt, können Speicheradressen eine relative Adresse innerhalb eines Hauptspeichers angeben, während Kernadressen einen Kernnamen oder eine X,Y-Kernadresse aufweisen können. Geschriebene Daten werden dann unter Verwendung der von der Adressübersetzungseinheit 803 ausgegebenen Nachrichtenadresse einem Ziel-Kern zugestellt. Wie oben erörtert, können die Daten über ein Netzwerk 804 übermittelt und dann einem Eingabepuffer 805 hinzugefügt werden, der in einem Kern 806 enthalten ist.
-
Die Schnittstelle 801 enthält auch einen Ausgabepuffer 807. Der Puffer 807 speichert Nachrichten von dem Nachrichtenübergabesystem und kann, wie oben dargelegt, direkt von dem Nachrichtenübergabesystem gelesen werden. Ein Kern 808 schiebt Ausgabenachrichten über das Netzwerk 804 in den Ausgabepuffer 807. In einigen Ausführungsformen enthält jeder Kern einen Ausgabepuffer, während in einigen Ausführungsformen eine Ausgabe ohne Pufferung auf dem Kern direkt an das Netzwerk gesendet wird. In dieser beispielhaften Ausführungsform werden Daten in Kern-Eingabepuffer zur Aufnahme in Axone geschrieben, und es wird ein gemeinsamer Ausgabepuffer bereitgestellt, in den Daten aus Ausgabe-Neuronen gelesen werden. Aus dem gemeinsamen Puffer sind Kern-Ausgabedaten über den Speicherbelegungsplan lesbar. Wie gezeigt, befinden sich in einigen Ausführungsformen die Ausgabepuffer, ob gemeinsam oder getrennt, physisch in dem Schnittstellenblock 801 anstatt in den einzelnen Kernen 805, 808. Ein gemeinsamer Ausgabepuffer hat die Größe Co * To * No * Bo.
-
Wie oben dargelegt, stellen verschiedene Ausführungsformen eine Adressübersetzung von der speicherbezogenen Domäne in die Nachrichtenübergabe-Domäne bereit. Es wird eine speicherbezogene Schreibanforderung empfangen. Die Speicheradresse wird in eine Adresse umgewandelt, die für das Weiterleiten des Nachrichtenpakets verwendet wird. Zum Beispiel wird in einigen Ausführungsformen eine X,Y-Kernadresse bereitgestellt. In einigen Ausführungsformen wird diese Adressübersetzung algorithmisch durchgeführt. In einigen Ausführungsformen wird diese Adressübersetzung durch eine Nachschlagetabelle (LUT, lookup table) bereitgestellt. In einigen Ausführungsformen wird eine Kombination aus algorithmischer Adressübersetzung und einer Nachschlagetabelle verwendet.
-
Wie oben dargelegt, stellen verschiedene Ausführungsformen eine Adressübersetzung von der Nachrichtenübergabedomäne in die speicherbezogene Domäne bereit. Die Adresse des Nachrichtenpakets wird verwendet, um eine Ausgabenachricht eines bestimmten Kerns an den Ausgabepuffer weiterzuleiten und an dem entsprechenden Ort in dem Ausgabepuffer zu indizieren. Der Ausgabepuffer ist Teil des globalen Speicherbelegungsplans und kann durch einen Lesevorgang über den Bus in der speicherbezogenen Domäne gelesen werden. Nachdem ein Segment des Ausgabepuffers gelesen wurde, kann es als Vorbereitung für nachfolgende Schreibvorgänge von dem Nachrichtenübergabesystem gelöscht werden.
-
In verschiedenen Ausführungsformen verfügt die Schnittstelleneinheit über eine StandardBus-Schnittstelle, die mit dem speicherbezogenen System verbunden ist. In verschiedenen Ausführungsformen entspricht der Bus dem Advanced eXtensible Interface (AXI) oder anderen Advanced Microcontroller Bus Architecture (AMBA) Standards. In verschiedenen Ausführungsformen verfügt die Schnittstelleneinheit über eine Schnittstelle, die mit dem Nachrichtenübergabesystem verbunden ist. In verschiedenen Ausführungsformen entspricht die Schnittstelle einem Standard-Datenübertragungsprotokoll wie zum Beispiel Address Event Representation (AER) oder Message Passing Interface (MPI).
-
Systeme der vorliegenden Offenbarung unterstützen beliebige Busprotokolle. Dementsprechend beinhalten einige Ausführungsformen einen direkten Speicherzugriff (DMA, Direct Memory Access), während dies bei einigen nicht der Fall ist. Zum Beispiel setzen einige Ausführungsformen einzelne Bus-Transaktionen um. Einige Ausführungsformen setzen speicherbezogene E/A (MMIO, Memory-Mapped I/O) oder anschlussbezogene E/A (PMIO, Port-Mapped I/O) um. Einige Ausführungsformen setzen Burst-Bus-Transaktionen um (z.B. DMA). DMA kann die Übertragung direkt an die Schreibadressen-Übersetzungseinheit blockieren oder einen vollen Rahmen per Lesevorgang direkt aus dem Ausgabepuffer übertragen, wodurch die Leistung für bestimmte Anwendungsfälle erhöht wird. In einigen Ausführungsformen, die DMA verwenden, werden ein oder mehrere DMA-Bus-Master bereitgestellt.
-
Die vorliegende Offenbarung ist nützlich zum Integrieren von speicherbezogenen Systemen und Nachrichtenübergabesystemen in einem System auf einem Chip (SoC, System-on-Chip). In einigen derartigen Ausführungsformen kann es sich bei dem Nachrichtenübergabesystem um einen IP-Block handeln, der sich auf einem Standardbus befindet (z.B. AMBA oder AXI).
-
In einer gewissen vorstehend beschriebenen Ausführungsform gibt es eine 1:1-Abbildung zwischen Adressen in der speicherbezogenen Domäne und Adressen in der Nachrichtenübergabedomäne, die über eine Schnittstelleneinheit übersetzt werden. Allerdings werden in einigen Ausführungsformen Ziel-Domänen unter Verwendung einer Kombination aus Adresse und Daten in der Quell-Domäne aufgerufen. In derartigen Ausführungsformen enthält die Nachricht selbst Adressierungsinformationen. Derartige Ausführungsformen erfordern, dass der Quell-Prozessor die Quell-Domäne ist explizit Adressen berechnen, um sie in die Ausgabedaten einzufügen (oder daraus zu entfernen). Hierdurch wird die Größe des benötigten Speicherplatzes verringert, indem ein Teil der Adresse in Daten codiert wird.
-
Zum Beispiel ermöglicht eine 1:1-Abbildung der Zeit/Neuronen-Anordnung auf den Speicherplatz den Prozessoren, jede einzelne lokale Adresse in der Nachrichtenübergabedomäne einzeln und direkt aufzurufen. Daraus ergibt sich ein großer Speicherplatz, aber es wird keine Adressberechnung durch den Prozessor benötigt. Alternativ kann die gesamte Adresse in den Daten codiert sein. In diesem Fall wird der Adressraum des Speicherbelegungsplans auf eine einzelne Adresse mit einem zugrunde liegenden FIFO verkleinert. Daraus ergibt sich ein kleiner Speicherplatz, wobei sämtliche Adressberechnungen durch den Prozessor durchgeführt werden. Durch Kombination dieser Ansätze kann die Größe des Speicherplatzes irgendwo zwischen diesen beiden Extremen liegen, was zu einem Kompromiss zwischen der Komplexität der Decodierungslogik (und der Berechnung) zwischen den beiden Schnittstellen und der Größe an verwendetem Speicherplatz führt.
-
Man wird verstehen, dass die Systeme und Verfahren der vorliegenden Offenbarung zum Integrieren mit verschiedenen Peripheriegeräten geeignet sind. Ein Bus gemäß der vorliegenden Offenbarung kann mehrere Bus-Master aufweisen, z.B. für Sensoren, Aktuatoren, neurosynaptische Systeme, Prozessoren oder Peripheriegeräte. Jeder Systemkomponente ist ein Speicherplatz zugewiesen, und sie kann an einen Speicherplatz jeder beliebigen anderen Systemkomponente senden, wenn sie die Steuerung über den Bus innehat. Ein Zuteiler (arbiter) steuert jederzeit, welcher Bus-Master über den Bus verfügt. In einigen Ausführungsformen wird eine DMA-Steuerungsroutine verwendet, um Daten zwischen Komponenten-Speicherplätzen zu übertragen. Auf diese Weise wird eine nahtlose Systemintegration zwischen herkömmlichen Prozessorsystemen, Nachrichtenübergabesystemen und Peripheriegeräten wie zum Beispiel Sensoren und Aktuatoren bereitgestellt.
-
Kombinierte speicherbezogene/Nachrichtenübermittlungssysteme gemäß der vorliegenden Offenbarung können auf demselben Die umgesetzt sein, um die elektrische Leistungsaufnahme und die Latenzzeit (durch Minimierung von Datenübertragungsentfernungen) bei gleichzeitigem Aufrechterhalten des Durchsatzes zu minimieren. In verschiedenen Ausführungsformen wird Pipelining an der Schnittstelle bereitgestellt, um die Durchsatzziele wie erforderlich zu erreichen. Derartige Systeme können auch als separate Dies oder Chips umgesetzt sein, um ein Verwenden von verschiedenen Prozesstechnologien wie zum Beispiel PCM, Memristoren, Nanoröhren oder Optiken zu ermöglichen. In einigen Ausführungsformen wird ein Parallel-Seriell- und Seriell-Parallel-Umsetzer (SerDes, Serializer/Deserializer) verwendet, um die Leistung von Schnittstellenblöcken bei weiteren Datenübertragungsentfernungen zu erhöhen. Gemäß verschiedenen Ausführungsformen können physische Datenübertragungsbasiselemente (communication primitives) unter Verwendung von Schnittstellen wie zum Beispiel Ethernet und PCle umgesetzt sein.
-
In verschiedenen alternativen Ausführungsformen werden Schreibvorgänge direkt in Kern-Eingabepuffer zur Aufnahme in Axonen durchgeführt, während Neuronen-Ausgaben aus Kern-Ausgabepuffern gelesen werden. In derartigen Ausführungsformen erzeugt ein Lesevorgang eine Leseanforderungsnachricht, speichert die Adresse und sendet die Leseanforderungsnachricht an den Kern. Der Kern antwortet mit einer Datennachricht, die mit der gelesenen Adresse korreliert ist. Die Daten werden dann auf dem Bus zurückgesendet. Dies führt in der Regel zu mehr Aufwand als das Pflegen eines Ausgabepuffers in einer Ausführungsform mit einer einzelnen Schnittstelle und hat daher eine höhere Latenzzeit.
-
In verschiedenen alternativen Ausführungsformen werden Schreibvorgänge in Kern-Eingabepuffer zur Aufnahme in Axonen durchgeführt, während Neuronen-Ausgaben aus einem Ausgabepuffer in dem Hauptspeicher gelesen werden. In derartigen Ausführungsformen wird die Ausgabe der Nachrichtenübergabe unter Verwendung von DMA in den Hauptspeicher geschoben. Dadurch wird die Größe des für den Ausgabepuffer erforderlichen Hauptspeichers minimiert, insbesondere bei räumlich verstreuter Ausgabe.
-
Allerdings muss eine derartige DMA-Steuerungsroutine in der Lage sein, einen beliebigen Speicherzugriff (ein gestreutes Schreiben) durchzuführen. Dieser Arbeitsschritt ist im Allgemeinen ineffizient, und daher sind derartige Ausführungsformen im Allgemeinen weniger leistungsfähig als diejenigen, die einen einzelnen Ausgabepuffer in der Schnittstelle enthalten.
-
Unter Bezugnahme auf 9 ist ein Verfahren zum Anschließen eines speicherbezogenen Systems an ein Nachrichtenübergabesystem gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Bei 901 wird eine Schreibanforderung empfangen. Die Schreibanforderung weist erste Daten und eine erste Ziel-Adresse auf. Bei der ersten Ziel-Adresse handelt es sich um eine Speicheradresse innerhalb eines Speicherbelegungsplans. Bei 902 wird die erste Ziel-Adresse in eine zweite Ziel-Adresse übersetzt. Die zweite Ziel-Adresse kennzeichnet einen Ziel-Kern. Bei 903 werden die ersten Daten über ein Nachrichtenübergabesystem entsprechend der zweiten Ziel-Adresse an den Ziel-Kern gesendet.
-
Bei 904 wird eine Nachricht über ein Nachrichtenübergabesystem von einem Quell-Kern empfangen. Die Nachricht weist zweite Daten auf. Bei 905 wird ein Ort in einem Puffer auf der Grundlage des Quell-Kerns ermittelt. Bei 906 werden die zweiten Daten an dem ersten Ort in dem Puffer gespeichert. Der Puffer ist über einen Speicherbelegungsplan zugänglich. Man wird verstehen, dass in jeder beliebigen Ausführungsform die Schritte 901 bis 903 getrennt von den Schritten 904 bis 906 ausgeführt werden können, und ebenfalls kann eine gegebene Ausführungsform lediglich die Schritte 901 bis 903 oder lediglich 904 bis 906 enthalten, je nachdem ob Nachrichten von einem Nachrichtenübergabesystem weg oder zu diesem hin fließen.
-
Gemäß verschiedenen Ausführungsformen werden Verfahren und Systeme zum nahtlosen Verbinden eines speicherbezogenen (MM)Systems und eines Nachrichtenübergabe- (MP-) Systems bereitgestellt. In einigen Ausführungsformen handelt es sich bei dem Nachrichtenübergabesystem um ein neurosynaptisches System. In einigen Ausführungsformen sind das speicherbezogene System und das Nachrichtenübergabesystem in einem System auf einem Chip (SoC) integriert. In einigen Ausführungsformen übersetzt eine Schnittstelleneinheit speicherbezogene Adressen in Nachrichtenübergabeadressen und umgekehrt. In einigen Ausführungsformen wird eine Umwandlung von MM- in MP-Adressen algorithmisch, durch eine Nachschlagetabelle oder durch eine Kombination daraus durchgeführt. In einigen Ausführungsformen wird eine Umwandlung von MP- in MM-Adressen unter Verwendung eines Ausgabepuffers durchgeführt. In einigen Ausführungsformen wird eine Adressenzuordnung zwischen Systemen durch eine Kombination von Adresse und Daten bereitgestellt. In einigen Ausführungsformen umfasst das speicherbezogene System mehrere Bus-Master oder Peripheriegeräte.
-
Unter Bezugnahme auf 10 ist eine schematische Abbildung eines Beispiels eines Datenverarbeitungsknotens gezeigt. Der Datenverarbeitungsknoten 10 ist lediglich ein Beispiel eines geeigneten Datenverarbeitungsknotens und soll keinerlei Einschränkungen hinsichtlich des Anwendungsbereichs oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung andeuten. Trotzdem kann eine beliebige vorstehend dargelegte Funktionalität in dem Datenverarbeitungsknoten 10 umgesetzt und/oder von diesem durchgeführt werden.
-
In dem Datenverarbeitungsknoten 10 gibt es ein Computersystem/einen Server 12, das/der mit zahlreichen anderen Universal- oder Spezial-Datenverarbeitungssystem-Umgebungen bzw. -konfigurationen betriebsfähig ist. Zu Beispielen für allgemein bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung mit dem Computersystem/Server 12 geeignet sein können, gehören Personal-ComputerSysteme, Server-Computersysteme, Thin Clients, Thick Clients, Handheld- bzw. Laptop-Geräte, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme sowie verteilte Cloud-Computing-Umgebungen, die irgendeine(s) der obigen Systeme bzw. Einheiten enthalten, und dergleichen, aber nicht darauf beschränkt.
-
Das Computersystem/der Server 12 kann in dem allgemeinen Kontext von durch Computersysteme ausführbaren Anweisungen, z.B. Programmmodulen, beschrieben werden, die von einem Computersystem ausgeführt werden. Allgemein können zu Programmmodulen Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter gehören, die bestimmte Aufgaben durchführen bzw. bestimmte abstrakte Datentypen umsetzen. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen ausgeführt werden, wo Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien befinden, darunter Hauptspeichereinheiten.
-
Wie in 10 gezeigt ist, ist das Computersystem/der Server 12 in dem Datenverarbeitungsknoten 10 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/Servers 12 können eine(n) oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemspeicher 28 und einen Bus 18 aufweisen, der verschiedene Systemkomponenten, darunter den Systemspeicher 28, mit dem Prozessor 16 verbindet, sind aber nicht darauf beschränkt.
-
Der Bus 18 stellt eine oder mehrere einer beliebigen von mehreren Arten von Busstrukturen dar, darunter ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein beschleunigter Grafikanschluss und ein Prozessor- oder lokaler Bus, die eine beliebige aus einer Vielfalt von Busarchitekturen verwenden. Zu derartigen Architekturen gehören als Beispiel und nicht als Einschränkung ein ISA-Bus (Industry Standard Architecture), ein MCA-Bus (Micro Channel Architecture), ein EISA-Bus (Enhanced ISA), ein VESA-Lokalbus (Video Electronics Standards Association) sowie ein PCI-Bus (Peripheral Component Interconnect).
-
Das Computersystem/der Server 12 beinhaltet üblicherweise eine Vielfalt von durch ein Computersystem lesbaren Medien. Bei derartigen Medien kann es sich um jedes beliebige Medium handeln, auf welches das Computersystem/der Server 12 zugreifen kann, und es beinhaltet sowohl flüchtige als auch nichtflüchtige Medien, austauschbare und nicht austauschbare Medien.
-
Der Systemspeicher 28 kann durch ein Computersystem lesbare Medien in Form eines flüchtigen Speichers wie einen Direktzugriffsspeicher (RAM) 30 und/oder Cachespeicher 32 enthalten. Das Computersystem/der Server 12 kann darüber hinaus andere austauschbare/nicht austauschbare, flüchtige/nichtflüchtige Computersystem-Speichermedien beinhalten. Lediglich als Beispiel kann das Speichersystem 34 zum Lesen von und zum Schreiben auf ein nicht austauschbares, nichtflüchtiges magnetisches Medium bereitgestellt werden (das nicht gezeigt ist und üblicherweise „Festplattenlaufwerk“ genannt wird). Es können auch ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine austauschbare, nichtflüchtige Magnetplatte (z.B. eine „Floppy-Diskette“) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine austauschbare, nichtflüchtige optische Platte wie eine CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt werden, auch wenn diese nicht gezeigt sind. In derartigen Fällen können sie jeweils über eine oder mehrere Datenmedienschnittstellen mit dem Bus 18 verbunden sein. Wie nachfolgend weiter abgebildet und beschrieben wird, kann der Systemspeicher 28 mindestens ein Programmprodukt enthalten, das einen Satz von Programmmodulen (z.B. mindestens einen) aufweist, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Als Beispiel und nicht als Einschränkung können ein Programm/Dienstprogramm 40 mit (mindestens) einem Satz von Programmmodulen 42 sowie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten in dem Systemspeicher 28 gespeichert sein. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, andere Programmmodule und die Programmdaten oder eine beliebige Kombination daraus können jeweils eine Umsetzung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen allgemein die hierin beschriebenen Funktionen und/oder Methodiken von Ausführungsformen der Erfindung aus.
-
Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14 wie einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw., einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren, und/oder beliebigen Einheiten (z.B. Netzwerkkarten, Modems usw.) Daten austauschen, die es dem Computersystem/Server 12 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe- (E/A-) Schnittstellen 22 erfolgen. Außerdem kann das Computersystem/der Server 12 über einen Netzwerkadapter 20 mit einem oder mehreren Netzwerken Daten austauschen, wie zum Beispiel einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet). Wie dargestellt ist, tauscht der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18 Daten aus. Es sollte klar sein, dass andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten, auch wenn diese nicht gezeigt sind. Zu Beispielen gehören folgende, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Festplattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung aufgeführt, sollen jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die offenbarten Ausführungsformen. Für Fachleute werden viele Abänderungen und Abweichungen ersichtlich sein, ohne von dem Umfang und dem Gedanken der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt vorgefundenen Technologien bestmöglich zu erläutern oder um es anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.