NMOS + MTJ · Analoges On-Chip-Lernen

Wie das MTJ-Neuron lernt

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.

Louis, Abramson, Bradley, Trevillian, Nelson, Slavin, Litvinenko, Gorski, Krivorotov, Hanna, Tyberkevych
„A CMOS+X Spiking Neuron with On-Chip Machine Learning“ · arXiv:2512.03966v3 · IEEE TCAS-I, DOI 10.1109/tcsi.2026.3723360

01 Die Grundidee in einem Satz

Das Neuron feuert einen Spike pro Muster — gelernt wird nicht ob, sondern wann es feuert.

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:

logisch 0 Bias 2,0 ns logisch 1 Bias 2,5 ns 500 ps
Der gesamte Wertebereich sind 500 Pikosekunden. Ein Spike 2,0 ns nach dem Bias-Spike heißt 0, einer nach 2,5 ns heißt 1. Der Abstand wurde aus dem mittleren Bereich der Latenzkurve gewählt — nahe der Schwelle wäre er zu empfindlich, bei hoher Verstärkung sättigt die Latenz bei ~0,5 ns.

02 Warum das MTJ überhaupt spiked

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:

dm/dt  =  |γ|·B_eff × m  +  α·m × dm/dt  +  σ_j·I·m × (m × p₁)
mit  B_eff = B_ext·x̂ − B_d·m_z·ẑ

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.

φ (Grad) 360 75 eine volle Umdrehung Puls 0,75 mA R (kΩ) p₂ = −ŷ 2,1 0,9 ein Peak p₂ = +x̂ 2,1 0,9 Einbruch + Peak t → 20 ns
Eigene Integration der LLGS-Gleichung mit den Parametern des Papers — Macrospin, keine Mikromagnetik nötig. Ruhewinkel 74,7° (Paper: 73°), Endwinkel 434,7° (Paper: 433°), Widerstandshub 1,02 → 2,00 kΩ.

Ein Spike — aber wie viele Ausschläge?

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.

Die Zahl der Ausschläge ist eine Eigenschaft des Auslesens, nicht des Neurons. Der Phasenverlauf φ(t) ist in beiden Fällen exakt derselbe.

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.

03 Drei Bauteile, drei völlig verschiedene Jobs

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 Neuron
NMOS + MTJ
Praktisch eine 1T‑1MTJ‑MRAM‑Zelle. Die freie Schicht präzediert und kehrt in die Ruhelage zurück — Schwelle, Latenz und Refraktion kommen direkt aus der Magnetisierungsdynamik.
dynamisch · kein Schaltvorgang
Die Synapse
Verstärker
Ein einstellbarer Spannungsverstärker. Das „Gewicht“ ist seine Verstärkung, gemessen in V/V — im Netz zwischen −0,33 und 6,19.
einstellbar
Der Speicher
Kondensator
Sample‑and‑Hold: eine Ladung, die die Verstärkung einstellt und zwischen zwei Updates gehalten wird. Neun Stück im XOR‑Netz.
flüchtig · analog

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.

04 Nachgerechnet

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:

dm/dt  =  (a  +  α·m×a) / (1 + α²)

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.

Vier Prüfungen statt einer Behauptung

PrüfungErgebnis
Drei Formulierungen: kartesisch, Kugelwinkel, Pendelφ₀ = 74,7164°, φ_max = 434,7158° — identisch
Normerhaltung |m| über 22 nsAbweichung 2,2·10⁻¹²
Schrittweite 10 ps → 1 pskeine Änderung in 4 Nachkommastellen
Gegenprobe mit implizitem Radau-Verfahrenidentisch

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.

Den Analysator selbst durchdrehen

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.

270°
Links die simulierte Bahn von m (violett) mit der Ruhelage (schwarz) und dem Analysator (orange). Rechts der daraus folgende Widerstand. Bei 255° — Analysator antiparallel zur Ruhelage — sitzt der Ruhepunkt exakt im Minimum und der Einbruch verschwindet ganz.

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.

05 Das Netz und sein Lehrer

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.

KODIERUNG EINGANGSSCHICHT AUSGANG A B bias i₁ i₂ o₁ g Sollzeit (Lehrer) w w(o₁,i₁) w(o₁,i₂) d₀ = t(o₁) − t(g) Fehler = Zeitdifferenz
Der Fehler ist eine Zeitdifferenz, keine Zahl. Das Referenzneuron g feuert zum gewünschten Zeitpunkt. d₀ ist der Abstand zwischen dem tatsächlichen und dem gewünschten Spike von o₁ — das einzige Signal, das den gesamten Lernvorgang treibt. Der Lehrer muss von außen kommen; alles andere rechnet die Schaltung selbst.

06 Der Kondensator-Trick: Zeit wird Spannung

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.

g (soll) o₁ (ist) Gate offen · d₀ U t gehalten U = (I/C)·d₀ Spannung ∝ Zeit
Konstanter Strom, lineare Rampe. U = (I/C)·Δt — die Endspannung ist der Zeitdifferenz proportional. Ab hier ist der Fehler eine ganz gewöhnliche Analogspannung, mit der sich multiplizieren lässt. Dieser Kondensator ist reines Rechenwerkzeug und wird nach jedem Muster entladen; er hat nichts mit den neun Gewichtskondensatoren zu tun.

07 Der Lernzyklus — 10 Nanosekunden

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.

  1. Muster anlegen Eine Zeile der XOR-Wahrheitstabelle wird als Spike-Muster kodiert: bei A=1 feuert Neuron A, sonst nicht.
  2. Vorwärts durchs Netz Die Spikes laufen über die Verstärker zu i₁, i₂ und weiter zu o₁, das zu irgendeinem Zeitpunkt feuert. Rund 5 ns.
  3. Zeiten messen Drei Rampen laufen: d₀ als Fehler, dazu t(o₁)−t(i₁) und t(o₁)−t(i₂) nur für die Kausalitätsprüfung.
  4. Neun Updates parallel rechnen Jede Synapse hat ihre eigene kleine Rechenkette. Multipliziert wird analog — vorgeschlagen ist ein MOSFET im Trioden-Bereich als Ein-Quadranten-Multiplizierer.
  5. Gewichte schreiben Sample-and-Hold: neue Spannung auf jeden Gewichtskondensator, bevor das nächste Muster anliegt. Der Verstärker hält seine Verstärkung bis zum nächsten Mal.

Vier Muster ergeben eine Epoche: 40 ns, vier Schreibvorgänge. Nach 16 Epochen fällt der Verlust steil ab.

40 nseine Epoche (4 Muster)
16Epochen bis Konvergenz
0,102 nsgrößter Restfehler
≈ 1 µsgesamte Trainingszeit

08 „Welcher Kondensator wird geladen?“

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ΔwWas 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.

09 Zwei ehrliche Einschränkungen

Ein Vorzeichen, das nicht aufgeht

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.

Was noch nicht gebaut ist

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.“

10 Der offensichtliche nächste Schritt

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.