Ein spintronisches Neuron rechnet mit Spike-Zeiten statt mit Zahlen. Was dabei gelernt wird, wo es liegt und warum kein einziges MTJ dafür geschaltet wird.
Das ist der ganze Trick. Weil jedes Neuron höchstens einmal feuert, ist seine Feuerzeit tk eine glatte, differenzierbare Funktion der Gewichte. Damit lässt sich klassischer Gradientenabstieg anwenden — ohne Surrogate-Gradienten und ohne Backpropagation-through-time, die man bei spikenden Netzen sonst braucht.
Die Information steckt in Verzögerungen von wenigen Nanosekunden. Der Zeitcode ist denkbar einfach:
Der Spike ist kein Schaltvorgang und kein Schwellwertvergleich einer Schaltung — er ist eine volle 360°-Umdrehung der Magnetisierung. Drei Drehmomente konkurrieren in der freien Schicht:
Das Entmagnetisierungsfeld (B_d = 1 T) presst m flach in die Ebene — meine Rechnung zeigt maximal 3,2° Auslenkung heraus. Das äußere Feld (B_ext = 3 mT, entlang x) zieht sie zurück zur Ruhelage. Und der Spin-Transfer-Torque vom senkrechten Polarisator p₁ = ẑ treibt sie in der Ebene herum.
Was die Kurven auf dieser Seite erzeugt, ist die volle Landau-Lifshitz-Gilbert-Slonczewski-Gleichung für die Magnetisierung der freien Schicht — Präzession, Dämpfung und Spin-Transfer-Torque:
Der erste Term dreht m um das effektive Feld, der zweite zieht Energie heraus, der dritte pumpt sie über den Strom wieder hinein. Der Spike entsteht aus dem Wettstreit dieser drei — nicht aus einer Schwellwertabfrage.
Für diese spezielle Geometrie lässt sich daraus die Gleichung eines getriebenen gedämpften Pendels herleiten (Gl. 4 des Papers), (1/ω_M)·φ̈ + α·φ̇ + ω_B·sin φ = σ_j·I. Sie ist als Erklärung unschlagbar: unterhalb der Schwelle balanciert der Strom das Rückstellmoment aus und das Pendel bleibt bei sin φ₀ = I/I_th stehen — bei 0,6 mA sind das 74,7°. Überschreitet ein Puls die Schwelle I_th = ω_B/σ_j = 0,622 mA, gibt es keine Ruhelage mehr: das Pendel überschlägt sich, φ läuft einmal ganz herum, und die Dämpfung fängt es auf der anderen Seite wieder ein.
Gerechnet wird hier aber nicht mit dieser Reduktion. Alle gezeigten Kurven kommen aus der vollen Gleichung oben; das Pendel dient nur dazu, das Ergebnis verstehen zu können. Wie gut die Reduktion trägt, ist in Abschnitt 04 nachgemessen — sie stimmt hier auf 0,01° mit der vollen Rechnung überein.
Daraus folgen die biologischen Eigenschaften von selbst. Alles-oder-nichts: eine Umdrehung ist eine Umdrehung, unabhängig davon, wie stark der Puls war. Latenz: knapp über der Schwelle kriecht das Pendel langsam über den Scheitel — daher die Verzögerung von mehreren Nanosekunden. Refraktion: während es rotiert, ist es für neue Eingänge taub.
Der Ausgang ist R = R₀ + ΔR·(m·p₂), also die Projektion der rotierenden Magnetisierung auf den Analysator. Wie das Signal aussieht, hängt deshalb davon ab, wo der Analysator steht — obwohl die Dynamik in beiden Fällen identisch ist:
Bei p₂ = −ŷ liegt die Ruhelage schon fast im Minimum der Projektion. Die Umdrehung führt genau einmal durch das Maximum: ein sauberer Peak, 1 → 2 kΩ. Bei p₂ = +x̂ sitzt die Ruhelage mitten im Bereich, und die Umdrehung durchläuft cos φ = −1 und +1: erst ein Einbruch, dann ein Peak.
Für das Lernen zählt ohnehin nur der Zeitpunkt der Flanke — deshalb wird im Netz durchgehend p₂ = −ŷ verwendet, die Variante mit dem eindeutigen einzelnen Peak.
Die häufigste Fehlannahme: „das MTJ speichert das Gelernte“. Tut es nicht. Im Chip gibt es drei Rollen, und nur eine davon ist magnetisch.
Das Gelernte liegt also auf Kondensatoren, nicht in Magnetisierungszuständen. Das MTJ liefert die Dynamik, die Erinnerung liefert ein konventioneller Analogregister. Nach dem Abschalten ist das Training weg — genau das, was ein MRAM nicht wäre.
Die Kurven auf dieser Seite sind nicht aus dem Paper abgezeichnet, sondern selbst integriert — die LLGS-Gleichung als gewöhnliche Differentialgleichung für einen einzigen Magnetisierungsvektor. Ein mikromagnetischer Code bringt hier nichts: es gibt kein Gitter, keinen Austausch und keinen Demag-Tensor, das Entmagnetisierungsfeld ist mit B_d = 1 T fest vorgegeben.
Der Kern ist das Auflösen des impliziten Gilbert-Terms. Mit a für alles außer der Dämpfung wird aus der impliziten Gleichung eine explizite:
Damit die schnelle Präzession nicht unterabgetastet wird — ω_M = 1,76·10¹¹ rad/s entspricht einer Periode von 36 ps — läuft der Integrator mit einer Schrittweitenbegrenzung von 2 ps.
| Prüfung | Ergebnis |
|---|---|
| Drei Formulierungen: kartesisch, Kugelwinkel, Pendel | φ₀ = 74,7164°, φ_max = 434,7158° — identisch |
| Normerhaltung |m| über 22 ns | Abweichung 2,2·10⁻¹² |
| Schrittweite 10 ps → 1 ps | keine Änderung in 4 Nachkommastellen |
| Gegenprobe mit implizitem Radau-Verfahren | identisch |
Die aussagekräftigste Prüfung ist die Schwelle. Ohne Puls, nur den Bias-Strom hochgefahren, liegt die Bifurkation zwischen 0,622 und 0,625 mA — genau auf dem analytischen Wert. Und bei I_th kommt das Pendel bei 89,6° zum Stehen, also auf der Schwellenphase von 90°, die das Paper angibt. Reproduziert wird damit nicht nur eine Zahl, sondern die Struktur des dynamischen Systems.
Nicht enthalten, wie im Paper auch nicht: thermisches Rauschen. Der Spin-Torque-Koeffizient ist aus σ_j = ω_B/I_th zurückgerechnet statt aus Materialgrößen — das macht die Schwellenprüfung teilweise zirkulär, die Schwellenphase von 90° fällt aber frei heraus.
Die Dynamik ist in jedem Fall dieselbe: φ läuft einmal ganz herum. Was sich ändert, ist nur die Richtung, auf die projiziert wird. Zieh den Regler und sieh zu, wie ein Peak zu zweien zerfällt und wieder zusammenläuft.
Bei φ_p₂ ≈ 255° steht der Analysator antiparallel zur Ruhelage. Dann liegt der Ruhepunkt exakt im Minimum des Kosinus, der Einbruch hat keinen Platz mehr, und der ganze Hub geht in einen einzigen Peak nach oben. Genau deshalb wählt das Paper p₂ = −ŷ (270°) — 15° daneben, dafür eine saubere Achse.
Dreht man weiter bis 90°, kippt das Signal komplett: der Peak schrumpft auf 18 Ω und übrig bleibt ein Spike nach unten.
Der vollständige Code — Modell, Kreuzchecks und Abbildung — liegt unter /llgs-simulation.py. Er braucht nur numpy und scipy und läuft in wenigen Sekunden.
Das Testproblem ist XOR — die kleinste Aufgabe, die eine einzelne Schicht nachweislich nicht lösen kann. Zwei Eingangsneuronen, ein Ausgangsneuron, dazu Kodier- und Bias-Neuronen, die die Spike-Muster erzeugen.
Analoge Schaltungen können nicht mit Zeiten rechnen, nur mit Spannungen. Also wird die Zeitdifferenz zuerst übersetzt: eine getaktete Stromquelle lädt einen Kondensator genau so lange, wie das Fenster zwischen zwei Spikes dauert.
Pro XOR-Zeile steht ein 10-ns-Fenster zur Verfügung. Die Neuronen brauchen unter 5 ns zum Antworten; der Rest gehört der Lernschaltung.
Vier Muster ergeben eine Epoche: 40 ns, vier Schreibvorgänge. Nach 16 Epochen fällt der Verlust steil ab.
Diese Frage stellt man sich zuerst — aber die Schaltung entscheidet das gar nicht. Alle neun Gewichte werden in jedem Schritt angefasst. Der Fehler d₀ ist für alle derselbe; verschieden sind nur die Faktoren, mit denen er multipliziert wird. Wo ein Faktor null ist, ist das Update null — der Kondensator behält seinen Wert, ohne dass jemand ihn ausgewählt hätte.
| Synapse | Δw | Was das Update abschaltet |
|---|---|---|
| w(bias,o₁) | −η·d₀ | nichts — wird immer angepasst |
| w(o₁,i₁) | −η·d₀·u(to₁−ti₁) | wenn i₁ nach o₁ feuerte |
| w(i₁,A) | −η·d₀·w(o₁,i₁)·a(t)·u(to₁−ti₁) | wenn A = 0 oder die Kausalität verletzt ist |
| w(i₂,B) | −η·d₀·w(o₁,i₂)·b(t)·u(to₁−ti₂) | wenn B = 0 oder die Kausalität verletzt ist |
Die Stufenfunktion u(·) ist die Kausalitätssperre: nur ein präsynaptischer Spike, der vor dem postsynaptischen kam, darf das Gewicht verändern. Das ist die spike-timing-abhängige Komponente — und zugleich der einzige „Selektor“ im System.
In der versteckten Schicht sieht man die Backprop-Struktur unmittelbar: der Fehler wird mit dem nachgeschalteten Gewicht w(o₁,i₁) multipliziert und mit dem Eingang gewichtet. Genau das, was Backpropagation tut — nur eben als Kette von Analogspannungen statt als Matrixmultiplikation.
Die Latenzkurve des Papers zeigt klar: größeres Gewicht → kürzere Latenz, also ∂t/∂w < 0. Die Näherung im Text setzt aber ∂t/∂w = u(·), also +1. Damit liefe der Abstieg in die falsche Richtung: Neuron feuert zu spät → Gewicht runter → noch später.
Damit das Training konvergiert — und es konvergiert ja —, muss die Stufenfunktion effektiv das negative Vorzeichen mittragen. Der inhaltliche Gehalt der Gleichung ist die Kausalitätsmaske, nicht der Betrag der Ableitung; die echte Steilheit steckt in der Lernrate. Als gedruckte Gleichung bleibt es inkonsistent mit der eigenen Abbildung.
Multiplizierer, Subtrahierer und Register sind in LTspice Behavioral Sources — idealisierte Funktionsblöcke, keine Transistorschaltungen. Deshalb wurde auch keine System-Energiebilanz gerechnet. Timing-Jitter, Bauteilstreuung und Rauschen sind nicht quantitativ bewertet; ob die 500-ps-Kodierung das übersteht, ist offen.
Die Autoren formulieren das selbst als Anspruch: „demonstrating functional feasibility rather than delivering a fabrication-ready design.“
Das MTJ liefert hier die Dynamik, ein Kondensator liefert die Erinnerung. Die naheliegende Kombination — MTJ als Neuron und MTJ-Array als nichtflüchtiger Gewichtsspeicher — steht im Paper nur als Verweis auf fremde Vorarbeit: ein 8-Mb-STT-MRAM-Makro, das quantisierte Gewichte als Widerstandszustände hält und die Multiply-Accumulate-Operation direkt im Array ausführt.
Erst dann wäre „On-Chip-Lernen“ auch ein Behalten. Bis dahin ist es ein Netz, das in einer Mikrosekunde lernt und beim Abschalten vergisst.