-
Die vorliegende Erfindung betrifft ein Verfahren zur approximativen Bestimmung eines Skalarprodukts eines Eingangsvektors und eines Gewichtsvektors unter Verwendung einer Matrixschaltung, und eine Matrixschaltung.
-
Hintergrund der Erfindung
-
In vielen rechenintensiven Aufgaben, insbesondere bei Künstliche-Intelligenz-Anwendungen bzw. bei Anwendungen des maschinellen Lernens, die neuronale Netzwerke verwenden, ist die Bestimmung von Skalarprodukten von Vektoren erforderlich. Beispielsweise sind die Faltungen in einem „faltenden neuronalen Netzwerk“, im Weiteren als CNN (engl. convolutional neural network) bezeichnet, Skalarprodukte von Vektoren. Um solche Vektoroperationen schnell und effizient durchzuführen, können Vektor-Matrix-Multiplizierer in Form eigens dafür vorgesehener Schaltungen verwendet werden.
-
In diesen Vektor-Matrix-Multiplizierern, die auch als „Dot-Product-Engines“ bezeichnet werden, wird ein Vektor von Eingangsspannungen mittels einer matrixförmigen Anordnung von Memristoren, die an Kreuzungspunkten von orthogonal zueinander verlaufenden Leitungen angeordnet sind und die die sich kreuzenden Leitungen paarweise verbinden, in einen Vektor von Ausgangsspannungen gewandelt, wobei die Ausgangsspannungen jeweils proportional zum Skalarprodukt („dot product“) des Vektors der Eingangsspannungen mit den Leitfähigkeiten der in einer Spalte angeordneten Memristoren sind. Die Eingangsspannungen werden dabei an die in eine Richtung verlaufenden Zeilenleitungen angelegt und führen zu Strömen über die Memristoren in die dazu orthogonal verlaufenden Spaltenleitungen, die mit einem Massepotential verbunden sind. Die Ströme werden mittels Transimpedanzverstärkern in die Ausgangsspannungen gewandelt. Solche Schaltungen können Größen von jeweils einigen 100 oder 1000 Zeilen und Spalten erreichen.
-
Die
DE 10 2020 211 818 A1 zeigt eine Skalarproduktschaltung zum Berechnen eines binären Skalarprodukts eines Eingangsvektors mit einem Gewichtsvektor sowie ein zugehöriges Verfahren. Die Skalarproduktschaltung umfasst einen oder mehrere Addierer und wenigstens eine Matrixschaltung mit in mehreren Zeilen und mehreren Spalten matrixförmig angeordneten Speicherzellen, die jeweils einen ersten und einen zweiten Speicherzustand aufweisen. Jede Matrixschaltung weist wenigstens einen Gewichtsbereich mit einem oder mehreren Bitabschnitten auf, wobei die Matrixschaltung für jeden Bitabschnitt einen Analog-Digital-Wandler und eine damit verbundene Bitschiebeeinheit aufweist, wobei die Spaltenleitungen des Bitabschnitts mit dem Analog-Digital-Wandler verbunden sind und wobei für jede Spalte ein Spaltenauswahlschaltelement vorgesehen ist. Die Bitschiebeeinheiten sind mit einem der Addierer verbunden, wobei jeweils diejenigen Bitschiebeeinheiten, die in einem Gewichtsbereich umfasst sind, mit demselben Addierer verbunden sind.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zur approximativen Bestimmung eines Skalarprodukts eines Eingangsvektors und eines Gewichtsvektors und eine Matrixschaltung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Die Erfindung bedient sich der Maßnahme, zur approximativen Bestimmung eines Skalarprodukts eines Eingangsvektors mit einem Gewichtsvektor eine Matrixschaltung zu verwenden, deren Spaltenleitungen mit jeweiligen Analog-Digital-Wandlern verbunden sind, die eine Präzision aufweisen, die kleiner als die Anzahl an Speicherzellen in der entsprechenden Spalte ist. Dabei werden die Speicherzellen entsprechend Bits der Gewichtskomponenten des Gewichtsvektors programmiert und es wird für jede von einer oder mehreren Teilmengen der Eingangskomponenten des Eingangsvektors eine Bitsummenbestimmung durchgeführt, wobei an einer (der jeweiligen Teilmenge der Eingangskomponenten) entsprechenden Teilmenge der Zeilenleitungen Spannungen entsprechend Bits mit derselben Signifikanz der jeweiligen Teilmenge der Eingangskomponenten angelegt werden, und eine eingeschränkte Bitsumme als Ausgabewert des jeweiligen Analog-Digital-Wandlers bestimmt wird, die Signifikanzen entsprechend der Signifikanz der jeweiligen Spalte und der Signifikanz der Bits, denen die angelegten Spannungen entsprechen, aufweist. Eine Approximation für das Skalarprodukt wird als eine Summe der entsprechend ihrer Signifikanzen gewichteten eingeschränkten Bitsummen bestimmt. Dabei ist die Bitsumme auf den höchsten vom Analog-Digital-Wandler ausgebbaren Wert (d.h. die Präzision des Analog-Digital-Wandlers) eingeschränkt. Dadurch wird, insbesondere für Algorithmen, etwa auf dem Gebiet maschinellen Lernens, die Verwendung von Analog-Digital-Wandler mit relativ wenigen Bits ermöglicht, was z.B. zu einem geringeren Flächenverbrauch und Energieverbrauch entsprechender Analog-Digital-Wandler-Schaltungen führt.
-
Die (Gesamt-)Signifikanz einer Bitsumme ergibt sich als Summe der Signifikanz der Spalte (also der entsprechenden Bits der Gewichtskomponenten; Index r in der Beschreibung der 2) und der Signifikanz der Bits, entsprechend derer die Spannungen angelegt werden (also der entsprechenden Bits der Eingangskomponenten; Index p in der Beschreibung der 2).
-
In einer Ausgestaltung werden die eine oder die mehreren Teilmengen der Eingangskomponenten so gewählt, dass für jede Teilmenge die Anzahl der in dieser eingeschlossenen Eingangskomponenten gleich oder kleiner einer zugeordneten Aktivierungsanzahl von wenigstens einer vorbestimmten maximalen Aktivierungsanzahl ist. Der Unterschied zwischen der maximalen Aktivierungsanzahl und der Präzision des jeweiligen Analog-Digital-Wandlers gibt an, wie groß ein bei der Approximation möglicherweise auftretender Fehler sein kann.
-
In einer Ausgestaltung wird die wenigstens eine vorbestimmte maximale Aktivierungsanzahl basierend auf einem vorbestimmten Approximationsniveau des Skalarprodukts und/oder basierend auf mehreren vorbestimmten Approximationsniveaus, die verschiedenen Teilen des Skalarprodukts zugeordnet sind, gewählt. Ein Approximationsniveau (z.B. als Wert in einem diskreten oder kontinuierlichen Wertebereich gegeben) gibt im Prinzip an, wie genau oder ungenau die Approximation sein soll. Die jeweilige maximale Aktivierungsanzahl wird umso kleiner bestimmt, je genauer die Approximation sein soll. Eine maximale Aktivierungsanzahl, die gleich der Präzision des jeweiligen Analog-Digital-Wandlers ist, entspricht einer präzisen Bestimmung des Skalarprodukts, d.h. mit Sicherheit fehlerlose Approximation. Ist verschiedenen Bereichen des Skalarprodukts (d.h. verschiedenen Bereichen des Eingangs- bzw. Gewichtsvektors bzw. entsprechenden Komponentenbereichen) ein verschiedenes Approximationsniveau zugeordnet, wird insbesondere die vorbestimmte maximale Aktivierungsanzahl für Teilmengen entsprechend einem Komponentenbereich gewählt, die diese überschneiden, z.B., wenn eine Teilmenge mehrere Komponentenbereiche schneidet, die kleinste der entsprechenden Aktivierungsanzahlen.
-
Die eine oder die mehreren Teilmengen der Eingangskomponenten sind zweckmäßigerweise disjunkt. Auch ist die Vereinigung der einen oder der mehreren Teilmengen gleich der gesamten Menge von Eingangskomponenten, d.h. die gesamte Menge der Eingangskomponenten wird aufgeteilt, um die eine oder die mehreren Teilmengen zu erhalten. Der Begriff ‚Teilmenge der Eingangskomponenten‘ ist so zu verstehen, dass, im Falle lediglich einer Teilmenge, diese gleich der gesamten Menge von Eingangskomponenten sein kann.
-
Eine erfindungsgemäße Schaltung weist wenigstens eine Matrixschaltung und eine Steuerschaltung auf, wobei die wenigstens eine Matrixschaltung in mehreren Zeilen und mehreren Spalten matrixförmig angeordnete Speicherzellen aufweist, die jeweils einen ersten und einen zweiten Speicherzustand aufweisen, wobei die Matrixschaltung für jede Zeile eine Zeilenleitung und für jede Spalte eine Spaltenleitung aufweist, wobei jede Speicherzelle mit einer Zeilenleitung und einer Spaltenleitung verbunden ist und dazu eingerichtet ist, einen elektrischen Strom in die mit der Speicherzelle verbundene Spaltenleitung zu leiten, wobei eine Stromstärke des Stroms von einer an der mit der Speicherzelle verbundenen Zeilenleitung anliegenden Spannung und dem Speicherzustand der Speicherzelle abhängig ist, wobei die Stromstärke unter einer bestimmten Stromstärkengrenze liegt, wenn eine Spannung von null angelegt wird und/oder wenn sich die Speicherzelle im ersten Speicherzustand befindet, und wobei die Stromstärke einen definierten Stromstärkenwert aufweist, wenn die angelegte Spannung einen vorbestimmten Spannungswert ungleich null aufweist und sich die Speicherzelle im ersten Speicherzustand befindet. Jede Spaltenleitung ist mit einem Analog-Digital-Wandler verbunden, der eine Präzision aufweist, die kleiner als die Anzahl an Speicherzellen in der entsprechenden Spalte ist. Die Steuerschaltung ist dazu eingerichtet, die Speicherzellen zu programmieren und Spannungen an die Zeilenleitungen anzulegen.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Kurze Beschreibung der Zeichnungen
-
- 1A und 1B zeigen das Funktionsprinzip eines Vektor-Matrix- .
- 2 illustriert eine binäre Skalarmultiplikation zweier Vektoren mittels einer Matrixschaltung.
- 3 zeigt einen beispielhaften Aufbau einer Speicherzelle mit einem Feldeffekttransistor, der verschiedene Speicherzustände aufweist.
- 4 zeigt ein Ablaufdiagram gemäß einer beispielhaften Ausgestaltung der approximativen Bestimmung eines Skalarprodukts.
-
Ausführungsform(en) der Erfindung
-
Die 1A und 1B illustrieren das Funktionsprinzip eines Vektor-Matrix-Multiplizierers, auch als Matrixschaltung oder „dot product engine“ bezeichnet. Der Vektor-Matrix-Multiplizierer umfasst in Zeilen und Spalten matrixförmig angeordnete Speicherzellen in Form von Memristoren 2. Die Anzahl von Zeilen und die Anzahl von Spalten sind jeweils beliebig, wobei exemplarisch eine 4x4-Anordnung dargestellt ist. Die Speicherfunktion der Memristoren ergibt sich daraus, dass der Widerstand der Memristoren durch Anlegen einer Programmierspannung einstellbar ist.
-
Der Vektor-Matrix-Multiplizierer umfasst weiterhin für jede Zeile der matrixförmigen Anordnung eine Zeilenleitung 4 und für jede Spalte eine Spaltenleitung 6. Die Memristoren 2 sind an den Kreuzungspunkten der zueinander senkrecht verlaufenden Zeilen- und Spaltenleitungen angeordnet und verbinden jeweils eine Zeilenleitung mit einer Spaltenleitung, die anderweitig nicht verbunden sind.
-
Werden an die Zeilenleitungen Spannungen angelegt, so fließen Ströme von den Zeilenleitungen 4 durch die Memristoren 2 in die Spaltenleitungen 6. Dies ist für eine Spalte und zwei Zeilen in 1B illustriert. Dort wird an eine der Zeilenleitungen eine Spannung U1 angelegt und an die andere eine Spannung U2. Der Strom I1 durch einen der Memristoren wird durch dessen Leitfähigkeit G1 bestimmt: I1 = G1 · U1; der Strom I2 durch den anderen Memristor, dessen Leitfähigkeit G2 ist, ist entsprechend I2 = G2 · U2. Durch die Spaltenleitung 6 fließt dann die Summe der Ströme, d.h. der Gesamtstrom I = I1 + I2 = G1 · U1 + G2 · U2. Es findet also eine Multiplikation der als Vektor aufgefassten Spannungen U1, U2 an den Zeilenleitungen 4 mit den als Vektor aufgefassten Leitfähigkeiten G1, G2 der Memristoren in einer Spalte statt, wobei der Gesamtstrom proportional zum Ergebnis dieses Vektorprodukts ist. Bezogen auf die gesamte Matrixanordnung findet also im Prinzip eine Multiplikation des Vektors der Spannungen mit den als Matrixelementen aufgefassten Leitfähigkeiten der Memristoren statt.
-
Der Gesamtstrom jeder Spalte kann beispielsweise mittels eines Transimpedanzverstärkers 8 (siehe 1B) in eine Ausgangspannung Ua gewandelt werden. Der hier beispielhaft dargestellte, an sich bekannte Transimpedanzverstärker 8 umfasst einen Operationsverstärker 10, dessen invertierender Eingang mit der Spaltenleitung verbunden ist und dessen nichtinvertierender Eingang auf Masse liegt, und einen Widerstand 12, über den der Operationsverstärker gegengekoppelt ist, so dass die Ausgangsspannung Ua gegeben ist als Ua = - R · I, wobei R der Widerstandswert des Widerstands 12 ist. Der Transimpedanzverstärker 8 erzeugt am invertierenden Eingang des Operationsverstärkers 10 eine sogenannte „virtuelle Masse“, die sich aufgrund der hohen Leerlaufverstärkung des Operationsverstärkers (z.B. 100.000) nur wenig (z.B. nur ca. 50 µV, wenn die Spannungen U1, U2 im Bereich von etwa 5 V liegen) vom Massepotential unterscheidet, so dass schaltungstechnisch am Ende der Spaltenleitung das Massepotential (d.h. die virtuelle Masse) anliegt, wie für die Funktion der Schaltung erforderlich.
-
Die Spannungen an den Zeilenleitungen werden typischerweise aus digitalen Signalen mittels Digital-Analog-Wandlern 14 erzeugt. Ebenso werden typischerweise die Ausgangsspannungen an den Spaltenleitungen, d.h. die von den Transimpedanzverstärkern erzeugten Spannungen Ua, mittels Abtast-Halte-Gliedern 16 (Sample-and-Hold-Schaltungen) und Analog-Digital-Wandlern 18 wieder in ein digitales Signal umgesetzt. Die Abtast-Halte-Glieder 16 können im Analog-Digital-Wandler 18 bzw. in den Analog-Digital-Wandlern 18 integriert sein.
-
Durch die Analog-Digital-Wandler kann ein erheblicher Flächenbedarf auf dem Chip, auf dem der Vektor-Matrix-Multiplizierer realisiert wird, und ein erheblicher Energiebedarf beim Betrieb entstehen. Der mit der Analog-Digital-Umsetzung verbundene Flächen- und Energiebedarf kann jeweils im Bereich von etwa 30 - 60 % des Gesamtflächenbedarfs bzw. des Gesamtenergiebedarfs der Schaltung liegen.
-
2 illustriert eine binäre Skalarmultiplikation zweier Vektoren mittels einer Matrixschaltung 20.
-
Die Matrixschaltung 20 entspricht im Prinzip dem Vektor-Matrix-Multiplizierer der 1A, 1B, wobei die Speicherzellen 22, die jeweils mit einer Zeilenleitung 24 und einer Spaltenleitung 26 verbunden sind, lediglich zwei unterschiedliche Zustände annehmen (bzw. entsprechend betrieben werden), nämlich einen Zustand mit hohem Widerstand (auch als erster Speicherzustand bezeichnet) und einen Zustand mit niedrigem Widerstand (auch als zweiter Speicherzustand bezeichnet). Dabei ist der Widerstandswert des hohen Widerstands zumindest für alle Speicherzellen jeder Spalte gleich, und ebenso ist der Widerstandswert des niedrigen Widerstands zumindest für alle Speicherzellen jeder Spalte gleich. Zweckmäßigerweise ist der Widerstandswert des hohen Widerstands für alle Speicherzellen gleich, und der Widerstandswert des niedrigen Widerstands ist für alle Speicherzellen gleich. Die beiden Widerstandwerte entsprechen im Wesentlichen einem leitenden bzw. einem nicht-leitenden Zustand, wobei das An/Aus-Verhältnis möglichst groß sein sollte. Bei Verwendung von Memristoren wie in 1 kann etwa ein größtmöglicher und ein kleinstmöglicher Widerstandwert verwendet werden. Bei Memristoren ist z.B. ein An/Aus-Verhältnis von mehr als 104 möglich. Bei gegebener, von null verschiedener Spannung entspricht das Verhältnis der Stromstärken dem An/Aus-Verhältnis, z.B. kann im Zustand mit hohem Widerstand die Stromstärke unter einer vorbestimmten Stromstärkengrenze liegen und im Zustand mit niedrigem Widerstand um ein Vielfaches, z.B. mindestens 103, 104 oder 105, über der vorbestimmten Stromstärkengrenze liegen.
-
Statt oder zusätzlich zu Widerständen (z.B. Memristoren) können die Speicherzellen jeweils ein Halbleiterschaltelement (z.B. einen Transistor, etwa einen Metalloxid-Feldeffekttransistor) aufweisen, das eine einstellbare bzw. programmierbare Schwellenspannung aufweist (z.B. FeFET, ferroelektrischer Feldeffekttransistor). In dieser Ausgestaltung ist der Steueranschluss (Gate-Anschluss) der Halbleiterschaltelemente mit der jeweiligen Zeilenleitung 24 verbunden und der Source-Anschluss ist mit der jeweiligen Spaltenleitung 26 verbunden. Die Drain-Anschlüsse sind mit Spannungs- bzw. Stromversorgungleitungen, die mit einer Spannungs- bzw. Stromquelle verbunden sind, verbunden (siehe 3). Liegt die Spannung an der Zeilenleitung unter der eingestellten Schwellenspannung, fließt kein Strom bzw. ein sehr geringer Strom, der unter einer vorbestimmten Stromstärkengrenze liegt. Liegt die Spannung an der Zeilenleitung über der eingestellten Schwellenspannung, fließt ein definierter Strom (dessen Stärke um ein Vielfaches, z.B. mindestens 103, 104 oder 105, über der vorbestimmten Stromstärkengrenze liegt) durch das Halbleiterschaltelement in die entsprechende Spaltenleitung. Eine hohe Schwellenspannung entspricht dem Zustand mit hohem Widerstand bzw. dem ersten Speicherzustand und eine niedrige Schwellenspannung entspricht dem Zustand mit niedrigem Widerstand bzw. dem zweiten Speicherzustand.
-
Die Programmierung der Speicherzellen, d.h. das Einstellen bzw. Programmieren bestimmter Speicherzustände der Speicherzellen, kann in allen Fällen (Memristoren, Halbleiterschaltelemente, ...) durch Anlegen von Programmierspannungen (die typischerweise höher als beim Auslesen verwendete Spannungen sind) erfolgen. Dazu können die gezeigten Zeilen- bzw. Spaltenleitungen und/oder gesonderte (nicht gezeigte) Programmierleitungen verwendet werden.
-
Werden Feldeffekttransistoren (FET) mit verschiedenen Speicherzuständen verwendet, insbesondere FeFETs oder FGMOSs, kann für jede Spalte zusätzlich zu der Spaltenleitung eine Stromzufuhrleitung vorgesehen sein, die mit einer Stromquelle bzw. Spannungsversorgung verbunden ist. In 3 ist ein beispielhafter Aufbau einer entsprechenden Speicherzelle 22 dargestellt: die Zeilenleitung 24 ist mit dem Gate 52 des FET 50 verbunden, der Sourceanschluss 54 des FET 50 ist mit der Spaltenleitung verbunden und der Drainanschluss 56 des FET 50 ist mit der Stromzufuhrleitung 58 der Spalte verbunden. Als Speicher für die Speicherzustände dient eine entsprechende Materialschicht 60 des FET 50; das Bezugszeichen 60 bezieht sich auf die ferroelektrische Schicht bei einem FeFET bzw. das schwebende Gate bei einem FGMOS. Speicherzustände (Polarisation bei einem FeFET, Ladung im schwebenden Gate bei einem FGMOS) sind dann wie folgt bestimmt: im ersten Speicherzustand ist die Drain-Source-Strecke nichtleitend, unabhängig davon, ob eine Spannung von 0 V oder eine Spannung mit dem vorbestimmten Spannungswert (z.B. 5 V) anliegt; im zweiten Speicherzustand ist die Drain-Source-Strecke nichtleitend, wenn eine Spannung von 0 V anliegt, und leitend, wenn der vorbestimmte Spannungswert anliegt, wobei für verschiedene FETs die Stromstärke des Stroms gleich ist.
-
Die zwei Zustände können als ein Bit angesehen werden; z.B. kann der Zustand mit hohem Widerstand als Bit mit Wert 0 interpretiert werden und der Zustand mit niedrigem Widerstand als Bit mit Wert 1 interpretiert werden.
-
Entsprechend ist vorgesehen, an den Zeilenleitungen 24 lediglich Spannungen mit zwei unterschiedlichen definierten Pegeln anzulegen; z.B. 0 V und eine von Null verschiedene Spannung Udef V. Ein Pegel (0 V im Beispiel) kann als Bit mit Wert 0 interpretiert werden und der andere Pegel (Udef V im Beispiel) kann als Bit mit Wert 1 interpretiert werden. Mit diesen Interpretationen erfolgt in den Speicherzellen jeweils eine logische UND-Verknüpfung. Je nach Ergebnis fließt kein Strom I = 0 A (oder praktisch gleich 0 A bzw. unter der vorbestimmten Stromstärkengrenze) oder ein Strom definierter Stärke I = Idef (definierter Stromstärkenwert) aus den Speicherzellen in die Spaltenleitungen. Die Gesamtstromstärke an einer Spaltenleitung ist entsprechend (aufgrund des hohen An/Aus-Verhältnisses) Iges = n·Idef, wobei n die Anzahl an Speicherzellen an der Spaltenleitung ist, die den Strom definierter Stärke in die Spaltenleitung leiten. Die Gesamtstromstärke kann wie für die 1A, 1B beschrieben in eine Spannung gewandelt und mittels eines geeigneten Analog-Digital-Wandlers in eine Binärzahl, die gleich der Anzahl n ist, gewandelt werden (die Wandlung des Stroms in die Spannung erfolgt insbesondere so, dass Stromstärkenstufen n·Idef auf entsprechende, vom Analog-Digital-Wandler unterscheidbare Spannungsstufen abgebildet werden). Für jede Spaltenleitung kann ein Analog-Digital-Wandler 28 vorgesehen sein.
-
Das Skalarprodukt g = Σ
if
i · w
i eines Eingangsvektors f = (f
0, f
1, ..., f
D-1) und eines Gewichtsvektors w = (w
0, w
1, ..., w
D-1) kann binär berechnet werden, d.h. es werden Binärdarstellungen für die Komponenten des Eingangsvektors und die Komponenten des Gewichtsvektors verwendet:
f
pi und w
ir stellen Bits dar und können jeweils die Werte 0 oder 1 annehmen. Hier ist P die Genauigkeit (P+1: Anzahl der Bits) der Komponenten des Eingangsvektors und q ist die Genauigkeit (q+1: Anzahl der Bits) der Komponenten des Gewichtsvektors. Die Indizes p und r entsprechen der Signifikanz bzw. Wertigkeit der jeweiligen Bits. Die Komponenten des Eingangsvektors werden auch als Eingangskomponenten bezeichnet und die Komponenten des Gewichtsvektors werden auch als Gewichtskomponenten bezeichnet.
-
Die Bits fpi der Komponenten f0, f1, f2, ... des Eingangsvektors sind für beispielsweise 3 Bits (P=2) links in der Figur dargestellt, wobei die Notation „p/i“ für fpi verwendet wird. Das höchstwertigste Bit steht also ganz links.
-
Die Bits wir der Komponenten w0, w1, w2,... des Gewichtsvektors sind für beispielsweise 4 Bits (q=3) in den Speicherzellen 22 dargestellt, wobei die Notation „i/r“ für wir verwendet wird. Das höchstwertigste Bit steht also ganz rechts. Die Speicherzellen 22 werden entsprechend der Bitwerte programmiert. Typischerweise wird das Skalarprodukt desselben Gewichtsvektors bzw. allgemeiner derselben Gewichtsmatrix mit mehreren verschiedenen Eingangsvektoren bestimmt, so dass die Speicherzellen nicht für jede Skalarproduktbildung neu programmiert werden müssen.
-
In beiden Fällen entsprechen verschiedene Spalten bzw. Positionen von links nach rechts verschiedenen Signifikanzen (Index p bzw. r) der Bits der Komponenten des Eingangsvektors bzw. des Gewichtsvektors.
-
Um das Skalarprodukt zu berechnen, werden in Iterationen Spannungen, die den Bits der Komponenten des Eingangsvektors entsprechen, an die Zeilenleitungen angelegt, wobei in jeder Iteration Bits jeweils einer anderen Signifikanz (einer Position in der Reihe) verwendet werden. Die nach Analog-Digital-Wandlung durch die Analog-Digital-Wandler 26 erhaltenen Werte werden entsprechend der Signifikanzen, d.h. einerseits der Signifikanz p des an die Zeilenleitungen angelegten Bits der Komponenten des Eingangsvektors (entsprechend der Iteration bzw. der Spalte) und andererseits der Signifikanz r der Bits der Komponenten des Gewichtsvektors (entsprechend der Spaltenleitung), gewichtet bzw. verschoben (mittels einer Bit-Shift-Operation) und aufaddiert. Hierzu ist eine Addier-und-Verschiebe-Schaltung 30 vorgesehen.
-
Je Iteration (p = 0, ..., P) (d.h. für jede Bitposition des Eingangsvektors) wird dabei im gezeigten Beispiel zunächst ein Ergebnis
der Matrixschaltung 20 berechnet gemäß:
-
Der Operator „<<“ (Shift-Operator) stellt eine Verschiebe-Operation um r Bits in Richtung höherer Signifikanz dar, entspricht also einer Multiplikation mit 2
r. k entspricht der Anzahl der Zeilen, und kann kleiner oder gleich D sein. Im Allgemeinen ist die Dimension D (d.h. die Anzahl der Komponenten f
i bzw. w
i) des Eingangs- bzw. Gewichtsvektors größer als die Anzahl k von maximal gleichzeitig aktivierten Zeilen (d.h. von Zeilen, an die gleichzeitig eine Spannung entsprechend jeweiliger Bits angelegt wird). In diesem Fall können Eingangs- und Gewichtsvektor in Teile zerlegt werden, entsprechend werden Teilmengen des Eingangsvektors erhalten. Die Berechnung kann dann in mehreren Zyklen erfolgen, wobei in jedem Zyklus jeweils lediglich eine Teilmenge bzw. ein Teil der Komponenten (maximal k) des Eingangs- bzw. Gewichtsvektors eingeht, insbesondere werden nur Spannungen entsprechend einer einzelnen der Teilmengen von Eingangskomponenten angelegt. Der Index t bezieht sich auf einen Zyklus der Berechnung. Der in Klammern stehende Ausdruck (d.h.
) dieser Formel wird als Ausgangswert einer Spalte r durch die Matrixschaltung 20, d.h. als Ausgabewert eines Analog-Digital-Wandlers, bestimmt und wird auch als Bitsumme bzw. Bitsumme mit Signifikanzen r und p bezeichnet. Die Bitsumme kann als Anzahl von Bits mit Wert 1 in der UND-Verknüpfung der Bits bestimmter Signifikanz p der Komponenten des Eingangsvektors und der Bits der Signifikanz r der Komponenten des Gewichtsvektors, die in der entsprechenden Spalte der Matrixschaltung erfolgt, gesehen werden.
kann als Skalarprodukt-Summand der Signifikanz p bezeichnet werden.
-
Die Gewichtung der Bitsummen in der obigen Summe erfolgt entsprechend der Signifikanz r der Bits der Komponenten des Gewichtsvektors. Die Gewichtung entsprechend der Signifikanz p der Bits der Komponenten des Eingangsvektors erfolgt in der weiter unten stehenden Summe, in der das Skalarprodukt g berechnet wird. Die Gewichtungen und Summenbildungen können mittels Schaltungen, die Bit-Shift-Operationen bzw. Additions-Operationen implementieren, durchgeführt werden. Insgesamt werden die Bitsummen entsprechend einer jeweiligen (Gesamt-)Signifikanz, die gleich der Summe Signifikanz r der Bits der Komponenten des Gewichtsvektors und der Signifikanz p der Bits der Komponenten des Eingangsvektors ist (mit denen die jeweilige Bitsumme bestimmt wurde), gewichtet.
-
Das Skalarprodukt g ergibt sich als Summe über die Zyklen und über die entsprechend ihrer Signifikanz p gewichteten Summanden
-
Für präzise Berechnungen sollte die Anzahl k von gleichzeitig aktivierbaren Zeilen kleiner oder gleich der Präzision bzw. Genauigkeit der Analog-Digital-Wandler sein, d.h. kleiner oder gleich dem maximalen Wert m, den die Analog-Digital-Wandler 28 erkennen können (d.h. ein Analog-Digital-Wandler mit Präzision m kann die Werte 0,1, ... m erkennen). Im Fall von 3-Bit-Analog-Digital-Wandlern sollte die Anzahl k z.B. maximal 7 sein; im Fall von 4-Bit-Analog-Digital-Wandlern sollte die Anzahl k z.B. maximal 15 sein.
-
Algorithmen im Bereich maschinellen Lernens, z.B. neuronale Netze, etwa faltende neuronale Netze (engl.: Convolutional Neural Network, CNN) oder tiefe neuronale Netze (engl.: Deep Neural Network, DNN), die Multiplikationen von Eingabevektoren mit Gewichtsmatrizen durchführen, d.h. Skalarprodukte berechnen, können eine gewisse Fehlertoleranz gegenüber Ungenauigkeiten einzelner Zahlenwerte aufweisen.
-
Es ist daher vorgesehen, eine Approximation dergestalt durchzuführen, dass die Anzahl k von gleichzeitig aktivierten bzw. aktivierbaren Zeilen größer als die Anzahl von Zuständen gewählt wird, die die Analog-Digital-Wandler 28 unterscheiden können, und dass die Bitsummen auf die Präzision bzw. Genauigkeit m (höchster Wert) der Analog-Digital-Wandler eingeschränkt werden. Die Präzision bezeichnet den höchsten Wert, den die Analog-Digital-Wandler erkennen bzw. ausgeben können (ein Analog-Digital-Wandler mit b Bits kann z.B. ganzzahlige Werte von 0 bis m = 2
b - 1 bzw. entsprechende Spannungsstufen unterscheiden und eine entsprechende Binärzahl ausgeben). Eine entsprechende Approximation ĝ für das Skalarprodukt ist durch folgende Formeln gegeben:
-
Es gilt
wobei ε für einen Approximationsfehler steht.
-
Es werden also eingeschränkte Bitsummen (mit Signifikanz p, r) bestimmt, nämlich als min
„min“ steht für die Minimumbildung.
-
Durch dieses Vorgehen können Berechnungen beschleunigt werden (da Eingangs- und Gewichtsvektor in weniger Teile zerlegt werden müssen) und/oder ein geringerer Flächen- bzw. Energieverbrauch erreicht werden (da Analog-Digital-Wandler mit geringerer Präzision bzw. weniger Bit verwendet werden können).
-
Die maximale Aktivierungsanzahl, d.h. die Anzahl k maximal möglicher paralleler Aktivierungen kann jeden ganzzahligen positiven Wert kleiner oder gleich der Dimension D der Vektoren annehmen: k ≤ D. Beispielsweise könnte für einen 3-Bit-Analog-Digital-Wandler eine Menge möglicher Werte für k sein: {7, 14, 211, wobei k1 = 7 einer exakten Berechnung (keine Approximation bzw. minimales Approximationsniveau) entspricht und k3 = 21 einem maximalen Approximationsniveau, mit einer möglichen Beschleunigung um den Faktor 3, entspricht. Entsprechend kann der Durchsatz ohne Änderung der Hardware erhöht werden.
-
In einer Ausgestaltung ist die wenigstens eine vorbestimmte maximale Aktivierungsanzahl größer als die Präzision des jeweiligen Analog-Digital-Wandlers.
-
Dadurch können Analog-Digital-Wandler mit relativ geringer Präzision bzw. mit relativ wenig Bits verwendet werden, so dass deren Flächen- bzw. Energieverbrauch geringer ist.
-
Die maximale Aktivierungsanzahl ist kleiner oder gleich der Anzahl von Zeilen einer einzelnen Matrixschaltung. Bei einer Berechnung in mehreren Zyklen, entsprechend mehreren Teilmengen, können diesen jeweilige Bereiche der Zeilen einer Matrixschaltung entsprechen. Auch können die Teilmengen auf verschiedene Matrixschaltungen aufgeteilt werden.
-
Die Menge möglicher Werte für k kann im Prinzip beliebig gewählt werden. Ebenso kann für verschiedene Teile der Vektoren und/oder für verschiedene Vektoren ein verschiedenes Approximationsniveau gewählt werden, entsprechend der Wahl der Anzahl k maximal möglicher paralleler Aktivierungen. Diese Wahl kann insbesondere auf einer Fehlertoleranzanalyse des Algorithmus, für den die Skalarprodukte berechnet werden sollen, basieren. D.h. für Skalarprodukte des Algorithmus (d.h. bei Durchführung des Algorithmus auftretende Skalarprodukte), wird zunächst ein jeweiliges Fehlertoleranzniveau bestimmt (z.B. als Zahlenwert in einem bestimmten Wertebereich) und anschließend jedem Skalarprodukt ein Approximationsniveau, d.h. ein Wert für die Anzahl k maximal möglicher paralleler Aktivierungen aus der Menge möglicher Werte für k entsprechend dem Fehlertoleranzniveau des jeweiligen Skalarprodukts, zugeordnet und für Berechnungen verwendet. Weitergehend kann für Skalarprodukte von Teilen von Vektoren für jeden Teil ein jeweiliges Fehlertoleranzniveau bestimmt werden und bei der Berechnung des Skalarprodukts der Teile ein dem jeweiligen Fehlertoleranzniveau zugeordnetes Approximationsniveau verwendet werden.
-
Die in 2 gezeigte Schaltung kann mehrere Matrixschaltungen 22 aufweisen. Auch kann eine Steuerschaltung, die z.B. eine Steuereinheit 32, eine Aktivierungseinheit 34 und einen Systempuffer 36 aufweist, vorgesehen sein.
-
4 zeigt ein Ablaufdiagram gemäß einer beispielhaften Ausgestaltung der approximativen Bestimmung eines Skalarprodukts eines Eingangsvektors mit einem Gewichtsvektor, wobei Eingangskomponenten des Eingangsvektors und Gewichtskomponenten des Gewichtsvektors jeweils in binärer Form (als Bits) vorliegen.
-
In Schritt 110 werden die Speicherzellen entsprechend Bits der Gewichtskomponenten programmiert, wobei die Bits mit derselben Signifikanz zumindest eines Teils der Gewichtskomponenten jeweils in Speicherzellen derselben Spalte programmiert werden.
-
In Schritt 120 wird für jede von einer oder mehreren Teilmengen der Eingangskomponenten eine Bitsummenbestimmung durchgeführt. Dabei werden in Teilschritt 122 an einer entsprechenden Teilmenge der Zeilenleitungen Spannungen entsprechend Bits der Eingangskomponenten der jeweiligen Teilmenge der Eingangskomponenten angelegt, die dieselbe Signifikanz aufweisen. Teilschritt 122 wird für alle Bits der Eingangskomponenten durchgeführt. Es werden also mehrere Durchgänge entsprechend der Anzahl der Bits einer Eingangskomponente durchgeführt, wobei in jedem Durchgang die Bits einer bestimmten Signifikanz verwendet werden (in verschiedenen Durchgängen jeweils eine andere Signifikanz) und entsprechende Spannungen angelegt werden. In Teilschritt 124 werden (für jeden der Durchgänge) eingeschränkte Bitsummen als Ausgabewert der jeweiligen Analog-Digital-Wandlers bestimmt, die Signifikanzen entsprechend der jeweiligen Spalte (d.h. der Bits der Gewichtskomponenten) und der Signifikanz der Bits, denen die angelegten Spannungen entsprechen, aufweisen. Es wird also der Ausgabewert des jeweiligen Analog-Digital-Wandlers ausgelesen und als eingeschränkte Bitsumme verwendet (mit entsprechenden Signifikanzen).
-
In Schritt 130 wird eine Summe der entsprechend ihrer Signifikanz gewichteten eingeschränkten Bitsummen bestimmt. Somit wird eine Approximation 135 für das Skalarprodukt erhalten.
-
Informationen zur Förderung und Unterstützung
-
Das Projekt, das zu dieser Anmeldung geführt hat, wurde im Rahmen der Fördervereinbarung Nr. 826655 vom Gemeinsamen Unternehmen ECSEL (JU) gefördert. Das JU erhält Unterstützung durch das Forschungs- und Innovationsprogramm Horizon 2020 der Europäischen Union und Belgien, Frankreich, Deutschland, Niederlande, Schweiz.
-
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
-
- DE 102020211818 A1 [0004]