3 Bits transportieren und speichern

3.1 Die Torsteuerung
3.2 Bus-Systeme
3.3 Das Flipflop
3.4 D-Flipflop und Register
3.5 Dauerhafte Speicherung von Bits

Zum vorigen Kapitel Zum Inhaltsverzeichnis Zum nächsten Kapitel


3.1 Die Torsteuerung


Wenn wir begreifen wollen, "wie ein Rechner funktioniert", dann sollten wir uns erst einmal um die im vorigen Kapitel formulierten drei Grundaufgaben kümmern. Beginnen wir mit der vermutlich einfachsten, nämlich der Weiterleitung von Bits: wenn am Ausgang eines Gatters G1 ein Signal anliegt, das zu einem Eingang eines anderen Gatters G2 geleitet werden soll, dann verbindet man den Ausgang von G1 über ein Kupferkabel mit diesem Eingang von G2. So einfach ist das!

Was aber, wenn wir den Informationsfluss nicht immer gleich zulassen wollen, sondern die Leitung mit einem logischen Signal sperren bzw. freischalten wollen? Dann bedient man sich einfach der folgenden "Torsteuerung":

Bei E kommen die Daten an, und bei A sollen Sie weiterfließen, aber nur, wenn bei C eine "1" anliegt. Ist C = "0", dann soll A immer auf "0" bleiben. Da die Schaltung nur aus einem schlichten AND-Gatter besteht, kann man ihre Funktionsweise direkt aus der Wahrheitswert-Tabelle der AND-Schaltung ablesen:

E C A
 0  0  0
 0  1  0
 1  0  0
 1  1  1

Im Hinblick auf die Aufgabe, den Informationsfluss von E nach A zu kontrollieren, können Sie die Tabelle so interpretieren:

Die bei A abgehende Leitung kann dann mehrere Eingänge mit ihrem Bit-Signal versorgen. Hingegen darf die bei E ankommende Leitung nur mit einem Gatterausgang verbunden sein.



3.2 Bus-Systeme


Es gibt in jedem Rechner auch "Datenautobahnen", über die verschiedene Funktionseinheiten ("Geräte") untereinander Daten austauschen. Solch einen Kommunikations-Kanal nennt man einen "Bus".

Meistens besteht solch ein "Bus" aus einer Serie von parallelen Datenleitungen, an die mehrere verschiedene Funktionseinheiten ("Geräte") des Computers angeschlossen werden. Je mehr Leitungen dazu parallel geschaltet werden, umso mehr Bits können gleichzeitig über diesen Bus übertragen werden. Der klassische ISA-Bus der ersten IBM-PC-Generation (XT) hatte eine Breite von (insgesamt) 62 Leitungen, von denen 8 für Daten, 20 für Adressen und die restlichen für Steuerleitungen und Stromversorgung genutzt wurden. Wenn wir uns auf die für den Nutzdaten-Transport reservierten 8 Leitungen beschränken, handelt es sich also um einen "8-Bit-Bus". Natürlich wurde die Busbreite dann immer weiter vergrößert: auf den 8 Bit breiten "XT-Bus" folgte der 16 Bit breite "AT-Bus", welcher wiederum vom 32-Bit breiten "EISA-Bus" verdrängt wurde, der dann wiederum dem zwar auch nur 32 Bit breiten, dafür aber viel schnelleren "PCI-Bus" weichen musste usw.

Die verschiedenen Geräte des Computers greifen nun lesend und/oder schreibend auf die einzelnen Busleitungen zu. Betrachten wir exemplarisch nur eine dieser Busleitungen, und stellen wir uns vor, dass zwei Geräte an sie angeschlossen seien. Wenn die beiden Geräte zunächst nur Daten vom Bus lesen wollen, dann können sie das ohne Probleme beide gleichzeitig tun: jede Busleitung kann ja an (fast) beliebig viele Lese-Eingänge der Geräte angeschlossen werden!

Problematisch wird es, wenn Geräte Daten auf den Bus schreiben wollen: dann muss nämlich sicher gestellt werden, dass zu jeder Zeit nur (höchstens) ein Gerät schreibend auf den Bus zugreift. Einige der Steuerleitungen der oben beschriebenen historischen Bus-Systeme dienten genau diesem Zweck.

Aber das Problem ist noch ein bisschen heimtückischer: Um überhaupt irgendwann auf eine Bus-Leitung schreiben zu können, muss ein Gerät einen Ausgang mit dieser Leitung verbinden. Stellen wir uns für einen Augenblick vor, wir würden das ganz vorsichtig über die zuvor besprochene Tor-Steuerung machen. Dann könnte die Situation etwa so aussehen:


Im ersten Gerät liege also das Signal E1 an, das am Ausgang A1 erscheint, wenn das erste Gerät das Schreibrecht hat und C1 = 1 gesetzt ist; im zweiten Gerät liege E2 an, das am Ausgang A2 erscheint, wenn das zweite Gerät das Schreibrecht hat und C2 = 1 gesetzt ist. Solange aber C1 = C2 = 0 ist und kein Gerät schreiben will, ist auch A1 = A2 = 0, und die Welt ist in Ordnung. Wenn nun das erste Gerät das Schreibrecht anfordert und erhält, dann setzt es C1 = 1, womit dann A1 = E1 auf die Busleitung geschrieben wird. Aber halt! Die Busleitung ist ja ebenfalls noch mit dem Ausgang A2 des zweiten Gerätes verbunden, und dort ist ständig A2 = 0! Wenn das erste Gerät die erste logische 1 auf die Busleitung schreiben will, gibt es eine Katastrophe, weil die Busleitung von zwei Ausgängen mit widersprüchlichen Signalen gefüttert wird: es wird A1 = 1 (Potenzial 5V) und gleichzeitig A2 = 0 (Potenzial 0V) gefordert. Das führt zu einem Kurzschluss!

Dies zeigt, dass wir für einen auf den Bus schreibenden Ausgang nicht genügt, eine simple Tor-Steuerung einzusetzen. Die Ausgänge A1 und A2 können nicht einfach normale Ausgänge logischer Gatter sein, welche im deaktivierten Zustand auf einem bestimmten festen Potenzial liegen. Sie müssen stattdessen im inaktiven Zustand erlauben, dass die angeschlossene Busleitung sowohl eine 0 als auch eine 1 transportieren kann. Das ist etwa so, wie wenn A von der Busleitung getrennt wäre. Eine physische Trennung (etwa durch einen mechanischen Schalter oder ein Relais) würde aber den schnellen Zugriff auf den Bus erschweren und verbietet sich damit.

Glücklicherweise bietet die CMOS-Technologie eine elegante Lösung für dieses Problem. Schauen wir uns dazu nochmals einen typischen Gatterausgang in CMOS-Technologie an:


Wenn A = 1 ist, dann ist der Drain-Source-Widerstand des unteren Transistors sehr groß, während der des oberen Transistors sehr klein ist. Wenn A = 0 ist, ist es umgekehrt. Der Ausgang ist also stets niederohmig entweder mit der 5-Volt-Leitung oder der 0-Volt-Leitung verbunden, und genau das ist das Übel: im deaktivierten Zustand sollten besser beide Transistoren hochohmig sein dann könnte das Potenzial der Busleitung einen beliebigen Wert annehmen, obwohl diese noch physisch mit dem (deaktivierten) Ausgang A verbunden ist! Dies ist die gute Idee, die das Problem lösen wird. Wir können dazu aber natürlich nicht mehr beide Transistoren mit demselben Gate-Signal anzusteuern, sondern müssen für jeden Transistor ein eigenes Steuersignal bereitstellen. Das folgende Bild zeigt eine mögliche Schaltung, die das gewünschte leistet:


Am Eingang D liegt das Bit an, das am Ausgang A auf den Bus geschrieben werden soll. Der Eingang C entscheidet, ob die Ausgangsstufe aktiv ist oder nicht: für C = 0 werden beide Ausgangstransistoren in einen hochohmigen Zustand geschaltet und der Ausgang damit deaktiviert, für C = 1 wird er aktiviert und es ist dann A = D. Eine solche Schaltung nennt man einen Tri-State-Buffer. Die folgende Wahrheitswert-Tabelle hilft beim Überprüfen der Funktion dieser Schaltung:

D C G2 G1 A
0 0 1(s) 0(s) Hi-Z
1 0 1(s) 0(s) Hi-Z
0 1 1(s) 1(l) 0
1 1 0(l) 0(s) 1

In der letzten Spalte bezeichnet "Hi-Z" denjenigen Zustand des Ausgangs A, in dem die beiden Ausgangstransistoren hochohmig sind. Es ist dies der ominöse "dritte Zustand" (neben "0" und "1"), auf den der Name dieser Schaltung hinweist. Er muss immer dann angenommen werden, wenn das Gerät keinen Schreibzugriff auf die Busleitung hat: wenn beide Ausgangstransistoren hochohmig sind, kann von außen ein beliebiges Potenzial angelegt werden, ohne dass durch die Transistoren rückwärts ein Strom fließt!

Inzwischen haben sich Bus-Systeme als unverzichtbares Arbeitsmittel in der Digitaltechnik erwiesen. Wenn wir diese praktischen bidirektionale Informationskanäle jedoch haben wollen, müssen wir die Notwendigkeit von Tri-State-Buffern in Kauf nehmen. Es ist ein echter Schönheitsfehler, dass mit den Bus-Systemen zu der binären Technologie, die nur die Zustände "0" und "1" kennt, nun notwendigerweise noch der dritte Zustand "Hi-Z" hinzugefügt werden muss. Glücklicherweise spielt dieser dritte Zustand aber nahezu ausschließlich bei Bus-Systemen eine wesentliche Rolle, und wir können uns für die folgenden Überlegungen wieder in das "binäre Paradies der Nullen und Einsen" zurückziehen!




3.3 Das Flipflop


Nachdem wir nun im vorigen Abschnitt den Transport von Bits sehr detailliert besprochen haben, sollten wir uns nun der Speicherung von Bits zuwenden. Als erstes wollen wir uns mit einer Schaltung vertraut machen, die genau 1 Bit zuverlässig speichern kann. Betrachten wir dazu erst einmal die folgende Schaltung aus zwei NOR-Gattern:


Um Genaueres über die Funktion dieser Schaltung zu erfahren, ist es sinnvoll, zunächst die Eingänge R auf 1 und S auf 0 zu setzen. Damit ist jedoch noch nicht klar, welche Signale an den Ausgängen Q und P erscheinen werden, weil hier die Ausgangssignale auf die Eingangsseite der Schaltung rückgekoppelt werden: Diese Problematik ist typisch für rückgekoppelte Systeme. Wir müssen also die verschiedenen Möglichkeiten durchprobieren, ehe wir die erste Zeile einer Wahrheitswert-Tabelle für diese Schaltung hinschreiben können. Hier ist zur Erinnerung nochmals die Wahrheitswerttabelle der NOR-Verknüpfung:

E1 E2 NOR
 0  0  1
 0  1  0
 1  0  0
 1  1  0

Probieren wir die Fälle "Q = 0" und "Q = 1" durch:
  1. Wir nehmen zunächst an, dass Q = 0 sei. Dann "sieht" das untere NOR-Gatter die Eingangssignale S = 0 und Q = 0. Damit erscheint an seinem Ausgang das Signal P = 1. Das obere NOR-Gatter hat also die Eingangssignale R = 1 und P = 1, was das Ausgangssignal Q = 0 zur Folge hat. Das stimmt aber mit unserer ursprünglichen Annahme überein. Also ist der Zustand "Q = 0 und P = 1" stabil.

  2. Nehmen wir hingegen an, dass am Anfang Q = 1 ist, dann hat das untere NOR-Gatter die Eingangssignale S = 0 und Q = 1. Daher produziert es am Ausgang das Signal P = 0. Damit erhält das obere NOR-Gatter die Eingangssignale R = 1 und P = 0. Dies schaltet jedoch den Ausgang Q auf den Wert 0. Wie wir schon unter (a) gesehen haben, führt dies zum stabilen Zustand "Q = 0 und P = 1".

Egal ob anfangs Q = 0 oder Q = 1 ist, die Schaltung kippt also stets in den Zustand "Q = 0 und P = 1" und bleibt dann da. Daraus können wir nun die ersten Zeilen einer Wahrheitswert-Tabelle für unsere Schaltung folgern. Die erste Spalte enthält dabei zusätzlich eine Nummerierung der aufeinanderfolgenden Zustände, also quasi eine Zeitleiste:

t R S Q P
0 0 0 * *
1 1 0 0 1

Wenn wir im nächsten Schritt (t = 2) das Eingangssignal R auf 0 zurückschalten, dann ändert sich der Wert von Q dadurch nicht: wegen P = 1 bleibt das obere NOR-Gatter im Zustand Q = 0, so dass der Zustand der Schaltung insgesamt erhalten bleibt:

t R S Q P
0 0 0 * *
1 1 0 0 1
2 0 0 0 1

Im folgenden Schritt (t = 3) setzen wir S = 1. Das untere NOR-Gatter sieht damit die Eingangs­signale S = 1 und Q = 0, so dass das Ausgangssignal auf P = 0 kippt. Damit erhält das obere NOR-Gatter die Eingangssignale R = 0 und P = 0, was zu Q = 1 führt. Hierdurch wird jedoch das Ausgangssignal des unteren NOR-Gatters nicht verändert, so dass der Zustand sich stabilisiert. Weiter kann man sich auch hier davon überzeugen, dass der neue Zustand (Q = 1 und P = 0) erhalten bleibt, wenn man das Eingangssignal S auf 0 zurückschaltet (t = 4).

Man erhält also die folgende Tabelle:

t R S Q P
0 0 0 * *
1 1 0 0 1
2 0 0 0 1
3 0 1 1 0
4 0 0 1 0

Vergleicht man in dieser Tabelle die Zeilen t = 2 und t = 4, dann fällt auf, dass in dieser Schaltung die Ausgangssignale Q und P keine Funktion der Eingangssignale R und S sind: zu denselben Eingangsdaten gehören unterschiedliche Ausgangsdaten! Es muss also noch eine andere Variable geben, die den Ausgangszustand der Schaltung mit beeinflusst: wenn man sich die Tabelle nochmals genauer anschaut, sieht man, dass in Q stets die Information vorhanden ist, an welchem der beiden Eingänge R oder S zuletzt eine 1 anlag:
  1. Ist Q = 0, dann bedeutet dies: die letzte 1 wurde am R-Eingang festgestellt;

  2. Ist Q = 1, dann bedeutet dies: die letzte 1 wurde am S-Eingang festgestellt.

Mithin hat die Schaltung also ein "Gedächtnis für die letzte 1". Eine solche Schaltung nennt man ein RS-Flipflop. Das folgende Simulationsfenster zeigt ein solches elementares RS-Flipflop und ermöglicht Ihnen, seine Eigenschaften selbst zu erforschen -- wie es die nächste Aufgabe beschreibt.




Aufgabe:

  1. Das elementare RS-FlipFlop

    a) Spielen Sie im Simulationsfenster die obige Wahrheitswerttabelle des RS-Flipflops durch. Machen Sie sich dazu bei jeden Übergang von einem in den nächsten Zustand zunächst selber klar, was beim nächsten Ändern der Eingangssignale genau passieren wird, und zwar ehe Sie die Änderungen klicken!

    b) Es gibt einen Zustand des RS-Flipflops, der in der obigen Wahrheitswerttabelle nicht vorkommt, und zwar mit Absicht: er gilt als "verbotener Zustand". Um welchen Zustand handelt es sich, und warum ist er "verboten"?
    Lösungsvorschlag





3.4 D-Flipflop und Register


Im Prinzip stellt ein RS-Flipflop schon einen Speicher für die Informationsmenge 1 Bit dar. Allerdings ist die "Programmierung" des Speichers noch ziemlich unkomfortabel, weil man Q = 1 durch eine 1 am S-Eingang und Q = 0 durch eine 1 am R-Eingang erhält. Besser wäre es, wenn es einen Daten-Eingang D gäbe und das daran anliegende Bit nach Q übernommen werden würde. Außerdem sollte die Informations-Übernahme von D nach Q nicht dauernd erfolgen, sondern nur zu wohldefinierten Zeitpunkten. Dazu ist es sinnvoll, die Eingänge R und S jeweils mit einer Torsteuerung zu versehen. Eine solche Schaltung nennt man ein D-Flipflop. Die folgende Schaltung zeigt ein mögliches Schaltbild für ein "D-Flipflop":


Da der ursprünglich beim RS-Flipflop noch vorhandene Ausgang P stets nur das logische Gegenteil von Q zeigt und somit keine zusätzliche Information liefert, verzichtet man beim D-Flipflop oft auf diesen Ausgang. Der einzige Ausgang ist damit Q. Er enthält immer das gespeicherte Bit, nämlich denjenigen logischen Wert, der an D damals anlag, als C zuletzt den Wert 1 hatte. "Speichern" heißt hier also: die D-Information in Q aufbewahren, auch wenn sie an D längst nicht mehr anliegt!

Die Information in Q bleibt so lange stabil, wie C = 0 ist. Erst wenn C wieder auf 1 wechselt, wird der dann in D anliegende Wert nach Q übernommen und überschreibt damit den zuvor gespeicherten Wert. Damit Sie sich vom korrekten Verhalten des D-Flipflops überzeugen können, hier noch eine Simulation:





Die kleinste Informationsmenge, mit der Programmierer üblicherweise zu tun haben, ist ein Byte, also ein geordnetes Paket aus 8 Bit. Um nun ein solches 8-Bit-Wort zu speichern, kann man jedes der 8 Bits in einem eigenen D-Flipflop speichern. Dabei ist es günstig, die C-Eingänge aller 8 D-Flipflops zu einem gemeinsamen "Takt-Eingang" T zusammenzufassen: dann kann man mit einem kurzen "1"-Signal am gemeinsamen Takteingang die an den D-Eingängen anliegenden Bits in das jeweilige D-Flipflop übernehmen. Eine solche Schaltung nennt man ein 8-Bit-Datenregister und stellt es dann so dar:




Die an den 8 Eingängen D0 bis D7 anliegenden Bits werden durch ein vollständiges Taktsignal am T-Eingang (Wechsel von 0 nach 1 und wieder zurück von 1 nach 0) in die einzelnen Bitspeicher übernommen. Die gespeicherten Bits stehen dann an den Ausgängen Q0 bis Q7 permanent zur Weiterverarbeitung zur Verfügung, bis durch das nächste Signal am T-Eingang ein neues Datenwort in dieses Register geladen wird.

Wenn das gespeicherte Datenwort eine (binäre) Zahl darstellt, dann beschreibt der Index des Leitungsnamens die Wertigkeit der einzelnen Bits: der Index 0 gibt stets das niederwertigste Bit an ("LSB" = least significant bit), der höchste Index das höchstwertige Bit ("MSB" = most significant bit). Da wir aber üblicherweise mehrstellige Zahlen mit nach links zunehmender Stellenwertigkeit schreiben, wurden die Eingänge hier von rechts nach links ansteigend durchnummeriert. Im folgenden Bild sind an den Ausgängen die Wertigkeiten der jeweiligen Bits angegeben:


Diese Konvention, dass also die Wertigkeit paralleler Eingänge von rechts nach links zunimmt, gilt auch für alle folgenden Bausteine, bei denen parallele Ein- und Ausgänge mit verschiedenen Stellenwerten auftreten. Und wenn wir schon bei den Konventionen sind, können wir auch gleich noch vereinbaren, welches Signal ein unbeschalteter Eingang weiterleiten soll. Zugegeben, eigentlich sollte jeder Eingang mit einer Signalquelle verbunden sein, und bei den bisher studierten Schaltungen war das auch stets so gewesen. Andererseits ist es einfach praktisch, wenn man in einer Schaltung auch mal einen Eingang offen lassen kann, ohne dass damit sein Zustand unbestimmt bleibt. Daher vereinbaren wir, dass ein offener Eingang stets eine logische "0" tragen soll.




3.5 Dauerhafte Speicherung von Bits


Mit Hilfe von Registern können wir nun schon ganze Byte-Worte in unserem Computer speichern. Wenn wir sehr viele Register verwenden, können wir auch sehr viele Daten speichern: mit 1024 8-Bit-Registern hat unser (noch zu bauender) Computer schon die Speicherkapazität von 1024 Bytes = 1 KByte. Das ist nach aktuellen Maßstäben erbärmlich wenig. Fast noch schlimmer ist aber, dass die gesamte Information in unserem Computer beim Ausschalten unwiederbringlich verloren geht! Wie kann man binäre Informationen dauerhaft speichern?

In der Anfangszeit der Computerentwicklung griff man zunächst auf schon vorhandene Technologien zurück. So war z.B. das Prinzip der magnetischen Aufzeichnung von Schallereignissen auf Tonbändern schon etabliert, und man setzte versuchsweise die zur Speicherung analoger Signale entwickelten "Tonbandmaschinen" auch zur Speicherung digitaler Signale ein. Auf den dabei verwendeten Bändern wurden die Informationen in magnetischer Form kodiert: das Bandmaterial enthielt Eisenoxid-Partikel, die bei der Aufnahme durch das Magnetfeld eines Elektromagneten ("Sprechkopf") magnetisiert wurden, während das Band an diesem Sprechkopf vorbeigezogen wurde. Diese Magnetisierung bleibt auch erhalten, wenn das sie hervorrufende Magnetfeld nicht mehr wirkt - das Band "merkt sich" das Signal also in einem magnetischen Feld!

Um die Informationen dann wieder vom Band zu lesen, musste das Band nur an einer kleinen Spule ("Lesekopf") vorbeigezogen werden. Das (schwache) Magnetfeld, das auf dem Band gespeichert ist, erzeugt im Lesekopf eine Induktionsspannung, und aus dieser kann man das ursprüngliche Signal mit hinreichender Genauigkeit wieder rekonstruieren!

Man optimierte die Technik der analogen Bandmaschine, was in der Praxis bedeutete, dass man sie radikal vereinfachte. Schließlich musste nun kein analoges Signal mit variabler Schallstärke aufgezeichnet werden; es genügte, wenn die Elementarmagnete im Bandmaterial entweder in oder gegen die Bandlaufrichtung ausgerichtet wurden - und schon konnte man zwischen einer "0" und einer "1" unterscheiden! (Ganz so einfach war das in Wirklichkeit zwar nicht, aber uns genügt hier ein kurzer Blick auf die zugrundeliegenden Prinzipien.) Entsprechende Bandmaschinen waren bis in die 1990er Jahre als "Backup-Laufwerke" in Betrieb.

Parallel dazu wurde die Speicherung auf magnetisierbaren rotierenden Scheiben entwickelt, welche zur heute noch verwendeten "Festplatte" führte (Stand 2013). Durch ständige Verkleinerung der magnetisierbaren Bereiche kommt man inzwischen auch bei Platten im unteren Preissegment auf Datendichten in der Größenordnung von etwa 500 GigaBit pro Quadratzoll! Mit derselben Technologie, aber deutlich geringerer Datendichte arbeiteten die inzwischen ausgestorbenen "Floppy-Laufwerke", bei denen auf eine magnetisierbare Plastikscheibe (Durchmesser 3,5 Zoll = 8,9 cm) maximal 1,44 MegaByte an Daten geschrieben werden konnten.


  1. Datendichten

    Welche Fläche (in mm²) belegt eine Datei, die ein Urlaubsbild enthält (z.B. 3,5 MB groß) auf einer 2013 gekauften Festplatte? Wieviele MB passen auf 1 Quadratmillimeter der Plattenoberfläche? Verwenden Sie die oben angegebenen Daten.
    Schätzen Sie unter realistischen Annahmen (Internet-Recherche!) die Datendichte auf einer 3,5-Zoll-HD-Floppy ab, wie sie in den 1990er Jahren üblich war.
    Lösungsvorschlag




Aber warum sind denn die "Floppies" ausgestorben? Nun, wer heute Dateien von einem Ort zum anderen tragen muss, der schreibt sie üblicherweise auf einen Memory-Stick! Kaum ein Datenträger hat sich so rasend schnell verbreitet wie der USB-Stick. Der einfach zu handhabende Stick ist ein Datenspeicher, der (wie eine Diskette) keine eigene elektrische Energiequelle braucht, um seine Daten zu behalten. Lediglich zum Schreiben und Lesen von Daten ist eine solche Energiequelle nötig, wobei für den Stick der vom USB-Port zur Verfügung gestellte Energiestrom genügt. Der Stick hat kleinere Abmessungen als jede Diskette, jedoch eine Speicherkapazität, die die der Diskette um mehrere Größenordnungen übersteigt. Zudem ist er robuster und einfacher zu handhaben, so dass er inzwischen die Diskette als Datenträger komplett verdrängt hat. Mit der Weiterentwicklung der USB-Schnittstelle hat sich auch die Geschwindigkeit des Datentransfers zwischen Stick und Computer ständig erhöht, so dass ein moderner Stick mit 8 GB (Stand 2012) inzwischen die Funktion einer (kleinen) Festplatte übernehmen kann. Die ersten Sticks kamen im Jahr 2000 auf den Markt, wobei man sich zunächst mit einer Kapazität von 8 MB (ja, MegaByte!) zufrieden geben musste. Derzeit (Stand 2012) sind Sticks mit einer Kapazität von bis zu 256 GB erhältlich, wobei der Preis inzwischen auf unter 1 €/GB gesunken ist.

Wie sind nun solche Sticks intern aufgebaut, und wie funktionieren sie? Wie so oft, ist das Prinzip relativ einfach, die tatsächliche Umsetzung in ein serienreifes Produkt hingegen ziemlich komplex. Wir tun gut daran, uns auf die prinzipielle Wirkungsweise des Sticks zu beschränken, da nur diese immun ist gegen ständige technische Weiterentwicklung.

Wir wollen unsere NOT-Schaltung zu einem Speicher für 1 Bit ausbauen. Um das Bit auszulesen, prüfen wir das Potenzial am Ausgang Ua: ist es nahe 0 Volt, dann liegt eine logische "0" vor, ist es nahe 5 Volt, dann ist eine logische "1" gespeichert. Welcher logische Wert gespeichert ist, darüber entscheidet in unserer NOT-Schaltung das Potenzial am Eingang Ue: liegt dort eine logische "0" an, dann ist das gespeicherte Bit eine "1", und umgekehrt.

Wir haben schon gesehen, dass die Gate-Elektroden der beiden MOS-FETs innerhalb des Transistors keine leitende Verbindung zum jeweiligen Drain-Source-Kanal haben. Wenn wir nun noch Anschluss Ue ersatzlos streichen, dann haben die beiden (miteinander verbundenen) Gate-Elektroden überhaupt keine leitende Verbindung mehr zu ihrer Umgebnung! Eine auf ihnen sitzende Ladung kann also nicht mehr abfließen und bleibt daher erhalten vorausgesetzt, dass es gelingt, die Gates sehr, sehr gut zu isolieren. Man redet dann von einem "floating gate". Das einmal gesetzte Potenzial von Ua bleibt damit erhalten: eine "1" bleibt permanent eine "1", und eine "0" bleibt für immer eine "0".


Aber wie kann man den Inhalt dieses Bit-Speichers denn ändern? Die Gate-Elektroden sind ja nun von außen überhaupt nicht mehr zugänglich! Hier hilft uns die "Flash-Technologie": man bringt eine zusätzliche Schreibleitung an, die dicht an die Gate-Leitungen heranführt, aber keine leitende Verbindung zu diesen hat um natürlich die Bit-Speicherfähigkeit unserer Schaltung nicht zu gefährden!


Legen wir nun an den Schreibeingang Us ein positives Potenzial von (etwa) 25 Volt, dann wird das elektrische Feld zwischen der Schreibelektrode und den Gates so stark, dass der Isolator zwischen diesen beiden kurzzeitig leitend wird. Dabei wird negative Ladung vom Gate abgezogen, so dass es positiv geladen erscheint. Mit einem negativen Schreibpotenzial von (etwa) -20 Volt hingegen fließt entsprechend negative Ladung auf die Gates. Der Vorgang ist völlig analog zum Blitzschlag beim Gewitter: ist die Spannung zwischen der (z.B. positiv) geladenen Wolke und der Erde hinreichend groß, dann entsteht (durch Ionisation) in der normalerweise isolierenden Luft ein leitfähiger Kanal, über den (positive) Ladung von der Wolke zur Erde fließt. Ist die Wolke hingegen negativ geladen, wird beim Blitz ("Flash") negative Ladung zur Erde transportiert. Im normalen Speicherbetrieb wird der US-Anschluss auf ein "ungefährliches" Potenzial zwischen 0 und 5 Volt gelegt.

Wenn Sie also eine Datei auf Ihren Stick schreiben, dann verursachen Sie damit ein Gewitter von lauter kleinen Blitzen, die die passenden Ladungen auf die "floating gates" transportieren. Es ist nun auch verständlich, warum ein solcher Speicher nicht beliebig oft beschrieben werden kann: der Gewaltakt des Blitzes lässt sich leider nicht ganz ohne Nebenwirkungen verwirklichen, so dass bei jedem Schreibprozess die Isolation der "floating gates" leidet. Sind die Schäden schließlich zu groß geworden, verliert das Gate seine Ladung mit der Zeit eben doch! Viele Hersteller von Speichersticks garantieren inzwischen, dass die Daten mindestens 5 Jahre erhalten bleiben, und dass jede Speicherzelle mindestens 5000 Mal neu beschrieben werden kann - aber welcher Stick erreicht schon eine Lebensdauer von 5 Jahren, ohne vorher durch ein größeres Exemplar ersetzt zu werden, das zudem noch weniger Platz braucht?

Wie schon angedeutet, wurde hiermit nur das grundlegende Prinzip eines "Flash-Sticks" beschrieben. Die Praxis ist weitaus komplizierter. Bisher haben wir für die Speicherung eines Bit zwei MOS-FETs gebraucht, weil wir unseren Speicher eben aus der NOT-Schaltung ableiten wollten. Die Information, ob eine "0" oder eine "1" gespeichert ist, steckt dabei im Potenzial Ua (0 Volt ~ "0" und 5 Volt ~ "1").

Wir können den Wert des gespeicherten Bits aber auch nur aus dem unteren Transistor auslesen, indem wir dessen Drain-Source-Widerstand messen: hat dieser Transistor einen hohen Kanalwiderstand, dann ist eine "1" gespeichert, hat er einen niederen Kanalwiderstand, dann ist eine "0" gespeichert. In dieser sogenannten "SLC-Technik" (Single Level Cell) braucht man zur Speicherung jedes Bits stets nur einen MOSFET; dabei wird nur zwischen hohem und niedrigem Kanalwiderstand unterschieden.

Man kann aber durch Definition von z.B. 3 Schwellenwerten diesen Kanalwiderstandsbereich weiter unterteilen in 4 Abschnitte und dann damit in einem MOS-FET gleich zwei Bits speichern: dem untersten Bereich wird das Doppelbit "00" zugeordnet, dem zweiten dann "01", dem dritten "10" und dem obersten Bereich schließlich das Doppelbit "11". Diese Methode wird dann als "MLC-Technik" (Multi Level Cell) bezeichnet.

In unserem ersten Entwurf der modifizierten NOT-Schaltung lagen die logischen Werte in Form von Potenzialen vor. Dann ist ihre Weiterverarbeitung recht einfach: man braucht nur eine leitfähige Verbindung zum Eingang des nächsten Gatters. Bei der SLC- und MLC-Technik sind die Bits jedoch als Widerstandswerte kodiert. Dann muss der Widerstandswert erst wieder in ein Potenzial zurück-übersetzt werden. Die dazu nötige "Leseschaltung" ist alles andere als trivial, weshalb wir hier auf weitere Details verzichten wollen.

In der Tat ist in den Sticks eine Menge Ingenieurskunst enthalten. So sind die oben angegebenen Garantiedaten für die Lebensdauer des Sticks nur erreichbar, wenn durch einen kleinen Management-Computer auf dem Stick dafür gesorgt wird, dass nicht immer in dieselben Speicherzellen geschrieben wird, sondern die Schreibzugriffe möglichst gleichmäßig auf alle vorhanden Speicherzellen verteilt werden. Erst dieses "wear levelling" sichert, dass der Stick die vorgesehene Lebenszeit auch wirklich erreichen kann.

Inzwischen wird die "Flash-Technologie" auch benutzt, um sehr viel größere Datenträger zu bauen: ein "SSD" ("S"olid "S"tate "D"rive) ist ein Laufwerk, das wie eine klassische Festplatte arbeitet, die Bits aber nicht in magnetischen, sondern eben in elektrischen Feldern abspeichert: SSDs sind sozusagen "Riesen-Memory-Sticks" mit Kapazitäten bis etwa 256 GB (Stand 2012). Da sie intern völlig ohne mechanisch bewegte Teile auskommen, sind sie viel robuster als klassische Festplatten. Darüber hinaus können SSDs die gewünschten Daten erheblich schneller liefern als jede konventionelle Festplatte. Dies kann man z.B. bei Windows-PCs dazu benützen, die Zeit, die der Rechner zum "Booten" braucht, deutlich zu verkürzen: ist "Windows" auf einer SSD installiert, braucht ein ordentlich konfigurierter moderner Rechner vom Drücken des Einschaltknopfes bis zum arbeitsfähigen Desktop höchstens noch 20 Sekunden! Und natürlich wirken sich die kurzen Zugriffszeiten auch positiv auf den gesamten Betrieb des Rechners aus: er fühlt sich insgesamt erheblich flotter an.




Zum vorigen Kapitel Zum Inhaltsverzeichnis Zum nächsten Kapitel