Zugriff auf ein SRAM-Array?

Während ich etwas über Computerarchitektur lerne, versuche ich, sie von Grund auf zu verstehen (insbesondere Transistoren in CMOS).

Ich bin auf das einfache 6T-Schema für SRAM (2 Wechselrichter) gestoßen6T-Array

Meistens sinnvoll, aber ich habe ein paar Fragen. Was genau wird mit dem gemacht, was hier gelagert wird? Wird es an die CPU gesendet? ein Decoder?....etc...? Ich würde annehmen, dass wir eine Art Decoder/Encoder verwenden, um in bestimmte Zellen zu schreiben?

Und obwohl ich verstehe, wie die Speicherzelle funktioniert (hält ihre Daten vor Rückkopplung), lesen wir den Inhalt der Zelle mit den Wortleitungen oder Bitleitungen? was ist mit ihnen zu schreiben? Ist die ~Bit-Leitung (~BL) für uns völlig nutzlos?

Wie würde ich etwa lesen und in ein solches Array schreiben?

Was ist die eigentliche Komponente?

Antworten (2)

Der Speicher wird unter Verwendung der Wortleitungen adressiert, und Daten werden unter Verwendung der Bitleitungen in das oder aus dem Array übertragen.

Die Wortleitungen werden von einem Decoder angesteuert, dessen Eingang der Adressbus ist. Für jede bestimmte Binäradresse wird genau eine Wortleitung aktiviert. Dies schaltet alle Durchgangstransistoren für eine vollständige Reihe von Speicherzellen ein und verbindet jedes Paar von kreuzverbundenen Invertern mit seinem Paar von Bitleitungen. Alle anderen Zeilen im Speicherarray sind von den Bitleitungen getrennt und nehmen nicht am Lese- oder Schreibzyklus teil.

Beim Lesen einer Zelle treiben die Inverter die Bitleitungen – eine hoch und eine niedrig – und eine nicht gezeigte Schaltung vergleicht die Spannungen auf den zwei Bitleitungen und entscheidet, ob das Bit eine Null oder eine Eins ist. Die auf diese Weise erhaltenen Bits werden zusammengruppiert, um ein "Wort" von Daten zu bilden, das dann an irgendeine externe Logik (CPU, Videocontroller oder irgendetwas anderes) weitergegeben wird, die mit dem Datenbus verbunden sein könnte.

Beim Schreiben einer Zelle treibt ein anderer, ebenfalls nicht gezeigter Schaltungssatz die Bitleitungen – wiederum eine hoch und eine niedrig für jede Zelle. Der Schlüssel hier ist, dass der Schreibtreiber stärker ist als die Inverter in der Speicherzelle und der Speicherzelle einen neuen Zustand auferlegen kann, ungeachtet dessen, was ihr vorheriger Zustand gewesen sein könnte.

Am Ende des Zyklus wird die Wortleitung deaktiviert und die Zellen behalten ihren Zustand bei.

Ich gehe davon aus, dass diese Transistoren auf der WL N-Kanal-Mosfets sind? und was sind diese "Vergleichsschaltungen", die die Spannungen vergleichen? Wo befinden Sie sich? (Ich habe Tonnen von Bildern von Speicherarrays gefunden, aber nicht viel Erklärung :( )
1) Ja, wahrscheinlich N-Kanal, für bessere Geschwindigkeit. 2) Der Spannungskomparator ist ein Differenzverstärker. 3) Eine Reihe davon, eine pro Spalte, ist typischerweise entlang der Ober- oder Unterkante des Speicherzellenarrays angeordnet. Die Treiber zum Schreiben befinden sich entlang der gegenüberliegenden Kante. Die Wortleitungstreiber (die letzte Stufe des Adressdecoders) befinden sich am linken und/oder rechten Rand des Arrays (manchmal an beiden).

Um in eine oder mehrere Zellen in einer einzelnen SRAM-Zeile zu schreiben, sollte man sowohl die invertierten als auch die nicht invertierten Bitleitungen für die entsprechenden Spalten mit komplementären Werten stark ansteuern, alle anderen Spalten floaten und dann die entsprechende Zeilenauswahl ansteuern Draht hoch. Spalten, die stark extern angesteuert werden, halten die von diesen externen Treibern erzwungenen Zustände, während andere sich an die Zustände anpassen, die in den Speicherzellen in der ausgewählten Zeile gespeichert sind. Alle Speicherzellen in der ausgewählten Zeile speichern die Daten in ihren entsprechenden Spalten, die entweder die extern angesteuerten Daten (für die angesteuerten Zeilen) oder die Daten sind, die die Speicherzellen bereits enthalten (für die nicht angesteuerten).

Um eine oder mehrere Zellen zu lesen, floaten Sie alle Spalten und treiben Sie den entsprechenden Zeilenauswahldraht hoch. Alle Spalten passen sich dann selbst an die Zustände der entsprechenden Speicherzellen an. Beim Lesen könnte man eine Bitleitung von jeder Spalte verwenden und die andere ignorieren, oder man könnte beide Leitungen in eine Spannungskomparatorschaltung einspeisen. Obwohl der letztere Ansatz mehr Schaltungen erfordern würde, könnte er eine bessere Leistung bieten, da der Ausgang des Komparators schalten könnte, bevor die Spaltendrähte gültige Logikpegel erreicht hätten.

Es ist erwähnenswert, dass man, wenn man zwei Auswahldrähte für jede Zeile verwendet, von denen einer den linken Transistor in jeder Spalte und einer die rechte Seite betreibt, ziemlich einfach einen Speicher implementieren kann, der zwei gleichzeitige Lesevorgänge aufnehmen kann oder sonst ein Schreiben (zuverlässiges Schreiben erfordert in vielen Fällen das Ansteuern beider Drähte, die einer Spalte zugeordnet sind, aber das Lesen erfordert nur einen).