-
VERWANDTE ANMELDUNGEN
-
Die vorliegende Anmeldung beansprucht die Priorität der Anmeldedaten der
US-Patentanmeldung Nr. 16/158,558 vom 12.10.2018 mit dem Titel „Accelerated Access to Computations Results Generated from Data Stored in Memory Devices“, die vollumfänglich als Bestandteil der vorliegenden Anmeldung gilt.
-
Die vorliegende Erfindung bezieht sich auf die
US-Patentanmeldung Nr. 16/158,593 vom 12.10.2018 mit dem Titel „Parallel Memory Access and Computation in Memory Devices“, die vollumfänglich als Bestandteil der vorliegenden Anmeldung gilt.
-
FACHGEBIET DER TECHNOLOGIE
-
Mindestens einige vorliegend offenbarte Ausführungsformen betreffen Speichersysteme allgemein, und i.E. insbesondere die Beschleunigung des Zugriffs auf Rechenergebnisse, die aus in Speichervorrichtungen gespeicherten Daten erzeugt werden.
-
HINTERGRUND
-
Manche Rechenmodelle verwenden eine numerische Berechnung großer Datenmengen in Form von Zeilenvektoren, Spaltenvektoren und/oder Matrizen. So kann das Rechenmodell eines künstlichen neuronalen Netzes (KNN) z.B. das Summieren und Multiplizieren von Elementen aus Zeilen- und Spaltenvektoren beinhalten.
-
Es besteht ein zunehmendes Interesse an der Nutzung von KNN für KI-Inferenzen (Künstliche Intelligenz), so z.B. die Erkennung von Ereignissen, Objekten und Mustern, die in verschiedenen Datensätzen, z.B. Sensoreingängen, erfasst sind.
-
Generell verwendet ein KNN ein Netz von Neuronen, um Netzeingänge zu verarbeiten und Ausgänge aus dem Netz zu erzeugen.
-
So z.B. kann jedes Neuron m in einem künstlichen neu m ronalen Netz KNN eine Reihe von Eingängen pk empfangen, wobei k = 1, 2, ..., n. Generell kann es sich bei einigen der Eingänge pk in ein typisches Neuron m um Ausgänge bestimmter anderer Neuronen im Netz handeln, und es kann sich bei einigen der Eingänge pk in das Neuron m um Eingänge in das Netz als Ganzes handeln. Die IO-Beziehungen unter den Neuronen im Netz stellen die neuronale Konnektivität im Netz dar.
-
Ein typisches Neuron m kann eine Beeinflussung bm, eine Aktivierungsfunktion fm und jeweils einen Satz synaptischer Gewichtungen wmk für seine Eingänge pk, wobei k = 1, 2, ..., n. Die Aktivierungsfunktion kann dabei als Treppenfunktion, lineare Funktion, log-sigmoidale Funktion, usw. vorliegen. Unterschiedliche Neuronen im Netz können unterschiedliche Aktivierungsfunktionen aufweisen.
-
Das typische Neuron m erzeugt eine gewichtete Summe sm seiner Eingänge und seiner Beeinflussung, wobei sm = bm + wm1 × p1 + wm2 × p2 + ... + wmn × pn. Der Ausgang am des Neurons m ist die Aktivierungsfunktion der gewichteten Summe, wobei am = fm (sm).
-
Die Beziehungen zwischen dem Eingang/den Eingängen und dem Ausgang/den Ausgängen eines KNN werden generell von einem KNN-Modell definiert, das die Daten, die die Konnektivität der Neuronen im Netz darstellen, sowie die Beeinflussung bm, Aktivierungsfunktion fm und die synaptischen Gewichtungen wmk jedes Neurons m enthält. Ein Rechner kann zur Berechnung des Ausgangs/der Ausgänge des Netzes aus einem bestimmten Satz Netzeingänge aufgrund eines bestimmten KNN-Modells benutzt werden.
-
So können die Eingänge eines KNN-Netzes z.B. aufgrund von Kameraeingängen erzeugt werden, und die Ausgänge aus dem KNN-Netz können die Identifizierung eines Gegenstands, z.B. eines Ereignisses oder Objektes, sein.
-
Generell kann ein KNN mit einem beaufsichtigten Verfahren trainiert werden, bei dem die synaptischen Gewichtungen angepasst werden, um den Fehler zwischen bekannten Ausgängen, die aus jeweiligen Eingängen resultieren, und rechnerisch ermittelten Eingängen, die durch Anwenden der Eingänge auf das KNN erzeugt werden, zu minimieren oder zu reduzieren. Als Beispiele beaufsichtigter Lern-/Trainingsmethoden seien insbesondere genannt: Verstärkungslernen und Lernen mit Fehlerkorrektur.
-
Alternativ dazu oder in Kombination damit kann ein KNN mit einem unbeaufsichtigten Verfahren trainiert werden, bei dem die genauen Ausgänge, die aus einem bestimmten Satz Eingänge resultieren, vor Abschluss des Trainings unbekannt sind. Das KNN kann dazu trainiert werden, um einen Gegenstand in eine Mehrzahl Kategorien einzustufen oder Datenpunkte in Cluster zusammenzufassen.
-
Für ein fortgeschrittenes Maschinenlern-/Trainingsparadigma werden typischerweise mehrere Trainingsalgorithmen verwendet.
-
Figurenliste
-
Die Ausführungsformen werden rein beispielhaft und ohne Einschränkung in den Abbildungen der beiliegenden Zeichnungen veranschaulicht, wobei gleiche Bezugszeichen ähnliche Elemente andeuten.
- zeigt ein System mit einer gemäß einer Ausführungsform konfigurierten Speichervorrichtung.
- zeigt einen Teil einer Speichervorrichtung, die derart konfiguriert ist, dass sie eine Berechnung an Vektoren von Datenelementen gemäß einer Ausführungsform ausführt.
- zeigt einen Teil einer Speichervorrichtung, die derart konfiguriert ist, dass sie eine Berechnung an Vektoren von Datenelementen gemäß einer weiteren Ausführungsform ausführt.
- zeigt eine Matrix von Rechenwerken, die derart konfiguriert ist, dass sie gemäß einer Ausführungsform aus Vektoreingängen ein skalares Ergebnis ausgibt.
- zeigt eine Matrix von Rechenwerken, die von einer Zustandsmaschine dazu angesteuert wird, aus Vektoreingängen ein skalares Ergebnis auszugeben.
- und zeigen eine Matrix von Rechenwerken, die derart konfiguriert ist, dass sie gemäß einer Ausführungsform Vektorergebnisse ausgibt, die aus Vektoreingängen erzeugt wurden.
- zeigt ein Verfahren zur Beschleunigung des Zugriffs auf Rechenergebnisse, die aus in einer Speichervorrichtung gespeicherten Daten erzeugt wurden.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Mindestens unter einigen Aspekten betrifft die vorliegende Erfindung eine Speichervorrichtung, die mit Rechenwerken konfiguriert ist, um Berechnungen an in der Speichervorrichtung gespeicherten Daten auszuführen. Die Speichervorrichtung kann wahlweise ohne Vorbereitung ein Rechenergebnis als Reaktion auf einen Befehl zum Ablesen von Daten aus einem Speicherplatz erzeugen und das Rechenergebnis so bereitstellen, als ob es bereits in der Speichervorrichtung gespeichert worden wäre. Die Speichervorrichtung kann wahlweise eine Ergebnisliste aus mindestens einer Operandenliste erzeugen und die Ergebnisliste in der Speichervorrichtung speichern. Die Speichervorrichtung kann mehrere Speicherbereiche umfassen, auf die parallel zugegriffen werden kann. Auf einige der Speicherbereiche kann die Speichervorrichtung parallel zugreifen, um für die Berechnung in den Rechenwerken Operanden zu erhalten und/oder Ergebnisse zu speichern. Die Rechenwerke können wahlweise eine gleiche Reihe arithmetischer Berechnungen für mehrere Datensätze parallel anstellen. Ferner kann eine Liste der parallel berechneten Ergebnisse durch Summierung als Ausgang aus der Speichervorrichtung kombiniert, in der Speichervorrichtung zwecks Übertragung als Reaktion auf einen an die Speichervorrichtung gerichteten Befehl zwischengespeichert oder in einem Speicherbereich gespeichert werden. Wahlweise kann die Speichervorrichtung den parallelen Zugriff auf einen Speicherbereich durch einen externen Prozessor sowie auf mindestens einen der Speicherbereiche durch die Rechenwerke ermöglichen.
-
Die Rechenergebnisse einer derartigen Speichervorrichtung können bei daten- und/oder rechenintensiven Anwendungen, so z.B. der Nutzung eines KNN für KI-Inferenzen, verwendet werden.
-
Ein Datensatz eines KNN-Modells kann jedoch zu groß sein, als dass er in einem typischen Prozessor, z.B. einem Ein-Chip-System (SoC) oder einer CPU, gespeichert werden kann. Wenn der interne SRAM (Static Random Access Memory) eines SoC oder der interne Cache einer CPU nicht ausreicht, um das ganze KNN-Modell zu halten, muss der Datensatz in einer Speichervorrichtung, so z.B. einer Speichervorrichtung mit DRAM, gespeichert werden. Der Prozessor kann eine Teilmenge der Daten des KNN-Modells aus der Speichervorrichtung abrufen, den Datensatz im internen Cache des Prozessors speichern, Berechnungen an dem zwischengespeicherten Datensatz anstellen und die Ergebnisse dann wieder in der Speichervorrichtung speichern. Eine derartige Herangehensweise ist ineffizient, was Energieverbrauch und Bandbreitennutzung betrifft, da dabei große Datensätze zwischen Prozessor und Speichervorrichtung über einen konventionellen Speicherbus oder eine konventionelle Verbindung übertragen werden.
-
Gemäß mindestens einigen vorliegend offenbarten Ausführungsformen wird eine Speichervorrichtung bereitgestellt, die eine ALU-Matrix aufweist, die derart konfiguriert ist, dass sie die Daten in der Speichervorrichtung vor der Übertragung der Ergebnisse über einen Speicherbus oder eine Kommunikationsverbindung an einen Prozessor vorverarbeitet. Die von der ALU-Matrix durchgeführte Vorverarbeitung reduziert die über den Speicherbus bzw. die Kommunikationsverbindung zu übertragende Datenmenge, wodurch auch der Energieverbrauch des Systems reduziert wird. Ferner kann die von der ALU-Matrix vorgenommene Vorverarbeitung den effektiven Datendurchsatz sowie die Gesamtleistung des Systems erhöhen (z.B. bei der Durchführung von AI-Inferenzen).
-
zeigt ein System mit einer gemäß einer Ausführungsform konfigurierten Speichervorrichtung.
-
Die Speichervorrichtung der ist in einer integrierten Schaltung (IC) (101) verkapselt. Die Speichervorrichtung umfasst einen Speicher-IC-Die (103), eine Matrix (105) von Rechenwerken und eine Kommunikationsschnittstelle (107).
-
Wahlweise kann die Matrix (105) und/oder die Kommunikationsschnittstelle (107) auf einem vom Speicher-IC-Die (103) getrennten IC-Die oder auf demselben Speicher-IC-Die (103) gebildet werden.
-
Wenn die Matrix (105) von Rechenwerken und die Kommunikationsschnittstelle (107) auf einem vom Speicher-IC-Die (103) getrennten IC-Die ausgebildet sind, können die IC-Dies über TSV (Through Silicon Via) verbunden werden, um die Vernetzbarkeit zwischen den Dies und somit auch die Kommunikationsbandbreite zwischen dem im Speicher-IC-Die (103) ausgebildeten Speicher und den Rechenwerken im Die der Matrix (105) zu verbessern. Alternativ können die getrennten Dies, die in einer IC (101) aufeinandergestapelt sind, durch Drahtbonden verbunden werden.
-
Der im Speicher-IC-Die (103) ausgebildete Speicher kann DRAM und/oder Crosspoint-Speicher (z.B. 3D-XPoint-Speicher) umfassen. In manchen Fällen können mehrere Speicher-IC-Dies (103) in die IC (101) aufgenommen werden, um verschiedene Speicherarten und/oder eine erhöhte Speicherkapazität bereitstellen zu können.
-
Der Crosspoint-Speicher weist eine Crosspoint-Anordnung nicht flüchtiger Speicherzellen auf. Eine Crosspoint-Anordnung von nicht flüchtigem Speicher kann aufgrund einer Änderung beim Bulkwiderstand in Verbindung mit einer stapelbaren kreuzgitterartigen Datenzugriffsanordnung die Bitspeicherung durchführen. Zusätzlich gilt, dass die Speicherzellen eines Crosspoint-Speichers, anders als viele Flash-Speicher, transistorlose Speicherelemente sind, und ein nicht flüchtiger Crosspoint-Speicher kann eine Write-In-Place-Operation durchführen, bei der eine nicht flüchtige Speicherzelle programmiert werden kann, ohne dass vorher die nicht flüchtige Speicherzelle gelöscht werden muss. Jedes Speicherelement eines Crosspoint-Speichers kann eine Speicherzelle und einen Selektor aufweisen, die als Spalte aufeinandergestapelt sind. Spalten von Speicherelementen sind über zwei einander senkrecht verlaufende Drahtlagen verbunden, wobei eine Lage über den Spalten von Speicherelementen und die andere Lage unter den Spalten von Speicherelementen liegt. Jedes Speicherelement kann an einer Kreuzung eines Drahts auf jeder der beiden Lagen einzeln ausgewählt werden. Crosspoint-Speichervorrichtungen sind schnell und nicht flüchtig, und können als einheitlicher Speicherpool zwecks Verarbeitung und Speicherung verwendet werden.
-
Vorzugsweise weist der Speicher in der IC (101) eine Mehrzahl Speicherbereiche (111, 113, ..., 115) auf, auf die die Matrix (105) von Rechenwerken parallel zugreifen kann.
-
In manchen Fällen kann die Matrix (105) ferner auf mehrere Daten in jedem Speicherbereich parallel zugreifen und/oder die mehreren Datenelementen parallel bearbeiten.
-
So kann z.B. mindestens einer der Speicherbereiche (z.B. 111, 113) mindestens eine Operandenliste speichern. Die Matrix (105) von Rechenwerken kann die gleiche Reihe von Operationen an jedem Datenelementsatz vornehmen, der ein Element aus jeder der mindestens einen Liste umfasst. Wahlweise kann die Matrix (105) dieselbe Operation an mehreren Elementsätzen parallel vornehmen.
-
So kann z.B. der Speicherbereich A (111) eine Liste mit Datenelementen Ai für i = 1, 2, ..., n speichern, und der Speicherbereich B (111) kann eine weitere Liste mit Datenelementen Bi für i = 1, 2, ..., n speichern. Die Matrix (105) von Rechenelementen kann für i = 1, 2, ..., n Xi = Ai x Bi berechnen, und die Ergebnisse Xi können im Speicherbereich X (115) für i = 1, 2, ..., n gespeichert werden.
-
Jeder Datensatz i von Operanden kann z.B. Ai und Bi enthalten. Die Matrix (105) kann Datenelemente Ai und Bi des Datensatzes i parallel aus dem Speicherbereich A (111) bzw. dem Speicherbereich B (113) ablesen. Die Matrix (105) kann das Ergebnis Xi = Ai x Bi berechnen und im Speicherbereich X (115) speichern und anschließend den nächsten Datensatz i + 1 verarbeiten.
-
Alternativ kann die Matrix (105) k Datensätze parallel ablesen, um parallele Berechnungen für die k Datensätze parallel anzustellen. Die Matrix (105) von Rechenwerken kann z.B. einen Satz von k Elementen Ai+1, Ai+2, ..., Ai+k aus der im Speicherbereich A (111) gespeicherten Liste parallel ablesen. Ebenso kann die Matrix (105) von Rechenwerken einen Satz von k Elementen Bi+1, Bi+2, ..., Bi+k aus der im Speicherbereich B (113) gespeicherten Liste parallel ablesen. Das Ablesen der Sätze von k Elementen aus dem Speicherbereich A (111) und dem Speicherbereich B (113) kann bei einigen Ausführungen parallel erfolgen. Die Matrix (105) kann parallel einen Satz von k Ergebnissen Xi+1 = Ai+1 × Bi+1, Xi+2 = Ai+2 × Bi+2, ..., Xi+k = Ai+k × Bi+k berechnen und speichert die Ergebnisse Xi+1, Xi+2, ..., Xi+k parallel im Speicherbereich X (115).
-
Wahlweise kann die Matrix (105) von Rechenwerken eine Zustandsmaschine umfassen, um die Berechnung für k Datensätze für Teile von Listen, die länger als k sind, zu wiederholen. Alternativ kann der externe Prozessor (109) mehrere Befehle an die Matrix (105) zur Ausführung der Berechnung für verschiedene Teile der Liste richten, wobei jeder Befehl auf die parallele Verarbeitung von bis zu k Datensätzen lautet.
-
Gemäß einigen Ausführungen kann die in der IC (101) verkapselte Speichervorrichtung eine Berechnung dadurch anstellen, dass die Matrix (105) von Rechenwerken auf einige Speicherbereiche (z.B. 111, 113) zugreift, um Operanden abzurufen und/oder Ergebnisse zu speichern, und es dabei gleichzeitig dem externen Prozessor (109) ermöglichen, auf einen getrennten Speicherbereich (z.B. 115) zuzugreifen, der an den Operationen der Matrix (105) nicht beteiligt ist. So kann der Prozessor (109) in einem Zeitraum, in dem die Matrix (105) benutzt wird, die Speicherbereiche (z.B. 111, 113), um die aktuelle Berechnung auszuführen, auf den getrennten Speicherbereich (z.B. 115) zugreifen, um Daten für die nächste Berechnung zu speichern, oder die aus einer früheren Berechnung resultierenden Ergebnisse abzurufen.
-
In manchen Fällen kann die Matrix (105) von Rechenmerken die mindestens eine Liste mit Operanden-Datenelementen auf eine einzelne Zahl reduzieren. So kann z.B. der Speicherbereich A (111) eine Liste mit Datenelementen Ai für i = 1, 2, ..., n speichern, und der Speicherbereich B (111) kann eine weitere Liste mit Datenelementen Bi für i = 1, 2, ..., N speichern. Die Matrix (105) kann S = A1 × B1 + A2 × B2 + ... + Ai × Bi + ... + An × Bn berechnen, und das Ergebnis S kann als Reaktion auf einen Lesebefehl, der die Berechnung von S auslöst, als Ausgang zur Übertragung durch die Kommunikationsschnittstelle (107) an den externen Prozessor (109) bereitgestellt werden.
-
Beim externen Prozessor (109) kann es sich z.B. um einen SoC-Chip handeln. Beim Prozessor (109) kann es sich z.B. um eine CPU oder GPU eines Rechensystems handeln.
-
Die Kommunikationsverbindung (108) zwischen der Kommunikation kann einer Norm für einen Speicherbus oder eine serielle oder parallele Kommunikationsverbindung entsprechen. Das Kommunikationsprotokoll über die Verbindung (108) kann z.B. einer Norm für eine SATA-Verbindung, eine PCIe-Verbindung, eine USB-Verbindung, eine Fibre-Channel-Verbindung, eine SAS-Verbindung, einen DDR-Speicherbus, usw. entsprechen.
-
In manchen Fällen umfasst die Kommunikationsverbindung (108) ferner ein Kommunikationsprotokoll für den externen Prozessor (109), um der Matrix (105) von Rechenwerken den Befehl zur Ausführung einer Berechnung zu geben und/oder damit die Speichervorrichtung den Abschluss einer früher angeforderten Berechnung meldet.
-
zeigt einen Teil einer Speichervorrichtung, die derart konfiguriert ist, dass sie eine Berechnung an Vektoren von Datenelementen gemäß einer Ausführungsform ausführt. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, .., 127) der können z.B. in der Speichervorrichtung der ausgeführt werden.
-
In ist ein Speicherbereich A (121) derart konfiguriert, dass er einen Befehlscode (131) speichert, bei dem es sich um einen Code handelt, der die an Operanden in einem Satz Speicherbereiche (123, 125, ..., 127) auszuführenden Operationen identifiziert. Generell kann ein Befehlscode (131) einen oder mehrere Speicherbereiche (123, 125, ..., 127) benutzen.
-
Datenelemente eines Vektors können als Liste von Datenelementen in einem Speicherbereich gespeichert werden. In sind Speicherbereiche (123, 125, ..., 127) zur Speicherung von Operandenlisten (133, 135, .., 137) konfiguriert. Jeder Operandensatz umfasst ein Element (143, 145, ..., 147) aus jeweils einer der Listen (133, 135, ..., 137). Für jeden Operandensatz berechnet die Matrix (105) ein Ergebnis, das eine Funktion des Befehlscodes (131) und der Operandenelemente (143, 145, ..., 147) ist.
-
In manchen Fällen wird die Ergebnisliste auf eine Zahl reduziert (z.B. durch Summieren der Ergebnisse in der Liste). Die Zahl kann als Ausgang einer Leseaufforderung bereitgestellt werden oder zwecks Zugriff durch den über eine Kommunikationsverbindung (108) an die Speichervorrichtung angeschlossenen externen Prozessor (109) in einem Speicherbereich gespeichert werden.
-
In anderen Fällen wird die Ergebnisliste in der Matrix (105) für die nächste Operation oder zum Ablesen durch einen über eine Kommunikationsverbindung (108) an die Speichervorrichtung angeschlossenen externen Prozessor (108) zwischengespeichert.
-
In weiteren Fällen wird die Ergebnisliste wieder in einem der Speicherbereiche (123, 125, ..., 127) oder einem anderen Speicherbereich, der keine der Operandenlisten (133, 135, ..., 137) speichert, gespeichert.
-
Wahlweise kann der Speicherbereich A (121) eine Speichereinheit umfassen, die die Kennungen der Speicherbereiche (123, 125, ..., 127) der Operandenlisten (133, 135, ..., 137) zwecks Ausführung des Befehlscodes (131) umfassen. So können die Speicherbereiche (123, 125, ..., 127) eine Teilmenge der Speicherbereiche (111, 113, ..., 115) der in der IC (101) verkapselten Speichervorrichtung darstellen, und die Auswahl basiert dabei auf den in der Speichereinheit gespeicherten Kennungen.
-
Wahlweise kann der Speicherbereich A (121) mindestens eine Speichereinheit umfassen, die Position und/oder Größe der Operandenlisten (133, 135, ..., 137) in den Speicherbereichen (123, 125, ..., 127) speichert. So können für den Speicherbereich A (121) für den Befehlscode (131) z.B. die Indizes der ersten Elemente der Operandenlisten (133, 135, ..., 137), die Indizes der letzten Elemente der Operandenlisten (133, 135, ..., 137) und/oder die Größe der Listen (133, 135, ..., 137) vorgegeben werden.
-
Wahlweise kann der Speicherbereich A (121) mindestens eine Speichereinheit umfassen, die mindestens einen bei der Berechnung (149) verwendeten Parameter speichert. Als Beispiel von Parametern dieser Art sei eine Schwelle T genannt, die unabhängig von den für die Berechnung (149) zu bewertenden Datensätzen ist, wie es etwa in einigen der nachstehenden Beispiele der Fall ist.
-
Zur Anforderung unterschiedlicher Berechnungen an den Operanden können unterschiedliche Befehlscodes benutzt werden. So kann z.B. ein erster Befehlscode dazu benutzt werden, um das Ergebnis von R = A × B anzufordern, ein zweiter Befehlscode kann dazu benutzt werden, um das Ergebnis von R = A + B anzufordern, ein dritter Befehlscode kann dazu benutzt werden, um das Ergebnis von R = A × B + C anzufordern, ein vierter Befehlscode kann dazu benutzt werden, um das Ergebnis von R = ( A × B ) > T ? A × B : 0 anzufordern, wobei T die für den Befehlscode (131) vorgegebene Schwelle ist.
-
In manchen Fällen kann ein Befehlscode einen optionalen Parameter, um die Summierung der Ergebnisliste zu einer einzelnen Zahl anzufordern.
-
Der Prozessor (109) kann sich z.B. auf die Berechnung (149) vorbereiten, indem er die Operandenlisten (133, 135, ..., 137) in den Speicherbereichen (123, 125, ..., 127) speichert. Ferner speichert der Prozessor (109) den Befehlscode (131) sowie ggf. die Parameter des Befehlscodes (131) an vorgegebenen Stellen im Speicherbereich A (121).
-
Als Reaktion darauf, dass der Prozessor (109) einen Lesebefehl zum Ablesen des Befehlscodes (131) an dessen Stelle (oder an einer anderen vorgegebenen Stelle im Speicherbereich (121) oder einer anderen vorgegebenen Stelle in der in der IC (101) verkapselten Speichervorrichtung) ausgibt, führt die Matrix (105) von Rechenwerken gemäß einer Ausführungsform die Berechnung (149) aus, die generell eine Funktion des Befehlscodes (131) und der Datenelemente der Operandenlisten (133, 135, ..., 137) (sowie etwaiger Parameter des Befehlscodes (131)) ist. Die Kommunikationsschnittstelle (107) kann als Reaktion auf den Lesebefehl das Ergebnis/die Ergebnisse bereitstellen.
-
Als Reaktion darauf, dass der Prozessor (109) einen Schreibbefehl zum Speichern des Befehlscodes (131) im Speicherbereich A (121) ausgibt, führt die Matrix (105) von Rechenwerken gemäß einer weiteren Ausführungsform die Berechnung (149) aus, und speichert das Ergebnis in ihrem Cache, in einem der Operanden-Speicherbereiche (133, 135, ..., 137) am Speicherplatz des Befehlscodes (131), um den Befehlscode (131) zu ersetzen, oder in einem anderen Speicherbereich (z.B. 131).
-
Wenn das Kommunikationsprotokoll der Verbindung (108) zwischen der Speichervorrichtung und dem Prozessor (109) eine vorgegebene Reaktionszeit vorgibt, kann die Speichervorrichtung gemäß einigen Ausführungsformen als Reaktion auf den Lesebefehl eine Antwort mit einer geschätzten Zeit bis zur Vollendung des Ergebnisses geben. Der Prozessor (109) kann solange Leseversuche unternehmen, bis das Ergebnis erhalten wird. In manchen Fällen wird eine Statusangabe der Berechnung (149) von der Matrix (105) von Rechenwerken in einer Speichereinheit des Speicherbereichs (oder an einer anderen vorgegebenen Stelle in der in der IC (101) verkapselten Speichervorrichtung) gespeichert und/oder aktualisiert.
-
Alternativ kann ein anderes Kommunikationsprotokoll dazu benutzt werden, um der Matrix (105) den Befehl zur Ausführung der Berechnung (149), Einholung einer Meldung über die Vollendung der Berechnung (149) und zum Ablesen der Ergebnisse der Berechnung (149) zu geben.
-
Generell kann es sich bei den Ergebnissen der Berechnung (149) um eine einzelne Zahl oder eine Liste von Zahlen, deren Größe gleich der der Operandenlisten (133, 135, .., 137) ist, handeln.
-
So kann z.B. der Speicherbereich B (123) einen Satz synaptischer Gewichtungen wmk für den Eingang pk in ein Neuron m sowie dessen Beeinflussung bm speichern, der Speicherbereich C (125) kann einen Satz Eingänge pk in das Neuron m sowie eine der Beeinflussung bm entsprechende Eingangseinheit speichern. Ein Befehlscode (131) kann für die Berechnung (149) der gewichteten Summe sm der Eingänge des Neurons m und dessen Beeinflussung konfiguriert werden, wobei sm = bm × 1 + wm1 × p1 + wm2 × p2 + ... + wmn × pn. Die gewichtete Summe sm kann dem Prozessor (109) zugeführt, an einer von einem Parameter im Speicherbereich (121) für den Befehlscode (131) identifizierten Stelle gespeichert oder wieder in der Speichervorrichtung an einer einem Befehl des Prozessors (109) entsprechenden Stelle gespeichert werden.
-
zeigt einen Teil einer Speichervorrichtung, die derart konfiguriert ist, dass sie eine Berechnung an Vektoren von Datenelementen gemäß einer weiteren Ausführungsform ausführt. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, .., 127) der können z.B. in der Speichervorrichtung der ausgeführt werden, wobei wahlweise einige der vorstehend im Zusammenhang mit beschriebenen Methoden angewendet werden können.
-
In wird der Befehlscode (131) aus dem Speicherbereich (121) zwecks Ausführung in der Matrix (105) von Rechenwerken abgerufen. Die vom Befehlscode (131) identifizierte Berechnung (141) wirkt auf die Operanden A (143), ..., und B (145), die aus Speicherbereichen (123 und 125) abgerufen werden. Die Ausführung (141) speichert eine Ergebnisliste (137) in einem weiteren Speicherbereich C (127).
-
Nachdem die Matrix (105) die Berechnung (141) abschließt, kann der Prozessor (109) die Ergebnisse aus dem Speicherbereich C (127) mit einem oder mehreren Lesebefehlen ablesen. In der Zeit, in der der Prozessor (109) die Ergebnisse aus dem Speicherbereich C (127) abliest, kann die Matrix (105) von Rechenwerken die nächste Berechnung ausführen.
-
Bei einigen Ausführungen kann die Speichervorrichtung derart konfiguriert sein, dass sie es der Matrix (105) ermöglicht, die Daten im Speicherbereich (127) zu speichern, und dabei gleichzeitig ermöglicht, dass der Prozessor (109) den Speicherbereich (115) abliest. Vorzugsweise kann die Speichervorrichtung Aufforderungen zum Ablesen des Teils der Ergebnisliste (137), der die Ergebnisse der Berechnung (141) noch nicht erhalten hat, in den Wartezustand versetzen, und bearbeitet mit einiger Verzögerung die Aufforderungen zum Ablesen des Teils der Ergebnisse (137), der die Ergebnisse aus der Berechnung (141) erhalten hat.
-
So kann z.B. der Speicherbereich B (123) eine Liste der gewichteten Summe sm der Eingänge in jedes Neuron m und dessen Beeinflussung bm speichern, und die Berechnung (141) kann dazu benutzt werden, um eine Liste der Ausgänge am des Neurons m zu erstellen, wobei am = f (sm) und f eine vorgegebene Aktivierungsfunktion, z.B. eine Treppenfunktion, lineare Funktion, log-sigmoidale Funktion, sw., ist. In manchen Fällen speichert der Speicherbereich C (125) eine Parameterliste, die für die Aktivierungsfunktion jedes Neurons m spezifisch ist. So können z.B. unterschiedliche Neuronen unterschiedliche Aktivierungsfunktionen aufweisen, und die Operandenliste (135) zur Auswahl der Aktivierungsfunktionen der jeweiligen Neuronen herangezogen werden. Die Ergebnisliste (137) kann für weitere Operationen im Speicherbereich C (127) gespeichert werden. So kann z.B. die Schicht von Neuronen deren Ausgänge am als Eingänge in die nächste Neuronenschicht bereitstellen, wobei die gewichteten Summen der nächsten Neuronenschichten weiter mit der Matrix (105) von Rechenwerken berechnet werden können.
-
zeigt eine Matrix von Rechenwerken, die derart konfiguriert ist, dass sie gemäß einer Ausführungsform aus Vektoreingängen ein skalares Ergebnis ausgibt. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, 127) der können z.B. in der Speichervorrichtung der ausgeführt werden und wahlweise dazu benutzt werden, um den in dargestellten Teil der Speichervorrichtungg auszuführen.
-
In verwendet der Befehlscode (131) drei Operandenlisten (133, 135, 137) zur Erzeugung eines skalaren Ergebnisses (157). Generell kann der Befehlscode (131) mehr oder weniger als drei Operandenlisten benutzen.
-
So z.B. ruft die Matrix (105) von Rechenwerken als Reaktion auf die Speicherung des Befehlscodes (131) und/oder der damit zusammenhängenden Parameter im Speicherbereich A (121) eine Operandenliste A (133) parallel aus dem Speicherbereich (123) ab, ruft eine Operandenliste B (135) parallel aus dem Speicherbereich (125) ab und ruft eine Operandenliste C (137) parallel aus dem Speicherbereich C (137) ab. Wahlweise kann die Matrix (105) gleichzeitig die Listen (133, 135 und 137) aus den jeweiligen Speicherbereichen (123, 125 und 127) laden.
-
Die Matrix (105) weist einen Satz ALUs auf, die die Berechnung (151) parallel ausführen können, um die zwischengespeicherte Ergebnisliste R (135) zu erstellen. Ein weiterer Satz ALUs summiert (155) die Ergebnisliste (153), um einen einzelnen Ausgang (157) zu erzeugen.
-
So kann z.B. ein Befehlscode derart konfiguriert werden, dass er R = A × B + C bewertet. Ein weiterer Befehlscode kann z.B. derart konfiguriert werden, dass er R = (A > B ) ? C : 0 bewertet. Ein weiterer Befehlscode kann z.B. derart konfiguriert werden, dass er R = (A × B > C) ? A × B : 0 bewertet.
-
Wenn z.B. der Prozessor (109) einen Lesebefehl zum Ablesen eines dem Speicherplatz des Befehlscodes (131) entsprechenden Speicherplatzes an die Speichervorrichtung richtet, führt die Matrix (105) von Rechenwerken die Berechnungen (151 und 155) aus, um das Ergebnis (157) als Reaktion auf den Lesebefehl zu erzeugen. Es bedarf also keines besonderen Protokolls, um die Matrix (105) von Rechenwerken zu benutzen.
-
zeigt eine Matrix von Rechenwerken, die von einer Zustandsmaschine dazu angesteuert wird, aus Vektoreingängen ein skalares Ergebnis auszugeben. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, 127) der können z.B. in der Speichervorrichtung der ausgeführt werden und wahlweise dazu benutzt werden, um den in oder dargestellten Teil der Speichervorrichtungg auszuführen.
-
In umfasst die Matrix (105) von Rechenwerken eine Zustandsmaschine (161) und eine ALU-Anordnung (163). Die Zustandsmaschine (161) verwendet die ALU-Anordnung (163) zur Ausführung des Befehlscodes (131) sowie ggf. dessen Parameter.
-
Die Zustandsmaschine (161) kann z.B. jeweils einen Datensatz (143, 145, 147) für den Befehlscode (131) der Reihe nach aus den in den Speicherbereichen (123, 125, 127) gespeicherten listen abrufen. Die ALU-Anordnung (163) kann die Operation des Befehlscodes (131) an einem Datensatz (143, 145, 147) auf einmal ausführen, die Zwischenergebnisse im Cache (165) speichern, die Berechnung für unterschiedliche Datensätze wiederholen und die zwischengespeicherten Zwischenergebnisse (165) in einem im Puffer (167) gespeicherten Ergebnis kombinieren.
-
Gemäß einigen Ausführungsformen werden die Ergebnisse im Cache (165) (z.B. aus einer von der ALU-Anordnung (163) ausgeführten vorigen Berechnung) auch als Operandenliste zur Ausführung des Opcodes (131) herangezogen. So können z.B. die aktuellen Ergebnisse der ALU-Anordnung (163) den vorhandenen Ergebnissen im Cache (165) hinzugefügt werden. Die vorhandenen Ergebnisse im Cache (165) können z.B. je nach dem, ob die entsprechenden der aktuellen Ergebnisse der ALU-Anordnung (163) einen Schwellenwert übersteigen, selektiv zurückgesetzt (z.B. gleich Null gesetzt) werden.
-
Die Zustandsmaschine (161) kann z.B. parallel bis zu einer vorgegebenen Zahl k parallel abrufen, die jeweils ein Element (143, 145, 147) aus jeder Operandenliste (133, 135 und 137) für den Befehlscode (131) enthält. Die ALU-Anordnung (163) kann die Operation des Befehlscodes (131) für Datensätze bis zur vorgegebenen Zahl k parallel ausführen, die Zwischenergebnisse im Cache (165) speichern, die Berechnung für unterschiedliche Datensätze in den Listen (133, 135, ..., 137) wiederholen und wahlweise die zwischengespeicherten Zwischenergebnisse (165) in einem im Puffer (167) gespeicherten Ergebnis kombinieren. Die Kommunikationsschnittstelle (107) kann das Ergebnis aus dem Puffer (167) als Reaktion auf einen Befehl oder eine Anfrage des Prozessors (109) bereitstellen.
-
Die Zustandsmaschine (161) ermöglicht, dass verschiedene Operationen, die durch verschiedene Befehlscodes (z.B. 123) definiert sind, von einer Matrix (105) von Rechenwerken unterstützt und Operandenlisten verschiedener Länge und/oder an verschiedenen Stellen verarbeitet.
-
Alternativ kann auf die Zustandsmaschine (161) verzichtet werden, und die Matrix (105) kann derart konfiguriert werden, dass sie eine vorgegebene Zahl k Datensätze auf einmal mit Operandenlisten der Größe k bearbeitet, die an vorgegebenen Stellen in den Speicherbereichen (133, 135) gespeichert sind, und der externe Prozessor (109) kann die Verarbeitungssequenzen von Datensätzen der vorgegebenen Länge k bearbeiten, um die Verarbeitung von Datensätzen anderer Länge zu bewirken.
-
Wahlweise kann der Ergebnispuffer (167) derart konfiguriert werden, dass er ein einziges Ergebnis liefert, das aus den Operandenlisten (133, 135, 137) erzeugt worden ist. Die Kommunikationsschnittstelle (107) der Speichervorrichtung kann als Reaktion auf das Ablesen eines Speicherplatzes durch den Prozessor (109) das Ergebnis so bereitstellen, als ob das Ergebnis im Voraus am Speicherplatz gespeichert worden wäre.
-
Wahlweise kann der Ergebnispuffer (167) derart konfiguriert werden, dass er eine Liste der aus den Operandenlisten (133, 135, 137) erzeugten Ergebnisse bereitstellt. Die Kommunikationsschnittstelle (107) der Speichervorrichtung kann als Reaktion auf das Ablesen eines Speicherplatzes durch den Prozessor (109) die Ergebnisliste so bereitstellen, als ob das Ergebnis im Voraus am Speicherplatz gespeichert worden wäre. Die Ergebnisse können z.B. über eine PCIe-Verbindung gemäß einem NVMe-Protokoll bereitgestellt werden.
-
und zeigen eine Matrix von Rechenwerken, die derart konfiguriert ist, dass sie gemäß einer Ausführungsform Vektorergebnisse ausgibt, die aus Vektoreingängen erzeugt wurden. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, 127, 171, 173, 175) der und können z.B. in der Speichervorrichtung der konfiguriert werden und wahlweise dazu benutzt werden, um den in dargestellten Teil der Speichervorrichtungg auszuführen.
-
Wie in gezeigt, kann die Matrix (105) der und wahlweise eine Zustandsmaschine (161) umfassen, um ihre Fähigkeit, unterschiedliche Befehlscodes und/oder Operandenlisten unterschiedlicher Länge zu bearbeiten, zu verbessern. Alternativ kann zur Vereinfachung auf die Zustandsmaschine (161) verzichtet werden, und die Matrix (105) von Rechenwerken kann derart konfiguriert werden, dass sie Operandenlisten einer vorgegebenen Länge bearbeitet und sich dabei für die Programmierung ihrer Operationen für Listen unterschiedlicher Längen auf den externen Prozessor (109) verlassen.
-
Die Matrix (105) der und kann in einem autonomen Modus einen Befehl in einem Speicher (121) ausführen. Der Befehl kann einen Befehlscode (131) sowie mindestens einen optionalen Parameter umfassen. Sobald die Matrix (105) von Rechenwerken eine Aufforderung zur Ausführung des Befehls empfängt, kann die Matrix (105) die Berechnung (177) gemäß dem im Speicher (121) gespeicherten Befehl ausführen. Die Berechnung (177) wird an den aus den Speicherbereichen (123 und 125) abgerufenen Operanden ausgeführt, und die Ergebnisse werden im Speicherbereich (127) gespeichert.
-
Die Aufforderung zur Ausführung des Befehls kann die Reaktion auf einen in der Kommunikationsschnittstelle (107) empfangenen Schreibbefehl zum Schreiben eines Befehlscodes (131) an einer vorgegebenen Stelle im Speicherbereich (121), einen Lesebefehl zum Ablesen des Befehlscodes (131) aus dessen Platz im Speicherbereich (121), einen Schreibbefehl zum Schreiben eines vorgegebenen Codes an einem vorgegebenen Speicherplatz in der Speichervorrichtung, einen Lesebefehl zum Ablesen eines vorgegebenen Speicherplatzes in der Speichervorrichtung oder einen anderen in der Kommunikationsschnittstelle (107) empfangenen Befehl sein.
-
Während in die Matrix (105) von Rechenwerken die Berechnung (177) ausführt, ermöglicht die Kommunikationsschnittstelle (107) dem Prozessor (109) gleichzeitig den Zugriff auf den Speicherbereich E (171).
-
Der Prozessor (109) kann z.B. Eingabedaten einer Operandenliste in den Speicherbereich (171) für eine in dargestellte anschließende Berechnung (179) laden.
-
Der Prozessor (109) kann z.B. neue Sensoreingabedaten erhalten und die Eingabedaten in den Speicherbereich (171) für eine in dargestellte anschließende Berechnung (179) laden.
-
Der Prozessor (109) kann z.B. Daten aus einem anderen Speicherbereich in den Speicherbereich (171) für die in dargestellte anschließende Berechnung (179) kopieren.
-
Nach Abschluss der Berechnung (177) kann die Matrix (105) von Rechenelementen eine Aufforderung zur Ausführung des nächsten Befehls für die in dargestellte Berechnung (179) empfangen. Die in dargestellte Berechnung (179) kann sich dabei von der in dargestellte Berechnung (177) unterscheiden. Die unterschiedlichen Berechnungen (177, 179) können an unterschiedlichen Befehlscodes erkannt werden, die im Speicherbereich A (121) gespeichert sind.
-
Während oder nach der in dargestellten Berechnung (177) kann der Prozessor (108) z.B. einen unterschiedlichen Befehlscode (131) speichern und/oder dessen Parameter im Speicherbereich A (121) aktualisieren. Der aktualisierte Befehlscode und dessen Parameter kennzeichnen die in dargestellte nächste Berechnung (179). Während oder nach Abschluss der in dargestellten Berechnung (177) kann der Prozessor (108) die neue Anforderung nach der in dargestellten Berechnung (179) auslösen.
-
Die neue Anfrage kann z.B. dadurch erzeugt werden, dass der Prozessor (108) über die Verbindung 108 einen Schreibbefehl zum Schreiben eines Befehlscodes (131) an einer vorgegebenen Stelle im Speicherbereich (121) an die Kommunikationsschnittstelle (107), einen Lesebefehl zum Ablesen des Befehlscodes (131) aus dessen Platz im Speicherbereich (121), einen Schreibbefehl zum Schreiben eines vorgegebenen Codes an einem vorgegebenen Speicherplatz in der Speichervorrichtung, einen Lesebefehl zum Ablesen eines vorgegebenen Speicherplatzes in der Speichervorrichtung oder einen anderen Befehl an die Kommunikationsschnittstelle (107) richtet. Wenn der Befehl, der die neue Anfrage auslöst, vor Abschluss der aktuellen Berechnung (177) in der Speichervorrichtung empfangen wird, kann die Speichervorrichtung die neue Anfrage zur Ausführung bei Abschluss der aktuellen Berechnung (179) im Puffer ablegen.
-
Gemäß einigen Ausführungsformen ist der Speicherbereich (z.B. 121) zur Speicherung des Befehlscodes (131) und dessen Parameter als Teil der Matrix (105) von Rechenwerken konfiguriert. So z.B. kann der Speicherbereich (z.B. 121) auf dem IC-Die der Matrix (105) und/oder der vom Speicher-IC-Die (103) der Operanden-Speicherbereiche (z.B. 123, ..., 125) getrennten Kommunikationsschnittstelle (107) und/oder dem Ergebnisspeicherbereich (z.B. 127) gebildet werden.
-
zeigt ein Verfahren zur Beschleunigung des Zugriffs auf Rechenergebnisse, die aus in einer Speichervorrichtung gespeicherten Daten erzeugt wurden. So kann z.B. das Verfahren nach in einer Speichervorrichtung der ausgeführt werden, wobei ein Teil nach , und/oder 5 ausgeführt wird.
-
Beim Block 201 speichert eine integrierte Speicherschaltung eine Mehrzahl Operandenlisten (133, 135, ..., 137) in einer Mehrzahl Speicherbereiche (123, 125, ..., 127) der Speichervorrichtung.
-
Beim Block 203 empfängt eine Kommunikationsschnittstelle (107) der Speichervorrichtung eine Anfrage.
-
Beim Block 205 greift eine Matrix (105) von Rechenwerken der Speichervorrichtung auf die Mehrzahl Speicherbereiche (123, 125, ..., 127) parallel zu.
-
Beim Block 207 berechnet die Matrix (105) einen Ausgang (156 oder 167) aus den in den jeweiligen Speicherbereichen (123, 125, .., 127) gespeicherten Operandenlisten (133, 135, ..., 137).
-
Beim Block 209 stellt die Kommunikationsschnittstelle (107) den Ausgang (157 oder 167) als Reaktion auf die Anfrage bereit.
-
So kann es sich bei der Anfrage z.B. um einen Speicherlesebefehl handeln, der zum Ablesen eines Speicherplatzes in der integrierten Speicherschaltung konfiguriert ist, und der Speicherplatz speichert einen Befehlscode (131), der eine von der Matrix (105) von Rechenwerken auszuführende Berechnung (149 oder 151) kennzeichnet.
-
Die Berechnung (207) des Ausgangs (157 oder 167) kann z.B. als Reaktion darauf erfolgen, dass der Befehlscode aus einem vorgegebenen Speicherbereich (111) und/oder einer vorgegebenen Stelle als Reaktion auf einen Speicherlesebefehl abgerufen wird.
-
Die Berechnung (207) des Ausgangs (157 oder 167) kann z.B. die parallele Ausführung einer Operation an einer Mehrzahl Datensätze umfassen, um jeweils eine Mehrzahl Ergebnisse zu erzeugen, wobei jeder der Datensätze ein Datenelement aus jeder der Operandenlisten (133, 135, ..., 137) enthält. Die Berechnung (207) des Ausgangs (157 oder 167) kann ferner Summieren (155) der Mehrzahl Ergebnisse (153) zur Erzeugung des Ausgangs (157) umfassen.
-
So z.B. kann die Matrix (105) eine Anordnung (163) von ALUs umfassen, die derart konfiguriert ist, dass sie eine Operation an einer Mehrzahl Datensätze parallel ausführt.
-
Ferner kann die Matrix (105) von Rechenwerken eine Zustandsmaschine (161) umfassen, die derart konfiguriert ist, dass sie die Anordnung von ALUs ansteuert, um verschiedene von unterschiedlichen Befehlscodes (z.B. 131) gekennzeichnete Berechnungen auszuführen.
-
Wahlweise ist die Zustandsmaschine ferner derart konfiguriert, dass sie die Anordnung (163) von ALUs zur Ausführung von Berechnungen für die Operatendenlisten ansteuert, die mehr Datensätze aufweisen als die Mehrzahl Datensätze, die von der Anordnung (163) von ALUs parallel verarbeitet werden können.
-
Wahlweise kann die Matrix (105) einen Cache (165) umfassen, der derart konfiguriert ist, dass er eine von der ALU-Anordnung (163) parallel erstellte Ergebnisliste (153) speichert. Eine ALU (155) in der Matrix (105) kann dazu benutzt werden, um zur Erzeugung des Ausgangs die Ergebnisliste (153) im Cache zu summieren.
-
Bei einigen Ausführungen kann die Matrix von Rechenwerken Berechnungsergebnisse der ALU-Anordnung (163) im Cache (153 oder 165) kumulieren. Eine Liste der aus der aus den Operandenlisten (133, 135, 137) parallel verarbeiteten Datensätzen berechneten Ergebnisse kann im Cache (153 oder 165) kumuliert oder diesem hinzugefügt werden. Also können die vorhandenen Ergebnisse aus einer früheren Berechnung der Anordnung (163) mit den neuen Ergebnissen aus der aktuellen Berechnung der Anordnung (163) summiert werden.
-
Vorstehende detaillierte Beschreibungen sind z.T. als Algorithmen und symbolische Darstellungen von Operationen an Datenbits in einem Computerspeicher präsentiert worden. Diese algorithmischen Beschreibungen und Darstellungen werden vom Fachmann auf dem Gebiet der Datenverarbeitung verwendet, um den Inhalt ihrer Arbeit an andere vom Fach am wirksamsten zu übermitteln. Vorliegend und generell versteht sich ein Algorithmus als intern konsistente Operationsfolge, die zu einem gewünschten Ergebnis führt. Die Operationen sind solche, die physiche Manipulationen physikalischer Mengen erfordern. Üblicherweise - aber nicht unbedingt - liegen diese Mengen in Form elektrischer oder magnetischer Signale vor, die gespeichert, kombiniert, verglichen und auf sonstige Weisen manipuliert werden können. Es hat sich mitunter, v.a. aus Gründen der Gebräuchkeit, als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terms, Zahlen oder dgl. zu bezeichnen.
-
Hierbei ist jedoch anzumerken, dass diese und ähnliche Begriffe den entsprechenden physikalischen Mengen zuzuordnen sind und lediglich zweckmäßige Bezeichnungen für diese Mengen sind. Die vorliegende Erfindung kann sich auf die Funktionen und Prozesse eines Rechensystems oder eines ähnlichen elektronischen Rechengeräts beziehen, das in den Registerdatenbanken und Speichern des Rechensystems als physikalische (elektronische) Mengen dargestellte Daten manipuliert und in andere Daten umwandelt, die ebenso in den Speichern oder Registerdatenbanken oder sonstigen Speichersystemen als physikalische Mengen dargestellt sind.
-
Die vorliegende Erfindung betrifft auch eine Einrichtung zur Ausführung der erfindungsgemäßen Operationen. Diese Einrichtung kann für die bestimmungsgemäßen Zwecke speziell konstruiert werden, oder aber sie kann einen Prozessor oder Controller eines Universalcomputers umfassen, der von einem in der Rechenvorrichtung gespeicherten Computerprogramm selektiv aktiviert oder neu konfiguriert wird. Ein derartiges Computerprogramm kann in einem computerlesbaren Datenträger, insbesondere z.B. einer Platte einer beliebigen Art, insbesondere Disketten, Bildplatten, CD-ROMs und Magnetbildplatten, ROMs, RAMs, EPROMs, EEPROMs, magnetischen oder optischen Karten oder einem Datenträger einer beliebigen Art, der für die Speicherung elektronischer Befehle geeignet ist und jeweils mit einem Computersystembus gekuppelt ist, gespeichert werden.
-
Die vorliegend dargestellten Algorithmen und Anzeigen stehen an sich in keinem Zusammenhang mit einem bestimmten Rechner oder einer anderen Einrichtung. Verschiedene Mehrzwecksysteme können mit erfindungsgemäßen Programmen eingesetzt werden, oder aber es kann sich als zweckmäßig erweisen, eine stärker spezialisierte Einrichtung zur Ausführung des Verfahrens zu konstruieren. Die Struktur verschiedener dieser Systeme entspricht nachstehender Beschreibung. Außerdem wird die vorliegende Erfindung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es versteht sich, dass verschiedene Programmiersprachen zur Ausführung der vorliegend beschriebenen erfindungsgemäßen Lehren benutzt werden können.
-
Die vorliegende Erfindung kann als Computerprogrammprodukt oder Software bereitgestellt werden, die einen maschinenlesbaren Datenträger umfassen können, in dem Befehle gespeichert sind, die dazu benutzt werden können, ein Rechensystem (oder ein sonstiges elektronisches Gerät) zur Ausführung eines erfindungsgemäßen Verfahrens zu programmieren. Bei einem maschinenlesbaren Datenträger kann es sich um einen beliebigen Mechanismus zur Speicherung von Daten in maschinenlesbarer Form (z.B. Rechner) handeln. Gemäß einigen Ausführungsformen umfasst ein maschinenlesbarer (z.B. computerlesbarer) Datenträger einen maschinenlesbaren (z.B. computerlesbaren) Datenträger wie z.B. einen ROM, RAM, Magnetplattendatenträger, optischen Datenträger, Flash-Speicherkomponenten, usw.
-
In der vorliegenden Beschreibung heißt es zur Vereinfachung, dass verschiedene Funktionen und Operationen von Computerbefehlen ausgeführt oder veranlasst werden. Für den Fachmann ist erkennbar, dass diese Ausdrücke bedeuten, dass die Funktionen aus der Ausführung der Computerbefehle durch mindestens einen Controller oder Prozessor, z.B. Mikroprozessor, resultieren. Alternativ oder in Kombination damit können die Funktionen und Operationen mit zweckbestimmten Schaltungen mit oder ohne Softwarebefehle, z.B. unter Verwendung einer ASIC oder eines FPGA, ausgeführt werden. Ausführungsformen können unter Verwendung von hartverdrahteten Schaltungen ohne Softwarebefehle oder in Kombination mit Softwarebefehlen ausgeführt werden. Also beschränken sich die Methoden weder auf eine bestimmte Kombination von Hardware-Schaltungen und Software, noch auf eine bestimmte Quelle der vom Datenverarbeitungssystem ausgeführten Befehle.
-
Die obige Beschreibung und Zeichnungen dienen lediglich der Veranschaulichung und sind keineswegs als Einschränkung aufzufassen. Zahlreiche Einzelheiten werden beschrieben, um ein besseres Verständnis zu übermitteln. In manchen Fällen wird jedoch auf die Beschreibung allgemein bekannter oder herkömmlicher Details verzichtet, um die Beschreibung nicht unverständlich zu machen. Die Erwähnung einer Ausführungsform bezieht sich vorliegend nicht unbedingt auf dieselbe Ausführungsform, vielmehr ist darunter mindestens eine Ausführungsform zu verstehen.
-
In der obigen Patentschrift ist die Erfindung anhand konkreter Ausführungsbeispiele beschrieben worden. Es versteht sich, dass verschiedene Modifikationen möglich sind, ohne den in den beiliegenden Ansprüchen definierten Schutzumfang zu verlassen. Die Beschreibung und Zeichnungen sind also als beispielhaft und nicht als einschränkend zu betrachten.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 16158558 [0001]
- US 16158593 [0002]