DE112011105706T5 - Zeilenverschiebender verschiebbarer Speicher - Google Patents

Zeilenverschiebender verschiebbarer Speicher Download PDF

Info

Publication number
DE112011105706T5
DE112011105706T5 DE112011105706.7T DE112011105706T DE112011105706T5 DE 112011105706 T5 DE112011105706 T5 DE 112011105706T5 DE 112011105706 T DE112011105706 T DE 112011105706T DE 112011105706 T5 DE112011105706 T5 DE 112011105706T5
Authority
DE
Germany
Prior art keywords
data
memory
column
memory cell
shift
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE112011105706.7T
Other languages
English (en)
Inventor
Hans Boehm
Naveen Muralimanohar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE112011105706T5 publication Critical patent/DE112011105706T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4094Bit-line management or control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/418Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/18Digital stores in which the information is moved stepwise, e.g. shift registers using capacitors as main elements of the stages
    • G11C19/182Digital stores in which the information is moved stepwise, e.g. shift registers using capacitors as main elements of the stages in combination with semiconductor elements, e.g. bipolar transistors, diodes
    • G11C19/188Organisation of a multiplicity of shift registers, e.g. regeneration, timing or input-output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/28Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
    • G11C19/287Organisation of a multiplicity of shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Power Engineering (AREA)
  • Dram (AREA)
  • Static Random-Access Memory (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

Ein verschiebbarer Speicher setzt Zeilenverschiebung ein, um Daten entlang einer Zeile zu verschieben. Der verschiebbare Speicher umfasst Speicherzellen, die als eine Vielzahl von Zeilen und eine Vielzahl von Spalten angeordnet sind. Der verschiebbare Speicher umfasst weiter Verschiebelogik, um Daten von einem Ausgang einer ersten Spalte zu einem Eingang einer zweiten Spalte zu verschieben. Die verschobenen Daten werden von einer Speicherzelle der ersten Spalte in einer ausgewählten Zeile bereitgestellt. Die verschobenen Daten werden von einer Speicherzelle in der ausgewählten Zeile der zweiten Spalte empfangen und gespeichert. Die Verschiebelogik vereinfacht das Verschieben von Daten entlang der ausgewählten Zelle.

Description

  • HINTERGRUND DER ERFINDUNG
  • Moderne Computer und ähnliche Verarbeitungssysteme umfassen typischerweise einen Prozessor und irgendeine Form eines Speichers. Der Prozessor ist allgemein dafür zuständig, die verschiedenen Rechenaufgaben des Computers auszuführen, während der Speicher Daten speichert, die von den Rechenaufgaben verwendet und erzeugt werden. Die bauliche Unterteilung der Verarbeitung durch den Prozessor und Datenspeicherung durch den Speicher hat sich über nahezu die gesamte Vergangenheit solcher Systeme als erfolgreich erwiesen.
  • Ein typischer Universalcomputer umfasst z. B. eine zentrale Verarbeitungseinheit (Central Processing Unit oder CPU) und einen Hauptspeicher, die miteinander über ein oder mehrere Kommunikationskanäle miteinander kommunizieren (z. B. Daten, Befehle und Adressbusse). Typischerweise stellt die CPU Einrichtungen zur Ausführung verschiedener arithmetischer und logischer Operationen bereit, um eine Operationsablaufsteuerung bereitzustellen und anderweitig Aspekte eines Universalcomputers zu steuern. Praktisch alle CPUs stellen Funktionen oder Operationen zum Lesen von Daten aus Speicher, zum Schreiben von Daten in Speicher und zum Ausführen von Programmen bereit, die einen Satz von Befehlen umfassen, die die Daten zur Ausführung einer zuvor definierten Aufgabe nutzen. Außerdem können CPUs Eingang/Ausgang (Input/Output, I/O) verwalten und erlauben somit Kommunikation mit Peripheriegeräten sowie mit Untersystemen außerhalb des Universalcomputers. CPUs können in einigen Beispielen sogar Graphikverarbeitung bereitstellen, um das Erzeugen und Aktualisieren einer Graphikanzeige (z. B. eines Monitors) zu verwalten.
  • Im Gegensatz dazu stellt der Hauptspeicher moderner Computer, der ein oder mehrere aus statischem Direktzugriffsspeicher (Static Random Access Memory oder SRAM), dynamischem Direktzugriffsspeicher (Dynamic Random Access Memory oder DRAM), Festwertspeicher (Read-Only Memory oder ROM), programmierbarem ROM (PROM), Flashspeicher und einer Vielzahl anderer Speichertypen sein kann, einen relativ eng umgrenzten Satz von Fähigkeiten bereit. Das Wichtigste unter diesen Fähigkeiten ist das Speichern von Computerprogrammen und -daten, die von der CPU ausgeführt und verwendet werden. Unter den anderen begrenzten Fähigkeiten, die sich im Hauptspeicher eines modernen Computers finden bzw. oft damit in Verbindung gebracht werden, sind bestimmte Speicherverwaltungsfunktionen. So können DRAM-Untersysteme des Hauptspeichers z. B. Kreise zur automatischen Auffrischung von darauf gespeicherten Daten besitzen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Verschiedene Funktionen von Beispielen gemäß der hier beschriebenen Prinzipien sind möglicherweise besser in Bezug auf die folgende ausführliche Beschreibung, zusammen mit den begleitenden Zeichnungen zu verstehen, wobei gleiche Bezugsnummem gleiche strukturelle Elemente bezeichnen, wobei
  • 1A ein Beispiel für eine Rechtsverschiebung eines fortlaufenden Teilsatzes von Daten zeigt, die in einer horizontalen Zeile in dem verschiebbaren Speicher gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien gespeichert sind.
  • 1B ein Beispiel für eine Linksverschiebung eines fortlaufenden Teilsatzes von Daten zeigt, die in einer Zeile in dem verschiebbaren Speicher gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien gespeichert sind.
  • 2 ein Blockdiagramm eines verschiebbaren Speichers zeigt, der gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien Zeilenverschiebung einsetzt.
  • 3A eine schematische Darstellung einer beispielhaften SRAM-Zelle gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien zeigt.
  • 3B eine schematische Darstellung einer beispielhaften DRAM-Zelle gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien zeigt.
  • 4A eine schematische Darstellung einer Verschiebelogik zeigt, die einen Multiplexer gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien zeigt.
  • 4B eine schematische Darstellung einer Verschiebelogik zeigt, die einen Multiplexer gemäß eines weiteren Beispiels gemäß der hier beschriebenen Prinzipien zeigt.
  • 5A ein schematisches Blockdiagramm eines Beispiels einer Verschiebung nach Wortgröße in dem verschiebbaren Speicher gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien zeigt.
  • 5B ein schematisches Blockdiagramm eines Beispiels einer Verschiebung nach Wortgröße in dem verschiebbaren Speicher gemäß eines weiteren Beispiels gemäß der hier beschriebenen Prinzipien zeigt.
  • 5C ein schematisches Blockdiagramm eines Beispiels für Verschieben in dem verschiebbaren Speicher zeigt, der Neubelegung einsetzt, um dynamisch einen Verschiebeabstand gemäß eines weiteren Beispiels gemäß der hier beschriebenen Prinzipien zu steuern.
  • 6 ein Flussdiagramm eines Verfahrens zeigt, Daten in einem verschiebbaren Speicher gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien zu verschieben.
  • Bestimmte Beispiele haben andere Funktionen, die eine zusätzliche Funktion und eine Funktion anstelle der oben dargestellten Funktionen darstellen. Diese und andere Funktionen werden mit Bezug zu den oben bezeichneten Figuren ausgeführt.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Beispiele gemäß der hier beschriebenen Prinzipien stellen einen verschiebbaren Speicher mit eingebauter Verschiebefähigkeit bereit, der Zeilenverschiebung einsetzt. Insbesondere wird ein fortlaufender Teilsatz von Daten, die in einer ausgewählten Zeile des verschiebbaren Speichers gespeichert sind, durch den verschiebbaren Speicher verschoben, um eine eingebaute Verschiebefähigkeit zu implementieren. Die eingebaute Datenverschiebefähigkeit stellt eine laterale Umsetzung des fortlaufenden Daten-Teilsatzes entlang der ausgewählten Zeile bereit. Die laterale Umsetzung stellt eine Rechtsverschiebung oder eine Linksverschiebung der gespeicherten Daten oder beides gemäß verschiedener Beispiele bereit. Weiterhin kann z. B. eine Richtung der Verschiebung (d. h. nach rechts oder links) sowie ein Betrag oder eine Entfernung der Verschiebung gewählt werden. Beispiele gemäß der hier beschriebenen Prinzipien finden Anwendung in Computersystemen und ähnlichen Datenverarbeitungssystemen. Insbesondere stellen die hier beschriebenen Beispiele verschiebbaren Speicher mit eingebauter Verschiebefähigkeit bereit, was für eine breite Vielzahl von Datenverarbeitungsaufgaben nützlich ist.
  • Gemäß verschiedener Beispiele kann der fortlaufende Teilsatz gespeicherter Daten (z. B. Datenworte) innerhalb des Speichers von einem ersten Speicherort entlang der Zeile zu einem zweiten Speicherort verschoben werden. Die verschobenen Daten behalten ihren geordneten Bezug innerhalb des fortlaufenden Teilsatzes, wenn sie an den zweiten Ort in der Zeile gemäß einiger Beispiele verschoben werden. Weiterhin findet die Verschiebung vollständig innerhalb des Speichers (z. B. innerhalb eines Speicherchips oder Chipsatzes) statt und die Verschiebung wird in der Regel ohne Verwendung von Ressourcen erzielt, wie einem Prozessor, die sich außerhalb des Speichers befinden. Insbesondere wird die Verschiebung durch Verwendung einer Verschiebelogik erzielt, die einen Schaltkreis (z. B. einen Verschiebe-Schaltkreis) des verschiebbaren Speichers gemäß verschiedener Beispiel umfasst. Weiter umfasst das Verschieben gemäß verschiedener Beispiele nicht, dass Daten zwischen einem Prozessor und dem Speicher bewegt werden. Daher wird der Speicher mit eingebauter Verschiebefähigkeit hier als verschiebbarer Speicher ”Shiftable Memory” bezeichnet.
  • In einigen Beispielen kann die Verschiebung, die von dem verschiebbaren Speicher hier bereitgestellt wird, eingesetzt werden, um einen Ort in dem Speicher zu ”öffnen”, an den neue Daten eingefügt werden können. Insbesondere kann ein Speicherort entweder links oder rechts des fortlaufenden Teilsatzes gespeicherter Daten verfügbar für das Einfügen von Daten gemacht werden, wenn der fortlaufende Teilsatz gespeicherter Daten durch die Verschiebung innerhalb des verschiebbaren Speichers bewegt wird. In einigen Beispielen umfasst der fortlaufende Teilsatz Daten einer gesamten Zeile (z. B. der ausgewählten Zeile). In diesen Beispielen kann der durch die Verschiebung geöffnete Speicherort an einem linken Ende (z. B. einem Anfang) der Zeile oder an einem rechten Ende (z. B. einem Ende) der Zeile liegen. In anderen Beispielen umfasst der fortlaufende Teilsatz nur einen Teil der Daten einer Zeile. In solchen Beispielen kann der durch die Verschiebung geöffnete Ort zwischen dem Anfang und dem Ende der Zeile liegen.
  • Gemäß anderer Beispiele kann die Verschiebung dazu verwendet werden, Daten zu löschen oder zu ”überschreiben”, die entweder vor einem Anfang des fortlaufenden Teilsatzes oder nach einem Ende des fortlaufenden Teilsatzes gespeichert sind. Insbesondere können die Daten, die links oder rechts des fortlaufenden Teilsatzes in einer Zeile gespeichert sind, mit einem Teil des fortlaufenden Teilsatzes selbst überschrieben werden, wenn die fortlaufenden Daten von dem verschiebbaren Speicher verschoben werden. In anderen Beispielen kann das Verschieben des fortlaufenden Teilsatzes im Wesentlichen einen Teil der Daten weg zum Ende der Zeile verschieben, wenn der fortlaufende Teilsatz Daten der gesamten Zeile umfasst. Abhängig von der Richtung der Verschiebung können die Daten z. B. entweder weg vom rechten oder vom linken Ende verschoben werden. Daten, die weg von dem Ende der Zeile verschoben werden, können gemäß einiger Beispiele im Wesentlichen von dem verschiebbaren Speicher ”verloren” gehen oder davon entfernt und somit als gelöscht betrachtet werden. Wenn die Daten durch das Verschieben weg vom Ende der Zeile gelöscht werden, kann Datenlöschung in einigen Beispielen ohne das Überschreiben anderer Daten erfolgen. In anderen Beispielen können Daten, die weg von einem Ende der Zeile verschoben werden, anschließend in eine andere Zeile übertragen werden (z. B. können sie an den Anfang einer angrenzenden Zeile hinzugefügt werden). Wenn Daten, die weg von einem Ende der Zeile verschoben und dann zu einer anderen Zeile übertragen werden, kann dies z. B. in Folge von Überschreiben zum Löschen von Daten in der anderen Zeile führen.
  • Gemäß einiger Beispiele kann das Verschieben von Daten zum Einfügen oder zum Löschen von Daten in dem verschiebbaren Speicher in kürzerer Zeit erzielt werden, und in einigen Beispielen in erheblich kürzerer Zeit, als dies in der Regel ohne verschiebbaren Speicher der Fall ist. Tatsächlich kann die Verschiebung gemäß einiger Beispiele in im Wesentlichen konstanter Zeit (z. B. einer festen Anzahl von Taktzyklen) unter Verwendung des verschiebbaren Speichers erzielt werden. Z. B. kann die Verschiebung in einem Taktzyklus des verschiebbaren Speichers erzielt werden.
  • Im Gegensatz dazu benötigt z. B. ein konventioneller Speicher, der von einem Prozessor abhängig ist, für das Ausführen einer Verschiebung im Allgemeinen einen Zeitbetrag, der proportional zu der zu verschiebenden Datenmenge ist. Z. B. umfasst das Verschieben von Daten in einem konventionellen Speicher typischerweise, dass der Prozessor die zu verschiebenden Daten liest und dann die Daten zurück auf den Speicher an einem anderen Ort schreibt. Lesen und Schreiben kann z. B. durch den Prozessor aufgrund von Struktur und Funktion konventioneller Speicher auf einer Wort-für-Wort-Basis ausgeführt werden. Da jede Dateneinheit (z. B. ein Datenwort) in den zu verschiebenden Daten zuerst durch den Prozessor von dem konventionellen Speicher gelesen und dann anschließend wieder zurück auf den konventionellen Speicher geschrieben wird, ist z. B. die Zeit zum Verschieben der Daten im Allgemeinen proportional zu der Menge oder Länge der zu verschiebenden Daten (z. B. Anzahl von Datenworten). Je größer die Datenmenge, desto länger dauert die Verschiebe-Operation.
  • Außerdem ist ein konventioneller Speicher von einer Bezugsquelle (z. B. dem Prozessor) abhängig, der extem zu dem konventionellen Speicher angeordnet ist, um bei dem Verschieben von Daten das Lesen und Schreiben auszuführen. Da die Bezugsquelle, die die Verschiebung ausführt, extem zu dem konventionellen Speicher angeordnet ist, muss jedes der Datenworte, die an der Wort-für-Wort-Verschiebung beteiligt sind, zwischen der extemen Bezugsquelle und dem konventionellen Speicher irgendeine Form von Datenbus oder einen ähnlichen Kommunikationskanal passieren. Der Datenbus oder der ähnliche Kommunikationskanal begrenzt im Wesentlichen die Geschwindigkeit der Lese- und Schreibvorgänge und somit die Gesamtgeschwindigkeit der Verschiebung. Somit kann das Verschieben großer Datenteilsätze untragbar teuer in Bezug auf Verarbeitungszeit aufgrund der Wirkungen der Datenbus-Geschwindigkeit und/oder dem proportionalen Zeitaspekt der Ausführung einer Verschiebung unter Verwendung eines konventionellen Speichers sein.
  • Gemäß den hier beschriebenen Prinzipien verfügt ein verschiebbarer Speicher über eine eingebaute Verschiebefähigkeit, so dass z. B. Daten nicht von einer externen Bezugsquelle gelesen und dann geschrieben werden, um eine Verschiebung auszuführen. Der fortlaufende Teilsatz gespeicherter Daten wird dem verschiebbaren Speicher gegenüber identifiziert (z. B. durch Verwenden einer Adresse und einer Länge), und der verschiebbare Speicher wird angewiesen, den fortlaufenden Teilsatz zu verschieben. Die Verschiebung wird dann vollständig innerhalb des verschiebbaren Speichers erzielt und findet dort statt. Gemäß von Beispielen der hier beschriebenen Prinzipien entfallen Geschwindigkeitseinschränkungen im Zusammenhang mit dem Übertragen von Daten an und von einer externen Bezugsquelle durch den verschiebbaren Speicher im Wesentlichen. Weiter ist z. B. die Zeit für das Verschieben im Wesentlichen von der Länge der fortlaufenden Teilsätze unabhängig.
  • Insbesondere kann gemäß der hier beschriebenen Prinzipien das Verschieben innerhalb des verschiebbaren Speichers mit Schaltkreisen des verschiebbaren Speichers selbst implementiert werden. Als solches erfordert das Verschieben mit einem verschiebbaren Speicher nicht sequenzielles Lesen und Schreiben eines jeden Datenworts eines fortlaufenden Teilsatzes. So kann z. B. das Verschieben mit verschiebbarem Speicher alle Daten in dem fortlaufenden Teilsatz entlang einer Zeile in einer im Wesentlichen gleichzeitigen Weise verschieben. Somit kann der verschiebbare Speicher das Verschieben des fortlaufenden Teilsatzes in einer Zeit implementieren, die im Wesentlichen von der Länge des fortlaufenden Teilsatzes unabhängig ist.
  • Wie oben erwähnt, kann in einigen Beispielen der verschiebbare Speicher die Verschiebung in einer im Wesentlichen konstanten Zeit gemäß einiger Beispiele der beschriebenen Prinzipien ausführen. Mit ”konstanter Zeit” ist gemeint, dass ein im Wesentlichen gleicher Zeitbetrag erforderlich ist, den fortlaufenden Teilsatz gespeicherter Daten unabhängig von der Länge des fortlaufenden Teilsatzes zu verschieben. So kann z. B. ein fortlaufender Teilsatz mir willkürlicher Länge in einem einzigen Taktzyklus gemäß einiger Beispiele verschoben werden. In einem weiteren Beispiel kann ein kürzerer fortlaufender Teilsatz nur einen einzigen Taktzyklus benötigen, während ein längerer fortlaufender Teilsatz zwei oder mehr Taktzyklen benötigt. Auch wenn der verschiebbare Speicher mehr Zeit für längere Teilsätze als für relativ kürzere Teilsätze benötigt, so wird die Verschiebung immer noch hinreichend schnell ausgeführt, so dass die Verschiebung als im Wesentlichen in konstanter Zeit ablaufend angesehen werden kann, da die erforderliche Zeit nicht streng proportional zu der Länge des fortlaufenden Teilsatzes gemäß einiger Beispiele ist.
  • Der Begriff ”Speicher” bezieht sich hier im Wesentlichen auf eine beliebige Art von Speicher, der Daten empfangen und speichem kann. Der Speicher ist im Allgemeinen übereinstimmend mit Speicher, der z. B. von einem Computerprozessor oder in einem Computersystem eingesetzt werden kann. Insbesondere bezieht sich Speicher, per Definition hierin, auf eine beliebige Art von Speicher, auf den während des Betriebs des Computers, der den Speicher einsetzt, geschrieben und von dem gelesen werden kann. Der Speicher kann z. B. Direktzugriffsspeicher (Random Access Memory oder RAM) umfassen. Der RAM kann z. B. statischer RAM (SRAM) sein. Andere Speichertypen umfassen, ohne hierauf beschränkt zu sein, dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory oder DRAM) und verschiedene Speicherbauformen, die auf Latches, Flip-Flops und anderen bistabilen Konstrukten (z. B. Memristoren) basieren.
  • Wie hier ebenfalls definiert, kann ein Speicher gemäß einiger Beispiele eine Vielzahl von Speicherzellen umfassen, die als Gruppierung (Array) angeordnet sind. Die Speicherzellen können z. B. als zweidimensionales (2D)-Gruppierung angeordnet sein. Es können auch Gruppierungen höherer Ordnung eingesetzt werden (z. B. drei oder mehr Dimensionen). In einigen Beispielen ist eine Gruppierung (z. B. eine lineare Gruppierung) auf einer Gruppierung mit einer höheren Dimension (z. B. 2D-Gruppierung) definiert. Die 2D-Gruppierungatter kann z. B. als eine rechtwinklige 2D-Gruppierung von Speicherzellen angeordnet sein, das Zeilen und Spalten (d. h. lineare Gruppierung) umfasst. Eine dreidimensionale (3D)-Anordnung der Speicherzellen kann gemäß einiger Beispiele mit einer Vielzahl benachbarter 2D-Gruppierungen realisiert werden. Außerdem können Gruppierungen in Untergruppierungen unterteilt werden. Eine rechtwinklige 2D-Gruppierung kann z. B. in Quadranten von vier Untergruppierungen unterteilt werden.
  • Eine Speicherzelle ist ein Schaltkreis oder ähnliches Konstrukt, der/das Daten hält oder speichert, wie hier definiert und eingesetzt. Weiter kann per Definition hier eine Speicherzelle allgemein ein oder mehrere ”Bits” von Daten speichern. Das Bit kann z. B. ein Binärwert (z. B. ”0” oder ”1”) sein oder diesen repräsentieren, und die Speicherzelle kann ein einziges Bit halten. In einem anderen Beispiel kann die Speicherzelle eine Vielzahl von Binärwert-Bits halten. Eine Speicherzelle kann 4, 8, 16, 32 oder 64 binäre Bits halten. Insbesondere kann die Speicherzelle ein vollständiges Datenwort halten oder speichern, das eine Vielzahl von Bits umfasst, wie hier definiert. In einem weiteren Beispiel kann die Speicherzelle Daten in einer anderen Form halten (z. B. einen Hexadezimalwert, einen Analogwert etc.). Insbesondere sind Speicherzellen, wie hier definiert, nicht auf das Speichern von Daten in einem binären Format beschränkt, sondem können in einigen Beispielen ein willkürliches Datenkonstrukt halten oder speichern. Für Diskussionszwecke werden Binärdaten und Speicherzellen, die ein einzelnes Datenbit halten, durchweg allgemein als Beispiele und nicht in einer beschränkenden Art verwendet, sofern dies nicht anders hervorgehoben wird.
  • Wie hier verwendet, ist eine ”Zeile” als eine Sammlung oder Gruppierung von Speicherzellen definiert, die in einer eindimensionalen (1D)-Gruppierung (z. B. linearer Gruppierung) angeordnet sind. Die 2D-Gruppierung kann z. B. eine Vielzahl von Zeilen umfassen, die in einer im Wesentlichen parallelen Weise angeordnet sind. Weiter kann hier eine Zeile, die eine Gruppierung von Speicherzellen umfasst, Daten halten (z. B. eine Vielzahl von Datenbits), die ein oder mehrere Datenworte eines bestimmten Computersystems darstellen. Gemäß verschiedener Beispiele liegen die Speicherzellen einer Zeile physikalisch benachbart zueinander. So kann z. B. eine erste Speicherzelle einer Zeile unmittelbar neben einer zweiten Speicherzelle der Zeile liegen und so weiter, vom Anfang (z. B. vom linken Ende) der Zeile bis zum Ende (z. B. zum rechten Ende) der Zeile. Eine Zeile kann eine relativ große Anzahl von Speicherzellen umfassen. So kann z. B. in verschiedenen praktischen Ausführungen gemäß der hier beschriebenen Prinzipien die Länge einer Zeile 1024 Datenbits, 2048 Datenbits, 4096 Datenbits oder mehr enthalten.
  • Speicherzellen werden hierin auch oft als ”Speicherorte” bezeichnet. Streng genommen ist ein Speicherort eine (mehrere) Speicherzelle(n) an einem bestimmten Ort in dem Speicher, wobei der Ort durch eine Adresse ausgewiesen oder identifiziert ist. Auf die Speicherzelle wird z. B. durch Verwenden der Adresse zugegriffen. Zur Vereinfachung der Diskussion hierin wird jedoch auf Speicherzellen allgemein Bezug genommen, dass sie eine Adresse haben oder an einer Adresse sind. Adressen oder Orte können z. B. mit einer verschiebbaren Einheit (z. B. einem Datenwort oder einem Satz von Datenworten) des verschiebbaren Speichers verbunden sein. Somit können hier ”Ort” und Adresse austauschbar verwendet werden. Außerdem kann ”Ort” gemäß einiger Beispiele verwendet werden, um auf einen Ort eines fortlaufenden Datenteilsatzes zu verweisen, der durch eine Startadresse und eine Endadresse ausgewiesen ist. In anderen Beispielen kann der Ort des fortlaufenden Teilsatzes durch eine Start-(oder End)-Adresse und eine Länge des fortlaufenden Teilsatzes ausgewiesen sein. In weiteren Beispielen umfasst der fortlaufende Teilsatz im Wesentlichen alle Daten in einer Zeile. Somit kann der fortlaufende Teilsatz als Zeile (z. B. eine Adresse einer ersten Speicherzelle der Zeile) ausgewiesen sein, ohne auf ein Adressenpaar oder eine Adresse und eine Länge zurückzugreifen.
  • Weiter, wie oben angemerkt, ist eine Verschiebung, die durch einen verschiebbaren Speicher ausgeführt wird, als eine laterale Umsetzung eines fortlaufenden Teilsatzes von Daten definiert, die in dem verschiebbaren Speicher gespeichert sind, sofern dies nicht anders deutlich festgelegt ist. Insbesondere stellt eine Verschiebung unter Verwendung eines verschiebbaren Speichers die laterale Umsetzung (z. B. nach links oder rechts in einer Zeile) der gespeicherten Datenbits in dem fortlaufenden Teilsatz von einem ersten Ort an einen zweiten Ort in der Zeile innerhalb des verschiebbaren Speichers dar. Weiter setzt die Verschiebung, wenn sie auf den fortlaufenden Teilsatz gespeicherter Daten angewendet wird, alle gespeicherten Daten in dem fortlaufenden Teilsatz um. Weiter erzeugt per Definition hierin die Verschiebung durch einen verschiebbaren Speicher keine laterale Umsetzung oder keine Verschiebung von Daten außerhalb des fortlaufenden Teilsatzes von Daten, die in die Verschiebung involviert sind. Allgemein kann die Verschiebung Daten über eine Entfernung von ein oder mehreren Speicherorten oder Speicheradressen in der Zeile bewegen. D Verschiebung kann z. B. die Daten eines einzigen Speicherorts nach rechts oder nach links innerhalb der Zeile bewegen. In einem weiteren Beispiel kann die Verschiebung Daten zwei oder mehrere Speicherorte entweder nach rechts oder nach links bewegen.
  • Die Richtung ”nach links” ist hier in Bezug auf Speicherorte entlang einer Zeile innerhalb eines verschiebbaren Speichers als eine Richtung hin zu Orten mit im Allgemeinen kleineren Adressen definiert. Die Richtung ”nach rechts” ist als eine Richtung entlang einer Zeile hin zu Orten mit im Allgemeinen größeren Adressen definiert. Somit ist eine ”Linksverschiebung” gemäß einiger Beispiele als eine Verschiebung der Daten an einen zweiten Ort in der Zeile definiert, der eine kleiner Adresse als die Adresse eines ersten oder Startorts in der Zeile aufweist. Umgekehrt ergibt eine ”Rechtsverschiebung” gemäß einiger Beispiele eine Bewegung der Daten in der Zeile von einem ersten Ort mit einer kleineren Adresse zu einem zweiten Ort mit einer größeren Adresse. Während jedoch die Verschiebe-Richtung gemäß einiger Beispiele steuerbar oder wählbar ist, kann die Verschiebe-Richtung (z. B. nach rechts oder links) vollkommen willkürlich sein, wie hier eingesetzt. Weiter erfolgt der Gebrauch von ”Linksverschiebung” und ”Rechtsverschiebung” sowie Erwähnung der kleineren oder größeren Adresse hier nur für Diskussionszwecke und nicht als Beschränkung.
  • 1A zeigt ein Beispiel einer Rechtsverschiebung eines fortlaufenden Teilsatzes von Daten gemäß eines Beispiels der hier beschriebenen Prinzipien, die in einer horizontalen Zeile innerhalb eines verschiebbaren Speichers gespeichert sind. Insbesondere zeigt 1A eine Vielzahl von Speicherzellen, von denen jede ein Datenbit speichem kann. Die Datenbits, die in der Speicherzelle gespeichert sind, umfassen ein Binärbit (z. B. entweder eine ”1” oder eine ”0”). Weiter wird, wie dargestellt, jede der dargestellten Speicherzellen durch eine Dezimaladresse definiert, die von 00 bis 11 geht. Ein oberer Teil von 1A zeigt eine Vielzahl von Speicherzellen vor der Rechtsverschiebung, wobei ein unterer Teil die gleiche Vielzahl von Speicherzellen nach der Rechtsverschiebung zeigt.
  • Wie in 1A gezeigt, umfasst die beispielhafte Rechtsverschiebung innerhalb des verschiebbaren Speichers das Auswählen eines fortlaufenden Teilsatzes gespeicherter Datenbits, das z. B. mit einer Speicherzelle bei Adresse 03 beginnt und mit einer Speicherzelle bei Adresse 07 endet. Der ausgewählte Teilsatz umfasst die Datenbits {”1”, ”0”, ”1”, ”1”, ”1”) in dem dargestellten Beispiel. Der verschiebbare Speicher verschiebt dann den ausgewählten fortlaufenden Teilsatz von Datenbits durch Bewegen der gespeicherten Datenbits zu dem rechten Adressort, wie im unteren Teil von 1A dargestellt. Die Rechtsverschiebung erhält die Reihenfolge der Datenbits innerhalb des fortlaufenden Teilsatzes und legt den fortlaufenden Teilsatz in Speicherzellen zwischen Adresse 04 und Adresse 08 ab. Rechtsverschieben der gespeicherten Daten überschreibt die Inhalte einer Speicherzelle unmittelbar rechts eines ursprünglichen Orts des fortlaufenden Teilsatzes (d. h. bei Adresse 08) und ersetzt die Inhalte dieser Speicherzelle durch ein letztes Datenbit (d. h. ”1”) des rechtsverschobenen fortlaufenden Teilsatzes. Weiter wird die Speicherzelle bei Adresse 03, die ursprünglich das erste Datenbit des fortlaufenden Teilsatzes hielt, unbestimmt belassen, wie durch das ”X” angezeigt. Gemäß verschiedener Beispiele kann die Speicherzelle als Folge der Rechtsverschiebung bei Adresse 03 eine Kopie des Datenbits (z. B. ”1”) behalten, die vor der Rechtsverschiebung vorhanden war, oder sie kann gelöscht werden (z. B. auf ”0” gesetzt werden). In einigen Beispielen kann die Speicherzelle bei Adresse 03 z. B. für das Einfügen eines Datenbits von einer externen Quelle verfügbar sein.
  • 1B zeigt ein Beispiel einer Linksverschiebung eines fortlaufenden Teilsatzes von Daten gemäß eines Beispiels der hier beschriebenen Prinzipien, die in einer Zeile innerhalb eines verschiebbaren Speichers gespeichert sind. Insbesondere zeigt 1B eine Vielzahl von Speicherzellen, von denen jede ein Datenbit speichert (z. B. ”1”, ”0”, ”0”, ”1”, ”0” etc.). Weiter ist gezeigt, dass jede Speicherzelle durch eine Adresse identifiziert wird, die von 00 bis 11 gehen. Ein oberer Teil von 1B zeigt die Vielzahl von Speicherzellen vor der Linksverschiebung, während eine unterer Teil die gleiche Vielzahl von Speicherzellen nach der Linksverschiebung veranschaulicht.
  • Wie in 1B dargestellt, umfasst die Linksverschiebung in dem verschiebbaren Speicher das Auswählen eines fortlaufenden Teilsatzes gespeicherter Datenbits, die z. B. mit einer Speicherzelle bei Adresse 04 beginnen und mit einer Speicherzelle bei Adresse 07 enden. Der verschiebbare Speicher verschiebt der ausgewählte fortlaufende Teilsatz dann durch Bewegen der Datenbits in dem ausgewählten fortlaufenden Teilsatz nach links, wie im unteren Teil der 1B dargestellt. Die Linksverschiebung erhält die Reihenfolge der Worte innerhalb des fortlaufenden Teilsatzes und legt der fortlaufende Teilsatz in Speicherzellen zwischen Adresse 03 und Adresse 06 ab. Das Linksverschieben der gespeicherten Daten überschreibt die Inhalte einer Speicherzelle unmittelbar links eines ursprünglichen Ortes des fortlaufenden Teilsatzes (d. h. bei Adresse 03), wobei die Inhalte dieser Speicherzelle mit einem ersten Datenbit (d. h. ”0”) des linksverschobenen fortlaufenden Teilsatzes ersetzt werden.
  • Weiter wird die Speicherzelle bei Adresse 07, die ursprünglich das letzte Datenbit des fortlaufenden Teilsatzes hielt, unbestimmt belassen, wie durch das ”X” angezeigt. Gemäß verschiedener Beispiele kann die Speicherzelle bei Adresse 07 eine Kopie des Datenbits (z. B. ”1”) behalten, die vor der Rechtsverschiebung vorhanden war, oder sie kann nach der Linksverschiebung gelöscht werden (z. B. auf ”0” gesetzt werden). In einigen Beispielen kann die Speicherzelle bei Adresse 07 z. B. für das Einfügen von Daten von einer externen Quelle verfügbar sein.
  • Gemäß verschiedener Beispiele kann der verschiebbare Speicher ein Teil eines Hauptspeichers eines Universalcomputersystems sein. Der verschiebbare Speicher kann z. B. ein Teilsatz des Speichers darstellen, der den Hauptspeicher ausmacht. Weiter, gemäß verschiedener Beispiele, unterscheidet sich der verschiebbare Speicher von Speicherzellen, Cache und anderen relativ kleinen Speicherstrukturen, die sich oft integriert mit anderen Komponenten (z. B. einer arithmetischen Logikeinheit, Steuerung etc.) z. B. in einem Mikroprozessor finden. Insbesondere ist der verschiebbare Speicher per Definition hierin gemäß verschiedener Beispiele Teil des Hauptspeichers und als solcher getrennt von einem Prozessor eines Universalcomputersystems oder eines ähnlichen Verarbeitungssystems. Außerdem umfasst ein verschiebbarer Speicher gemäß einiger Beispiele typischerweise eine Größenordnung mehr oder mehr Speicher als in einem Prozessor vorhanden ist oder vorhanden sein kann. Ein verschiebbarer Speicher kann viele Megabyte oder sogar Gigabyte Speicher umfassen, wohingegen Prozessorspeicher typischerweise auf weniger als ein paar Zig Byte (z. B. Prozessorregister) bis auf ein paar Megabyte (z. B. L1 Cache, L2 Cache etc.) begrenzt sein kann. Gemäß einiger Beispiele kann der verschiebbare Speicher eine spezialisierte Partition des Hauptspeichers oder eines Untersystems davon sein.
  • Weiter, wie hier verwendet, ist der Artikel ”ein/e/r” in seiner üblichen Bedeutung im Patentwesen zu verstehen, nämlich als ”ein oder mehrere”. So bedeutet z. B. ”eine Speicherzelle” eine oder mehrere Speicherzellen und somit bedeutet ”die Speicherzelle” hierin ”die Speicherzelle(n)”. Auch jeder Bezug auf ”oben”, ”unten”, ”obere”, ”nach oben”, ”nach unten”, ”vorne”, ”hinten”, ”links” oder ”rechts) ist hier nicht als beschränkend zu verstehen. Der Begriff ”ca.”, wenn er auf einen Wert bezogen ist, bedeutet allgemein innerhalb des Toleranzbereichs der verwendeten Ausrüstung, mit der der Wert bestimmt wurde, oder in einigen Beispielen plus oder minus 10% oder plus oder minus 5% oder plus oder minus 1%, sofem nicht ausdrücklich anders spezifiziert. Weiter sind Beispiele hierin nur als veranschaulichend zu verstehen und werden nur zu Diskussionszwecken dargestellt, nicht jedoch als beschränkend.
  • 2 zeigt ein Blockdiagramm eines verschiebbaren Speichers 100, der Zeilenverschiebung gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien einsetzt. Die Zeilenverschiebung des verschiebbaren Speichers 100 bewegt oder verschiebt Daten entlang einer Zeile des verschiebbaren Speichers 100 gemäß verschiedener Beispiele. In einigen Beispielen verschiebt die Zeilenverschiebung alle Daten in der Zeile. Weiter sind die Daten, die durch Zeilenverschiebung verschoben werden, ein fortlaufender Teilsatz der Daten in dem verschiebbaren Speicher 100. Insbesondere verschiebt die Zeilenverschiebung gemäß verschiedener Beispiele nur die Daten des fortlaufenden Teilsatzes, wobei die Daten außerhalb des fortlaufenden Teilsatzes nicht verschoben werden.
  • Wenn z. B. die gesamte Zeile durch Zeilenverschiebung innerhalb des verschiebbaren Speichers 100 verschoben wird, umfasst der fortlaufende Teilsatz die gesamte Zeile, die verschoben wird, und nur Daten innerhalb dieser Zeile werden verschoben. Wenn jedoch die Zeilenverschiebung nur einen Teil der Daten in einer Zeile verschiebt, kann z. B. der fortlaufende Teilsatz nur den verschobenen Teil umfassen, wohingegen ein übriger Teil der Daten in der Zeile (d. h. wenngleich außerhalb des fortlaufenden Teilsatzes) nicht verschoben wird. In weiteren Beispielen kann sich der fortlaufende Teilsatz über mehr als eine einzelne Zeile erstrecken.
  • Gemäß einiger Beispiele umfasst der verschiebbare Speicher 100 eine Gruppierung von Speicherzellen 110. Insbesondere sind gemäß einiger Beispiele die Speicherzellen 110 der Gruppierung in einer Vielzahl von Zeilen 112 angeordnet. Die Zeilen 112 der Vielzahl kann benachbart und im Wesentlichen parallel zueinander angeordnet sein, so dass sie eine 2D-Gruppierung bilden, wie z. B. dargestellt. Außerdem sind die Speicherzellen 110 der Gruppierung gemäß einiger Beispiele weiter in einer Vielzahl von Spalten 114 angeordnet. So können z. B. die Spalten 114 benachbart und im Wesentlichen parallel zueinander angeordnet sein. Die Zeilen 112 und die Spalten 114 schneiden sich gemäß verschiedener Beispiele. So können z. B. die Zeilen 112 waagerecht und die Spalten 114 senkrecht zueinander verlaufen, wie in 2 dargestellt. Weiter ist gemäß verschiedener Beispiele eine bestimmte Speicherzelle 110 sowohl in einer bestimmten Zeile 112 als auch in einer bestimmten Spalte 114 des verschiebbaren Speichers 100 angeordnet und damit Mitglied beider. Weiter können einzelne Speicherzellen 110 gemäß verschiedener Beispiele bezeichnet oder adressiert werden, in welcher Zeile 112 und in welcher Spalte 114 die Speicherzelle 110 angeordnet ist.
  • So kann z. B., wie dargestellt, eine erste Speicherzelle 110 in einer ersten Zeile 112' und einer ersten Spalte 114' angeordnet sein. Eine zweite Speicherzelle 110 kann z. B. in der ersten Zeile 112', aber in der zweiten Spalte 114'' angeordnet sein. In einem weiteren Beispiel kann eine dritte Speicherzelle 110 in der ersten Spalte 114', aber in einer zweiten Zeile 112'' angeordnet sein, während eine vierte Speicherzelle 110 in der zweiten Zeile 112'' als auch in der zweiten Spalte 114'' angeordnet sein kann. Wie dargestellt, befindet sich jede Speicherzelle 110 entlang einer gegebenen Zeile 112 in einer anderen aus einer Vielzahl von Spalten 114. Entsprechend befindet sich jede Speicherzelle entlang einer bestimmten Spalte 114 in einer anderen Zeile 112 aus der Vielzahl von Zeilen 112.
  • Gemäß verschiedener Beispiele besitzt jede Spalte 114 Eingangsport, -verbindung oder -weg (d. h. ”Eingang”) und Ausgangsport, -verbindung oder -weg (d. h. Ausgang). Der Ausgang einer Spalte 114 kann dazu verwendet werden, Daten aus einer Speicherzelle 110 der Spalte 114 zu kommunizieren oder zu übertragen. Die Daten, die heraus übertragen werden, können z. B. Daten sein, die von der Speicherzelle 110 gespeichert wurden. Der Eingang einer Spalte 114 kann dazu verwendet werden, Daten in eine Speicherzelle 110 der Spalte 114 zu übertragen. So können z. B. die Daten, die in die Speicherzelle 110 übertragen wurden, von der Speicherzelle 110 empfangen und gespeichert werden. Die empfangenen und gespeicherten Daten können gemäß einiger Beispiele Daten, die bereits von der Speicherzelle 110 gespeichert wurden, überschreiben oder anderweitig ersetzen. In einigen Beispielen können der Eingang und der Ausgang eine gemeinsame oder geteilte Verbindung oder ein gemeinsamer oder geteilter Weg sein. So können z. B. alle Speicherzellen 110 einer Spalte 114 an einen Bus, eine Leitung oder ein Kabel angeschlossen sein, die als Eingang und/oder Ausgang der Spalte 114 dienen. In einem anderen Beispiel sind ein Eingang und ein Ausgang einer Spalte 114 getrennte Verbindungen oder Wege.
  • Insbesondere sind, wie in 2 dargestellt, die Speicherzellen 110 einer Spalte 114 gemeinsam an eine Bitleitung 116 angeschlossen, die sowohl als Eingang als auch als Ausgang der Spalte 114 dient. Die Bitleitung der Spalte 114 kann z. B. verwendet werden, um Daten von Speicherzellen 110 der Spalte 114 zu lesen (d. h. Daten heraus zu übertragen) und Daten auf Speicherzellen 110 der Spalte zu schreiben (d. h. Daten hinein zu übertragen). In einigen Beispielen (nicht dargestellt) umfasst die Bitleitung 116 ein Paar Bitleitungen. Das Paar Bitleitungen 116 kann z. B. ein differenzielles Paar sein, in dem Daten in der Bitleitung als Differenz (z. B. eine Spannungsdifferenz) zwischen den Bitleitungen 116 des differenziellen Paars dargestellt werden. Weiter kann das Paar gemäß einiger Beispiele (z. B. siehe unten in Bezug auf SRAM) sowohl als Eingang wie auch als Ausgang einer Spalte 114 dienen, wenn ein Paar Bitleitungen 116 in einigen Beispielen eingesetzt werden.
  • Gemäß einiger Beispiele ist zu einem bestimmten Zeitpunkt nur eine einzige Speicherzelle 110 einer Spalte 112 aktiv mit der Bitleitung 116 von Spalte 114 verbunden, während andere Speicherzellen 110 der Spalte 114 zu diesem bestimmten Zeitpunkt im Wesentlichen getrennt sind. Es kann z. B. ein Transistor, der als Schalter wirkt, Verbindung mit bzw. Trennung von der Bitleitung 116 bewirken. Wenn auf eine Speicherzelle 110 zugegriffen oder diese aktiviert wird, wird der Transistorschalter eingeschaltet, um die Speicherzelle 110 mit der Bitleitung 116 zu verbinden. Verbindung der Speicherzelle 110 an die Bitleitung überträgt entweder Daten, die in der Speicherzelle 110 gespeichert sind, an die Bitleitung 116 (d. h. die gespeicherten Daten werden auf die Bitleitung 116 ”gelegt”) oder sie überträgt Daten von der Bitleitung 116 auf die Speicherzelle 110 zum Speichern darin.
  • Übertragen von Daten von der Speicherzelle 110 auf die Bitleitung 116 wird hier oft als ”Lesen” von Daten oder als Ausführen eines ”Lesevorgang” bezeichnet, wohingegen Übertragen von Daten von der Bitleitung 116 in die Speicherzelle 110 zum Speichem hier oft als ”Schreiben” von Daten oder als Ausführen eines ”Schreibvorgangs” bezeichnet wird. In einigen Beispielen (nicht dargestellt) wird eine Schreibfreigabe-Steuerleitung verwendet, um zu steuem, ob Daten an die Bitleitung 116 übertragen werden (Lesen) oder Daten von der Bitleitung 116 in die Speicherzelle 110 (Schreiben) übertragen und gespeichert werden. Die Schreibfreigabe kann gemäß verschiedener Beispiele Funktionalität sein, die in die Speicherzellen 110 selbst eingebaut ist (z. B. wie dargestellt), oder sie kann Funktionalität sein, die von der Spalte 114 bereitgestellt wird.
  • In einigen Beispielen sind die Speicherzellen 110 einer Zeile 112 gemeinsamen mit einer Wortleitung 118 verbunden. In einigen Beispielen definiert die Verbindung mit einer Wortleitung 118 im Wesentlichen eine Zeile 112. Wie in 2 dargestellt, greift eine bestimmte Wortleitung 118 auf alle Speicherzellen 110 einer bestimmten Zeile 118 zu. Weiter hat z. B. jede Zeile 112 eine gesonderte Wortleitung 118, so dass auf einzelne Zeilen 112 ohne Zugriff auf andere Zeilen 112 zugegriffen werden kann. Angenommen, dass Wortleitung 118 einer bestimmten Zeile 112 (z. B. Einstellen einer Logik auf ”hoch”) auf die Speicherzellen 110 zugreift oder diese aktiviert, die mit dieser Zeile 112 verbunden sind. Zugriff auf oder Aktivieren der Speicherzellen 110 einer Zeile 112 kann z. B. verwendet werden, um entweder Daten zu lesen, die zuvor in den Speicherzellen 110 der Zeile 112 gespeichert wurden, oder um Daten in die Speicherzellen 110 der Zeile 112 zu schreiben.
  • In einigen Beispielen umfasst die Speicherzelle 110 eine Statischer-Direktzugriffsspeicher-(Static Random Access Memory- oder SRAM-)Speicherzelle 200. 3A zeigt eine schematische Darstellung einer beispielhaften SRAM-Speicherzelle 200 gemäß eines Beispiels gemäß den hier beschriebenen Prinzipien. Die SRAM-Speicherzelle 200, dargestellt in 3A, umfasst sechs Transistoren 202. Die SRAM-Speicherzelle 200 ist so gestaltet, dass sie über eine Schnittstelle mit einem Paar differenzieller Bitleitungen 116 über ein Paar Transistoren 202a und 202b verbunden ist. Die differenziellen Bitleitungen 116 stellen Signale dout und
    Figure DE112011105706T5_0002
    als differenzielle Ausgänge oder Signale din und
    Figure DE112011105706T5_0003
    als differenzielle Eingänge an die SRAM-Speicherzelle 200 bereit, wie dargestellt. Gatter des Paars Transistoren 202a und 202b sind mit einer Wortleitung 118 verbunden, die von einem Wortleitungssignal W getrieben werden kann. Die SRAM-Speicherzelle 200 wird durch eine Verbindung mit einer Spannungsquelle VDD, wie dargestellt, mit Energie versorgt.
  • Angenommen, das Wortleitungssignal W aktiviert das Paar Transistoren 202a und 202b, die SRAM-Speicherzelle 200 mit den Bitleitungen 116 zu verbinden. Insbesondere schaltet gemäß einiger Beispiele ein Wortleitungssignal W, das eine Logik ”hoch” an der Wortleitung 118 darstellt, das Paar Transistoren 202a und 202b ein oder aktiviert diese. Die Transistoren 202a und 202b des Paars wirken als ein Paar Schalter, wenn sie aktiviert werden, um verbleibende vier Transistoren 202 der SRAM-Speicherzelle 200 mit den Bitleitungen 116 zu verbinden. Die Verbindung, die von den aktivierten Transistoren 202a und 202b bereitgestellt wird, ermöglicht entweder, dass Daten, die von den übrigen vier Transistoren 202 der SRAM-Speicherzelle 200 gespeichert wurden, an die Bitleitungen 116 übertragen werden, oder dass Daten (z. B. eine Spannung) in den Bitleitungen 116 an die verbleibenden vier Transistoren 202 der SRAM-Speicherzelle 200 zur Speicherung durch diese Transistoren 202 übertragen werden.
  • In einigen Beispielen umfasst die Speicherzelle 110 eine Dynamischer-Direktzugriffsspeicher-(Dynamic Random Access Memory- oder DRAM-)Speicherzelle 210. 3B zeigt eine schematische Darstellung einer beispielhaften DRAM-Speicherzelle 210 gemäß eines Beispiels gemäß der her beschriebenen Prinzipien. Die DRAM-Speicherzelle 210 umfasst einen Transistor 212 und einen Kondensator 214, wie dargestellt. Eine Wortleitung 118 ist mit einem Gatter des Transistors 212 verbunden, um den Transistor zu aktivieren, wenn die Wortleitung 118 durchgesetzt wird. Insbesondere wirkt der Transistor 212 als Schalter, der den Kondensator mit einer Bitleitung 116 einer Spalte 114 verbindet, wenn eine Spannung an dem Gatter des Transistors 212 durch Durchsetzen eines Wortleitungssignals” an Wortleitung 118 angelegt wird. Die Verbindung, die von dem aktivierten Transistor 212 bereitgestellt wird, ermöglicht es entweder, dass Daten, die in der DRAM-Speicherzelle 210 (z. B. eine Spannung an dem Kondensator 214) gespeichert wurden, an die Bitleitungen durch den Transistor 212 übertragen werden oder dass Daten (z. B. eine Spannung) in den Bitleitungen 116 an den Kondensator 214 der DRAM-Speicherzelle 200 zur Speicherung darin übertragen werden.
  • Wieder mit Bezug auf 2 umfasst der verschiebbare Speicher weiter eine Verschiebelogik 120. Wie dargestellt, ist die Verschiebelogik 120 zwischen den Spalten 114 angeschlossen. Die Verschiebelogik 120 ist z. B. zwischen einer ersten Spalte 114' und einer zweiten Spalte 114'' des verschiebbaren Speichers 100 angeschlossen (oder z. B. zwischen einer Spalte 114 und einer Spalte 114', oder zwischen einer Spalte 114 und 114''). Gemäß einiger Beispiele kann der verschiebbare Speicher 100 eine Verschiebelogik 120 umfassen, die eine Vielzahl von Verbindungen zwischen Paaren oder sogar Sets von Spalten 114 bereitstellt. Die Verschiebelogik 120 von 2 stellt z. B. eine Verbindung zwischen anderen Paaren der Spalte 114 zusätzlich zu der zuvor erwähnten Verbindung zwischen der ersten Spalte 114' und der zweiten Spalte 114'' bereit. Da diese Verbindungen jedoch auf eine Weise funktionieren, die im Wesentlichen ähnlich der erste-an-zweite Spalte-Verbindung ist, kann die Diskussion hier der Einfachheit halber auf die erste-an-zweite Spalte-Verbindung beschränkt werden, ohne den allgemeinen Charakter zu verlieren.
  • Die Verschiebelogik 120 ist konfiguriert, Daten von einem Ausgang der ersten Spalte 114' zu einem Eingang der zweiten Spalte 114'' zu verschieben. So kann z. B. die in 2 dargestellte Verschiebelogik 120 konfiguriert werden, Daten von einer Bitleitung 116 zu der ersten Spalte 114' zu einer Bitleitung 116 einer zweiten Spalte 114'' zu verschieben. Gemäß verschiedener Beispiele werden die verschobenen Daten von einer Speicherzelle 110 der ersten Spalte 114' in einer ausgewählten Zeile 112 aus einer Vielzahl von Spalten bereitgestellt. Die ausgewählte Zeile 112 kann z. B. durch Durchsetzen der Wortleitung 118 von dieser Zeile 112 ausgewählt werden. Die verschobenen Daten werden von einer Speicherzelle 110 in der ausgewählten Zeile 112 der zweiten Spalte 114'' gemäß verschiedener Beispiele empfangen und gespeichert.
  • In einigen Beispielen können die verschobenen Daten zwischengespeichert (gelatched) oder anderweitig vorübergehend gespeichert werden, nachdem sie von der Speicherzelle 100 in der ausgewählten Zeile 112 der ersten Spalte 114' ausgegeben wurden, aber bevor sie durch die Verschiebelogik 120 an die Speicherzelle 110 in der ausgewählten Zeile 102 der zweiten Spalte 114'' bereitgestellt werden. Zwischenspeichem (Latchen) kann z. B. dazu verwendet werden, Ausgabe und Eingabe von Daten über eine Ein-Bit-Leitung (z. B. wie in 2 dargestellt) zu vereinfachen. Insbesondere kann Zwischenspeichern oder äquivalentes vorübergehendes Speichem der verschobenen Daten gemäß verschiedener Beispiele Konflikte vermeiden, die beim Versuch auftreten können, gleichzeitig Daten unter Verwendung der Bitleitung 116 zu lesen und zu schreiben. Wenn z. B. die gleiche Bitleitung 116 sowohl zur Eingabe als auch zur Ausgabe von den Speicherzellen 110 verwendet wird (z. B. wie im Gegensatz zu Speicherzellen mit getrennten Eingangs- und Ausgangskanälen), können die verschobenen Daten zwischengespeichert werden, die von der Speicherzelle 110 der ersten Spalte ausgegeben wurden, während die Speicherzelle 110 der zweite Spalte (z. B. die ebenfalls verschobene Daten für eine andere Speicherzelle bereitgestellt hat) vorbereitet wird, die verschobenen Daten zu empfangen und zu speichem. Sobald die Speicherzelle 110 der zweite Spalte vorbereitet ist, können die zwischengespeicherten verschobenen Daten freigegeben und von der Verschiebelogik 120 an die Speicherzelle 110 der zweiten Spalte übertragen werden.
  • In einigen Beispielen ist die Verschiebelogik 120 ein Schaltkreis, der in dem verschiebbaren Speicher 100 integriert ist. Die Verschiebelogik 120 kann z. B. als Vielzahl von Verschiebe-Schaltkreisen aufgefasst werden, die in einen Schaltkreis des verschiebbaren Speichers 100 eingebaut wurden. Die Verschiebe-Schaltkreise können z. B. in einen integrierten Schaltkreis des verschiebbaren Speichers integriert sein. Die Verschiebe-Schaltkreise der Vielzahl kann zwischen der Bitleitung 116 der ersten Spalte 114' und der Bitleitung 116 der zweiten Spalte 114'' verbunden sein, um Daten zu verschieben, die von der ersten Spalte 114' in die zweite Spalte 114'' ausgegeben wurden. Die verschobene Daten können z. B. in einer Speicherzelle 100 in einer ausgewählten Zeile 112 der zweiten Spalte 114'' gespeichert werden, wenn sie von den Verschiebe-Schaltkreisen verschoben werden. In einigen Beispielen kann die Verschiebelogik 120 einen Zwischenspeicher (Latch) umfassen, um die verschobenen Daten vorübergehend zu speichern. In anderen Beispielen, wenn Wellen-Pipeline-Verarbeitung (Wave-Pipelining) eingesetzt wird, um Daten zu lesen und zu verschieben, kann ein entsprechendes Zwischenspeichern an Bitleitung 116 entfallen.
  • In einigen Beispielen liegen die erste Spalte 114' und die zweite Spalte 114'' zueinander benachbart. Die erste Spalte 114' und die zweite Spalte 114'' sind z. B. als zueinander benachbart in 2 gezeigt. Wenn die erste und zweite Spalte 114' und 114'' zueinander benachbart angeordnet sind, kann z. B. eine Verschiebung von Daten durch den verschiebbaren Speicher zu einer Bewegung von Daten in der ausgewählten Zeile 112 durch ein einziges Datenbit pro Verschiebung (z. B. ein einziger Speicherort) führen. Verschiebungen von mehr als einem Bit können durch Wiederholen der Verschiebung gemäß einiger Beispiele erzielt werden. Ein Verschiebe-Abstand von einem Datenwort (z. B. 8 Datenbits) kann z. B. durch 8 Ein-Bit-Verschiebungen erzielt werden.
  • In anderen Beispielen können die erste und die zweite Spalte 114' und 114'' durch ein oder mehrere Spalten getrennt sein, so dass sich ein Verschiebe-Abstand von mehr als einem Datenbit ergibt. Insbesondere kann gemäß einiger Beispiele eine Anzahl von Spalten zwischen der ersten Spalte 114' und der zweiten Spalte 114'' in einem Bereich von Null (z. B. für benachbarte Spalten 114) bis zu einem Wert liegen, der kleiner als die Gesamtzahl von Spalten 114 des verschiebbaren Speichers 100 ist. Ein Abstand zwischen der ersten Spalte 114 und der zweiten Spalte 114'' kann z. B. einen Verschiebe-Abstand von einem Datenbit oder zwei, drei, vier usw. Datenbits darstellen (nicht gezeigt). Weiter kann der Verschiebe-Abstand wählbar sein. Die Verschiebelogik 120 kann insbesondere die Auswahl der Anzahl von Spalte 114 zwischen der ersten Spalte 114' und der zweiten Spalte 114'' bereitstellen. Die wählbare Anzahl von Spalten 114 kann z. B. in einem Bereich von Null bis zu einem Wert liegen, der kleiner als die Gesamtzahl der Spalten 114 in dem verschiebbaren Speicher 100 ist (wie oben erwähnt).
  • In einigen Beispielen kann eine Richtung der Verschiebung eine Linksverschiebung und/oder eine Rechtsverschiebung bereitstellen. Insbesondere kann die Verschiebelogik konfiguriert werden, die Daten in eine Richtung entlang der gewählten Zeile 112 zu verschieben, die entweder zum Anfang (z. B. einem linken Ende) der ausgewählten Zeile oder zum Ende (z. B. einem rechten Ende) der ausgewählten Zeile 112 weist. Pfeile, die eine Richtung des Datenflusses in 2 zeigen, veranschaulichen die Fähigkeit der Verschiebelogik 120, sowohl eine Linksverschiebung wie auch eine Rechtsverschiebung bereitzustellen. In einigen Beispielen ist die Verschiebe-Richtung der Verschiebelogik 120 entweder als Linksverschiebung oder als Rechtverschiebung festgelegt. In anderen Beispielen kann die Verschiebe-Richtung in situ gewählt werden. Die Verschiebelogik 120 kann z. B. einen Steuereingang haben, der u. a. die Verschiebe-Richtung bestimmt (d. h. Links- oder Rechtsverschiebung).
  • In einigen Beispielen umfasst die Verschiebelogik 120 einen Multiplexer. Der Multiplexer kann so angeschlossen werden, dass er z. B. selektiv Daten von einer ersten Spalte 114' zu einer zweiten Spalte 114'' routen kann. 4A zeigt eine schematische Darstellung der Verschiebelogik 120, die gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien einen Multiplexer 122 umfasst. Wie gezeigt, besitzt der Multiplexer 122 einen Eingang, um Daten von einem Ausgang oder einer Bitleitung 116 der ersten Spalte 114' zu empfangen. Der Eingang des Multiplexers 122 kann z. B. mit einem Ausgang eines Leseverstärkers 130 (weiter unten beschrieben) der ersten Spalte 114' verbunden sein. Ein anderer Eingang der Multiplexers 122 kann mit einem externen Datenport des verschiebbaren Speichers 100 verbunden sein, um z. B. Daten von einer externen Bezugsquelle zu empfangen. Weiter ist, wie gezeigt, ein Ausgang des Multiplexers 122 angeschlossen, um Daten zu einem Eingang oder einer Bitleitung 116 der zweiten Spalte 114'' zu leiten. Der Ausgang des Multiplexers 122 kann z. B. verbunden sein, um Daten zu der Bitleitung 116 der zweiten Spalte 114'' über einen Eingang eines Bitleitungstreibers (weiter unten beschrieben) der zweiten Spalte 114'' zu leiten.
  • Wie gezeigt, ist der Multiplexer 122 konfiguriert, um zwischen externen Bezugsdaten dein und Daten zu selektieren, die durch die Bitleitung 116 der ersten Spalte 114' bereitgestellt werden. Weiter ist der Multiplexer konfiguriert, die ausgewählten Daten zu dem Eingang (z. B. zu Bitleitung 116) der zweiten Spalte 114'' zum Speichem in der Speicherzelle 110 in der zweiten Spalte 112 (nicht gezeigt in 4A) der zweiten Spalte 114'' zu routen.
  • Gemäß einiger Beispiele ist die erste Zeile 114' näher am Anfang der ausgewählten Zeile 112 als die zweite Spalte 114''. In diesen Beispielen stellt die von Multiplexer 122 ausgeführte Verschiebung eine Rechtsverschiebung dar. In anderen Beispielen ist die erste Spalte 114' näher am Ende (z. B. rechten Ende) der ausgewählten Zeile als die zweite Spalte 114'', so dass die von Multiplexer 122 ausgeführte Verschiebung eine Linksverschiebung darstellt. Steuerung des Multiplexers 122 (d. h. welcher Eingang gewählt wird) wird von einem Verschiebe-Signal bereitgestellt, wie in 4A dargestellt. Datenausgang durch die erste und zweite Zeile 114' und 114'' kann z. B. auch durch einen Ausgang daus für exteme Verwendung bereitgestellt werden.
  • 4B zeigt eine schematische Darstellung der Verschiebelogik 120, die einen Multiplexer 122 gemäß eines anderen Beispiel gemäß der hier beschriebenen Prinzipien umfasst. Insbesondere, wie in 4B gezeigt, besitzt der Multiplexer 122 drei Eingänge. Ein erster Eingang ist verbunden, um Daten von der Bitleitung 116 der ersten Spalte 114' zu routen, wie oben beschrieben. Ähnlich ist ein zweiter Eingang mit einem externen Datenport (z. B. dein) des verschiebbaren Speichers 100 verbunden, wie oben beschrieben. Ein dritter Eingang des Multiplexers 122 ist verbunden, um Daten von einer Bitleitung einer dritten Spalte 114''' auf einer Seite der zweiten Spalte 114'' gegenüber der der ersten Spalte 114' zu empfangen, wie in 4B gezeigt. Der dritte Eingang kann mit einem Ausgang eines Leseverstärkers 130 einer dritten Spalte 114''' verbunden sein.
  • Wie gezeigt, kann z. B. die Auswahl des ersten Eingangs durch den Multiplexer 122 eine Rechtsverschiebung von Daten bewirken (z. B. die Daten nach rechts zu bewegen), während die Auswahl des dritten Eingangs eine Linksverschiebung der Daten (z. B. die Daten nach links zu bewegen) entlang der ausgewählten Zeile 112 (nicht gezeigt) erzielen kann. Das Verschiebe-Signal kann durch ein Paar Leitungen bereitgestellt werden, die die Auswahl zwischen den drei Eingängen ermöglichen, wie in 4B dargestellt.
  • In einigen Beispielen umfasst die Verschiebelogik weiter einen Zwischenspeicher (Latch) 124. Wie in 4A und 4B gezeigt, kann der Zwischenspeicher 124 entlang der Bitleitung 116 von dem Multiplexer 122 angeordnet sein. Der Zwischenspeicher 124 kann Datenausgang an Bitleitung 116 vorübergehend während eines Lesevorgangs gemäß einiger Beispiele speichern. Beim Verschieben kann der Zwischenspeicher 124 die Daten an Bitleitung 116 zu einem Multiplexer 122 einer nächsten Stufe gemäß einiger Beispiele weitergeben. Das Verschiebe-Signal kann z. B. verwendet werden, um den Zwischenspeicher 124 zu steuern, wie gezeigt.
  • Wieder mit Bezug auf 2 umfasst der verschiebbare Speicher 100 weiter einen Leseverstärker 130 und/oder einen Bitleitungstreiber 140. Wie gezeigt, sind der Leseverstärker 130 und der Bitleitungstreiber 140 zwischen der Vielzahl von Zeilen 112 der Speicherzellen 110 und der Verschiebelogik 120 angeordnet. Der Leseverstärker 130 kann z. B. als eine Ausgangsschnittstelle zwischen Speicherzellen 110 einer Spalte 114 und anderen Komponenten dienen (z. B. der Verschiebelogik 120), die mit Spalte 114 verbunden sind. Der Bitleitungstreiber 140 kann z. B. als Eingangsschnittstelle zwischen anderen Komponenten (z. B. der Verschiebelogik 120) und Speicherzellen 100 der Spalte 114 dienen.
  • Gemäß verschiedener Beispiele verstärkt der Leseverstärker 130 ein Signal, das von der Speicherzelle 110 der ausgewählten Zeile erzeugt wird. Der Leseverstärker 130 kann z. B. eine Spannung verstärken, die von der Speicherzelle 110 erzeugt wird, wenn sie aktiviert wird, und eine verstärkte Spannung als Ausgang einer Spalte 114 bereitstellten. Die Spannung kann z. B. auf ein Spannungsniveau verstärkt werden, das kompatibel mit ein oder mehreren der Verschiebelogik 130 oder anderen Komponenten ist, die über eine Schnittstelle mit dem verschiebbaren Speicher 100 und anderen Schaltkreisen des verschiebbaren Speichers 100 selbst verbunden sind.
  • In einigen Beispielen (z. B. DRAM) kann der Leseverstärker 130 auch das verstärkte Signal als ein Logikniveau (z. B. eine Logik ”0” oder ”1”) zwischenspeichern. Das verstärkte Signal einer DRAM-Speicherzelle kann z. B. zwischengespeichert werden, um einen stabilen Ausgang von Spalte 114 bereitzustellen, selbst wenn eine Spannung der DRAM-Speicherzelle (z. B. eine Spannung am Kondensator) mit der Zeit zusammenbricht. Der zwischengespeicherte Ausgang, der von dem Leseverstärker 130 bereitgestellt wird, kann z. B. auch die verschobenen Daten aus der ersten Spalte 114' halten, bis die Daten in die zweite Spalte 114'' geschrieben werden können. Gemäß einiger Beispiele kann ein Dreizustands-(Tri-State-)Puffer (nicht gezeigt) oder ein im Wesentlichen äquivalentes Bauteil an einem Ausgang des Leseverstärkers 130 eingesetzt werden, um den Leseverstärker gegen Downstream-Komponenten (z. B. einem Bitleitungstreiber) zu isolieren. Der Dreizustands-Puffer kann z. B. durch ein Verschiebe-Signal gesteuert werden, das als Freigabesignal wirkt.
  • Gemäß verschiedener Beispiele treibt der Bitleitungstreiber 149 eine Bitleitung 116 einer Spalte 114, um ein ausreichendes Eingangssignalniveau für die Speicherzellen 110 der Spalte bereitzustellen. Der Bitleitungstreiber 140 kann z. B. eine Spannung für die Bitleitung 116 bereitstellen, die ausreichend ist, den Zustand der Speicherzelle 110 der ausgewählten Zeile 112 zu ändern, wenn Daten von der Speicherzelle 110 zu speichern sind. In einigen Beispielen umfasst die Verschiebelogik 120 einen Multiplexer 122 (siehe z. B. 4A, 4B), der verbunden ist, um selektiv Daten, die an einem Ausgang des Leseverstärkers 130 der Bitleitung 116 der ersten Spalte 114' erzeugt wurden, an einen Eingang des Bitleitungstreibers 140 der Bitleitung 116 der zweiten Spalte 114'' zu rauten. Der Multiplexer 122 kann z. B. konfiguriert werden, um selektiv Daten zu routen, wenn Daten zu verschieben sind.
  • Mit Bezug zu 3A kann jede Spalte 114, die eine Vielzahl von SRAM-Speicherzellen 200 umfasst, einen Leseverstärker 130 und einen Spannungsausgleichschaltkreis 204 umfassen. In einigen Beispielen kann der Spannungsausgleichschaltkreis 204 als Teil des Leseverstärkers 130 umfasst sein. Der Leseverstärker 130, wie in 3A gezeigt, kann z. B. von einem Leseverstärkertreiber (nicht gezeigt) getrieben werden, der Treiberspannungen SAN und SAP bereitstellt. Der Spannungsausgleichschaltkreis 204 ist einem Signal EQ verbunden und wird von diesem angetrieben und wird durch eine Spannung VDD/2 mit Energie versorgt, wie gezeigt. Weiter noch kann jede Spalte 114 ein Paar Bitleitungstreiber 140 umfassen, wie gezeigt. Die Bitleitungstreiber 140 können mit den Bitleitungen 116 durch ein Paar Transistoren 208 verbunden sein. Der Transistor 208 kann z. B. durch ein Schreibfreigabe(WE)-Signal aktiviert werden. Die Bitleitungstreiber 140 können z. B. konfiguriert werden, die Bitleitungen 116 mit dem differenziellen Paar Eingangssignale din und
    Figure DE112011105706T5_0004
    zu treiben.
  • Wieder mit Bezug zu 2 wird der verschiebbare Speicher 100 in einem System bereitgestellt, das weiter eine Steuerung 150 gemäß einiger Beispiele umfasst. Die Steuerung 150 wählt gemäß verschiedener Beispiele Zeilen unter Verwendung von Wortleitungen 118, die mit den Spalten 112 in Zusammenhang stehen, und/oder steuert die Verschiebelogik 120, um das Verschieben zu vereinfachen. Die Steuerung 150 kann einen Decoder umfassen, der eine Adresse der Zeile 112 empfängt, die auszuwählen und zu verschieben ist. Die Zeilenadresse kann z. B. von einem System (z. B. einem Prozessor) empfangen werden, das extern zu dem verschiebbaren Speicher 100 angeordnet ist. Die Steuerung 150 kann weiter gemäß einiger Beispiele die Verschiebelogik 120 steuern. Die Steuerung 150 kann z. B. das Verschiebe-Signal (gezeigt in 4A und 4B) bereitstellen. Die Steuerung 150 kann weiter einen weiteren Decoder umfassen, der z. B. Teile der Verschiebelogik 120 auswählt, um das Verschieben nur eines Teils der Daten in der ausgewählten Zeile 112 zu beeinflussen. Die Steuerung kann weiter gemäß verschiedener Beispiele konfiguriert werden, eine Verschiebe-Richtung (z. B. Linksverschiebung vs. Rechtsverschiebung), einen Verschiebe-Abstand und/oder, ob oder ob nicht eine Verschiebung ausgeführt werden soll, zu steuern.
  • Gemäß verschiedener Beispiele kann der verschiebbare Speicher 100 konfiguriert werden, Daten gemäß Verschiebe-Abständen nach Datenwortgröße zu verschieben. Der verschiebbare Speicher 100 kann z. B. konfiguriert werden, Daten gemäß einer Datenwortgröße zu verschieben, die ein oder mehr aus 8-bit, 16-bit, 32-bit, 64-bit usw. ist. Eine Datenwortgröße kann von einem System definiert werden, das z. B. den verschiebbaren Speicher einsetzt. Gemäß einiger Beispiele werden Datenworte aufeinanderfolgend entlang Zeilen 112 des verschiebbaren Speichers 100 gespeichert. In diesen Beispielen kann eine Verschiebung nach Datenwortgröße durch eine Verschiebelogik erzielt werden, die Datenbits der Zeile 112 eines Abstands, der z. B. gleich der Datenwortgröße ist, verschiebt.
  • 5A zeigt ein schematisches Blockdiagramm eines Beispiels einer Verschiebung nach Wortgröße in dem verschiebbaren Speicher 100 gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien. Wie gezeigt, werden Datenbits in einer Zeile 112 der Speicherzellen 110 während der Verschiebung um 8 Bit (d. h. um 8 fortlaufende Speicherorte), entsprechend einem 8-Bit Datenwort (z. B. ”10110101”), durch die Verschiebelogik vorschoben. Ein Datenbit an einem ersten Speicherort der Zeile 12 kann durch die Verschiebelogik 120 zu einem achten Ort, ein Datenbit an einem zweiten Speicherort kann durch die Verschiebelogik 120 an einen neunten Speicherort usw. für das fortlaufende Set an Datenbits verschoben werden. Die Verschiebelogik 120, die eine erste Spalte 114' mit einer zweiten Spalte 114'' verbindet, die um acht Spalten 114 von der ersten Spalte 114' versetzt wird, kann z. B. dazu verwendet werden, die in 5A gezeigte Verschiebung zu erzielen. Die Verschiebung ist mit gekrümmten Pfeilen in 5A gezeigt.
  • 5B zeigt ein schematisches Blockdiagramm eines Beispiels einer Verschiebung nach Wortgröße in dem verschiebbaren Speicher 100 gemäß eines weiteren Beispiels gemäß der hier beschriebenen Prinzipien. Insbesondere ist, wie in 5B gezeigt, ein Datenwort über eine Vielzahl von Zeilen 112 verteilt. Weiter werden, wenn die Daten durch den verschiebbaren Speicher 100 verschoben werden, alle Zeilen 112 der in 5B gezeigten Vielzahl in einer im Wesentlichen gleichzeitigen Weise verschoben. Die Vielzahl von Zeilen 112 kann z. B. in getrennten, im Wesentlichen parallelen Gruppierungen (z. B. einer 3D-Gruppierung) des verschiebbaren Speichers 100 angeordnet sein. Die Datenbits des Datenworts werden um einen einzigen Speicherort (z. B. um eine Speicherzelle 110) entlang einer jeden der Zeilen 112 verschoben, wie mit gekrümmten Pfeilen in 5B gezeigt. Die Verschiebung ergibt sich jedoch durch Bewegen des Datenworts um einen vollen Wortgrößenabstand in dem Speicher, da das Datenwort über mehrere verschobene Zeilen 112 verteilt ist, die im Wesentlichen gleichzeitig verschoben werden. Die Verschiebelogik, die eine erste Spalte 114' mit einer benachbarten zweiten Spalte 114'' verbindet, kann z. B. verwendet werden, um die in 5B gezeigte Verschiebung zu erzielen. In einigen Beispielen können Daten als verschachtelte Datenblöcke mit wechselnder Granularität gespeichert werden, Steuerung der Verschiebung bereitzustellen. Weiter umfasst, wie in 5B gezeigt, der fortlaufende Teilsatz von Daten eine Vielzahl von fortlaufenden Teilsätzen, einen fortlaufenden Teilsatz für jede der Zeilen 112 der Vielzahl.
  • 5C zeigt ein schematische Blockdiagramm eines Beispiels für eine Verschiebung in dem verschiebbaren Speicher 100, der Neubelegen einsetzt, um einen Verschiebe-Abstand dynamisch gemäß eines weiteren Beispiels gemäß der hier beschriebenen Prinzipien zu steuern. Insbesondere kann Neubelegen verwendet werden, um einen Verschiebe-Abstand in einem verschiebbaren Speicher 100, der einen festen Verschiebe-Abstand aufweist, dynamisch gemäß einiger Beispiele zu ändern. Ein verschiebbarer Speicher 100 kann z. B. einen festen physikalischen Verschiebe-Abstand eines Speicherorts bereitstellen, wie durch gekrümmte Pfeile in 5C gezeigt. Wenn ein Set aufeinanderfolgender Daten in einer Zeile 112 einer einzigen ersten Gruppierung gespeichert ist, ist der Verschiebe-Abstand, der durch den verschiebbaren Speicher 100 bereitgestellt wird, gleich einem festen physikalischen Verschiebe-Abstand (z. B. einem Abstand von eins). Wenn jedoch die Daten neubelegt und in einem Paar Gruppierungen gespeichert werden, kann z. B. das Verschieben um einen festen physikalischen Abstand von einem Speicherort einen ”logischen” Verschiebe-Abstand von zwei bereitstellen.
  • Wie in 5C gezeigt, wird, wenn ein Satz fortlaufender Daten (z. B. numeriert ”1”, ”2”, ”3” usw.) neubelegt wird, so dass ungeradzahlige Datenbits in einer Zeile 112 einer ersten Gruppierung 502 und geradzahlige Bits in einer entsprechenden Zeile 112 einer zweiten Gruppierung 504 angeordnet sind, ein logischer Verschiebe-Abstand von zwei Speicherorten durch einen physikalischen Verschiebe-Abstand von einer Speicherzelle bereitgestellt. Neubelegen kann eingesetzt werden, um logische Verschiebe-Abstände durch Hinzufügen zusätzlicher Gruppierungen (nicht gezeigt) und Verteilen des Sets aufeinanderfolgender Daten über die hinzugefügten zusätzlichen Gruppierungen bereitzustellen. Weiter kann Neubelegen verwendet werden, um dynamisch einen Verschiebe-Abstand in einem eingesetzten verschiebbaren Speicher 100 zu ändern, der einen festen physikalischen Verschiebe-Abstand aufweist. Selektives Neubelegen kann z. B. durch Multiplexer auf Adressleitungen (nicht gezeigt) bereitgestellt werden, die die Gruppierungen steuern.
  • 6 zeigt ein Ablaufdiagramm eines Verfahrens 300, Daten in einem verschiebbaren Speicher gemäß eines Beispiels gemäß der hier beschriebenen Prinzipien zu verschieben. Wie gezeigt, umfasst das Verfahren 300 das Auswählen 300 einer Zeile von Speicherzellen des verschiebbaren Speichers. Gemäß verschiedener Beispiele sind die Speicherzellen des verschiebbaren Speichers als eine Vielzahl von Zeilen und als eine Vielzahl von Spalten angeordnet. Gemäß einiger Beispiele sind die Speicherzellen des verschiebbaren Speichers sowie der verschiebbare Speicher selbst im Wesentlichen jeweils ähnlich den Speicherzellen 110 und dem verschiebbaren Speicher 100, wie oben beschrieben.
  • Das Verfahren 300, Daten zu verschieben, umfasst weiter die Kommunikation 320 von Daten zwischen Spalten unter Verwendung von Verschiebelogik des verschiebbaren Speichers von einer ersten Spalte zu einer zweiten Spalte der Vielzahl. In einigen Beispielen verbindet die Verschiebelogik zwischen Verschiebe-Daten einer ersten Bitleitung der ersten Spalte mit einer Bitleitung der zweiten Spalte. Die kommunizierten Daten können z. B. Daten sein, die von einer Speicherzelle der ersten Spalte in der zweiten Zeile bereitgestellt werden. Gemäß einiger Beispiele kann die Verschiebelogik im Wesentlichen ähnlich der Verschiebelogik 120 sein, wie oben in Bezug auf den verschiebbaren Speicher 100 beschrieben.
  • Das Verfahren 300, Daten zu verschieben, umfasst weiter das Speichern 330 der kommunizierten Daten in einer Speicherzelle einer zweiten Spalte in der ausgewählten Zeile. Das Speichern 330 der kommunizierten Daten kann durch die Speicherzelle auf eine Weise erzielt werden, die z. B. den Betriebsdaten der Speicherzelle entspricht. Gemäß verschiedener Beispiele werden die kommunizierten Daten entlang der ausgewählten Zeile von der Speicherzelle der ersten Spalte zu der Speicherzelle der zweiten Zelle verschoben.
  • In einigen Beispielen (nicht dargestellt) umfasst das Kommunizieren 320 von Daten das Verstärken eines Signals von der Speicherzelle der ersten Spalte. Die Verstärkung kann unter Verwendung eines Leseverstärkers erzielt werden, um z. B. die Daten an einem Ausgang des Leseverstärkers zu erzeugen. Gemäß einiger Beispiele kann der Leseverstärker im Wesentlichen ähnlich dem Leseverstärker 130 sein, der oben in Bezug auf den verschiebbaren Speicher 100 beschrieben wurde.
  • In einigen Beispielen umfasst das Kommunizieren 320 der Daten weiter das selektive Übertragen der Daten von dem Ausgang des Leseverstärkers an einen Eingang eines Bitleitungstreibers der zweiten Spalte. Selektives Übertragen der Daten kann z. B. durch eine Verschiebelogik des verschiebbaren Speichers ausgeführt werden, wenn die Daten verschoben werden. In einigen Beispielen umfasst das Kommunizieren 320 der Daten weiter das Treiben der Bitleitung der zweiten Spalte unter Verwendung des Bitleitungstreibers, um ein Signal zu erzeugen, das das Speichern der Daten in der Speicherzelle der zweiten Spalte in der ausgewählten Zeile vereinfacht.
  • Es wurden also Beispiele eines verschiebbaren Speichers, eines verschiebbaren Speichersystems und ein Verfahren zum Verschieben von Daten in einem verschiebbaren Speicher beschrieben, die Zeilenverschiebung einsetzen. Es versteht sich, dass die oben beschriebenen Beispiele nur als veranschaulichend für einige der vielen spezifischen Beispiele dienen, die die hier beschriebenen Prinzipien darstellen. Eindeutig kann der Fachmann leicht zahlreiche andere Anordnungen entwickeln, ohne von dem durch die folgenden Ansprüche definierten Umfang abzuweichen.

Claims (15)

  1. Verschiebbarer Speicher, der Folgendes umfasst: Speicherzellen, die als eine Vielzahl von Zeilen und als eine Vielzahl von Spalten angeordnet sind; und Verschiebelogik zum Verschieben von Daten von einem Ausgang einer ersten Spalte zu einem Eingang einer zweiten Spalte, wobei die verschobenen Daten von einer Speicherzelle der ersten Spalte in einer ausgewählten Zeile bereitgestellt werden und die verschobenen Daten von einer Speicherzelle in der ausgewählten Zeile der zweiten Spalten empfangen und gespeichert werden, wobei die Verschiebelogik dazu dient, das Verschieben der Daten entlang der ausgewählten Zeile zu vereinfachen.
  2. Verschiebbarer Speicher nach Anspruch 1, wobei die erste Spalte und die zweite Spalte zueinander benachbart sind und alle Daten innerhalb der ausgewählten Zeile durch die Verschiebelogik verschoben werden.
  3. Verschiebbarer Speicher nach Anspruch 1, wobei eine Anzahl von Spalten zwischen der ersten Spalte und der zweiten Spalte wählbar zwischen Null und einem Wert ist, der kleiner als die Gesamtzahl der Spalten des verschiebbaren Speichers ist.
  4. Verschiebbarer Speicher nach Anspruch 1, wobei die Verschiebelogik dazu dient, die Daten in eine Richtung entlang der ausgewählten Zeile zu verschieben, die entweder in Richtung eines Anfangs der gewählten Zeile oder in Richtung eines Endes der gewählten Zeile verläuft.
  5. Verschiebbarer Speicher nach Anspruch 1, wobei die Verschiebelogik einen Multiplexer umfasst, der einen Eingang besitzt, der mit dem Ausgang der ersten Spalte verbunden ist, und der einen Multiplexer-Ausgang besitzt, der mit dem Eingang der zweiten Spalte verbunden ist, wobei der Multiplexer zwischen Daten von einem anderen Eingang des Multiplexers und Daten an dem ersten Spaltenausgang auszuwählen hat und wobei der Multiplexer weiter die ausgewählten Daten zu dem Eingang der zweiten Spalte zur Speicherung in der Speicherzelle der ausgewählten Zeile der zweiten Spalte zu routen hat.
  6. Verschiebbarer Speicher nach Anspruch 1, der weiter eines oder beides aus Leseverstärker und Bitleitungstreiber an Bitleitungen der ersten und der zweiten Spalte aufweist, wobei der Leseverstärker und der Bitleitungstreiber zwischen der Vielzahl von Zeilen von Speicherzellen und der Verschiebelogik angeordnet sind.
  7. Verschiebbarer Speicher nach Anspruch 6, wobei die Verschiebelogik einen Multiplexer umfasst, der verbunden ist, um selektiv Daten, die an einem Ausgang des Leseverstärkers der Bitleitung der ersten Spalte erzeugt werden, zu einem Eingang des Bitleitungstreibers der Bitleitung der zweiten Spalte zu leiten, wobei der Multiplexer die Daten selektiv zu leiten hat, wenn Daten zu verschieben sind.
  8. Verschiebbarer Speicher nach Anspruch 1, wobei die Speicherzelle eine aus einer Dynamischer-Direktzugriffsspeicher-(Dynamic Random Access Memory- oder DRAM-)Speicherzelle und einer Statischer-Dirketzugriffsspeicher-(Static Random Access Memory- oder SRAM-)Speicherzelle umfasst, wobei der Ausgang und der Eingang der Spalten Bitleitungen umfassen, die entweder mit der DRAM-Speicherzelle oder der SRAM-Speicherzelle assoziiert sind.
  9. Verschiebbarer Speicher nach Anspruch 1, der weiter eine Steuerung umfasst, um eines oder beides aus die Zeilen unter Verwendung von Wortleitungen auszuwählen, die mit den Zeilen assoziiert sind, und die Verschiebelogik zu steuern, um das Verschieben von Daten zu vereinfachen.
  10. Verschiebbares Speichersystem, das Folgendes umfasst: eine Gruppierung von Speicherzellen, die in Zeilen und Spalten angeordnet sind, wobei Speicherzellen jeder Zeile gemeinsam mit einer Wortleitung der Zeile verbunden sind, und wobei Speicherzellen der Spalten gemeinsam mit einer Bitleitung der Spalte verbunden sind; eine Vielzahl von Verschiebe-Schaltkreisen, wobei ein Verschiebe-Schaltkreis der Vielzahl zwischen einer ersten Bitleitung einer ersten Spalte und einer zweiten Bitleitung einer zweiten Spalte angeschlossen ist, um Datenausgang von der ersten Spalte in die zweite Spalte zu verschieben, wobei die verschobenen Daten in einer Speicherzelle in einer ausgewählten Zeile der zweiten Spalte zu speichem sind; und eine Steuerung, um die Zeilen unter Verwendung von Wortleitungen auszuwählen und den Verschiebelogik-Schaltkreis zu steuem, um das Verschieben von Daten zu vereinfachen.
  11. Verschiebbares Speichersystem nach Anspruch 10, das weiter eines oder beides aus einem Leseverstärker und einem Bitleitungstreiber zwischen der Gruppierung von Speicherzellen und den Verschiebelogik-Schaltkreisen umfasst, wobei der Leseverstärker die Ausgangsdaten aus einem Signal an der ersten Bitleitung zu erzeugen hat, das von einer Speicherzelle der ersten Spalte in der ausgewählten Zeile erzeugt wurde, und wobei der Bitleitungstreiber die Ausgangsdaten an die Speicherzelle in der ausgewählten Zeile der zweiten Spalte bereitzustellen hat.
  12. Verschiebbares Speichersystem nach Anspruch 10, wobei die Speicherzelle eine Dynamischer-Direktzugriffsspeicher-(Dynamic Random Access Memory- oder DRAM-)Speicherzelle oder eine Statischer-Direktzugriffsspeicher-(Static Random Access Memory- oder SRAM-)Speicherzelle umfasst, wobei die Bitleitungen Paare von Bitleitungen umfassen, die entweder mit der DRAM-Speicherzelle oder der SRAM-Speicherzelle assoziiert sind.
  13. Verschiebbares Speichersystem nach Anspruch 10, wobei die Daten Datenworte umfassen, wobei die Datenworte aufeinanderfolgend entlang einer oder mehrerer Zeilen der Vielzahl gespeichert werden oder die Datenworte über eine Vielzahl benachbarter Gruppierungen in entsprechenden Zeilen verteilt werden.
  14. Verfahren, Daten in einem verschiebbaren Speicher zu verschieben, wobei das Verfahren Folgendes umfasst: Auswählen einer Zeile von Speicherzellen des verschiebbaren Speichers, wobei die Speicherzellen des verschiebbaren Speichers als eine Vielzahl von Zeilen und als eine Vielzahl von Spalten angeordnet sind; Kommunikation von Daten zwischen Spalten unter Verwendung von Verschiebelogik des verschiebbaren Speichers, Kommunikation von Daten, die von einer ersten Spalte stammen, zu einer zweiten Spalte, wobei die Daten von einer Speicherzelle der ersten Spalte der ausgewählten Zelle bereitgestellt werden; und Speichern der kommunizierten Daten in einer Speicherzelle einer zweiten Spalte in der ausgewählten Zeile, wobei die kommunizierten Daten entlang der ausgewählten Zeile von der Speicherzelle der ersten Spalte zu der Speicherzelle der zweiten Spalte verschoben werden.
  15. Verfahren, Daten in einem verschiebbaren Speicher zu verschieben nach Anspruch 14, wobei das Kommunizieren von Daten zwischen Spalten Folgendes umfasst: Verstärken eines Signals an einer Bitleitung von der Speicherzelle der ersten Spalte unter Verwendung eines Leseverstärkers, um die Daten an einem Ausgang des Leseverstärkers zu erzeugen; Selektives Übertragen der Daten von dem Ausgang des Leseverstärkers an einen Eingang eines Bitleitungstreibers der zweiten Spalte; und Treiben der Bitleitung der zweiten Spalte unter Verwendung des Bitleitungstreibers, um ein Signal zu erzeugen, das das Speichern der Daten in der Speicherzelle der zweiten Spalte in der ausgewählten Zeile vereinfacht, wobei das selektive Übertragen der Daten durch Verschiebelogik des verschiebbaren Speichers ausgeführt wird, wenn Daten verschoben werden.
DE112011105706.7T 2011-10-28 2011-10-28 Zeilenverschiebender verschiebbarer Speicher Ceased DE112011105706T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/058462 WO2013062596A1 (en) 2011-10-28 2011-10-28 Row shifting shiftable memory

Publications (1)

Publication Number Publication Date
DE112011105706T5 true DE112011105706T5 (de) 2014-07-10

Family

ID=48168262

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011105706.7T Ceased DE112011105706T5 (de) 2011-10-28 2011-10-28 Zeilenverschiebender verschiebbarer Speicher

Country Status (6)

Country Link
US (1) US20140247673A1 (de)
KR (1) KR20140085468A (de)
CN (1) CN103907157B (de)
DE (1) DE112011105706T5 (de)
GB (1) GB2510286B (de)
WO (1) WO2013062596A1 (de)

Families Citing this family (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI637396B (zh) * 2012-02-13 2018-10-01 中村維男 無記憶體瓶頸的行進記憶體,雙向行進記憶體,複雜行進記憶體,及計算機系統
WO2014011149A1 (en) * 2012-07-10 2014-01-16 Hewlett-Packard Development Company, L.P. List sort static random access memory
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
WO2016049862A1 (zh) 2014-09-30 2016-04-07 华为技术有限公司 实现移位运算的电路以及阵列电路
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
CN107408404B (zh) * 2015-02-06 2021-02-12 美光科技公司 用于存储器装置的设备及方法以作为程序指令的存储
CN107408405B (zh) 2015-02-06 2021-03-05 美光科技公司 用于并行写入到多个存储器装置位置的设备及方法
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US10365851B2 (en) 2015-03-12 2019-07-30 Micron Technology, Inc. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
US10180808B2 (en) * 2016-10-27 2019-01-15 Samsung Electronics Co., Ltd. Software stack and programming for DPU operations
US10732866B2 (en) 2016-10-27 2020-08-04 Samsung Electronics Co., Ltd. Scaling out architecture for DRAM-based processing unit (DPU)
US9922696B1 (en) * 2016-10-28 2018-03-20 Samsung Electronics Co., Ltd. Circuits and micro-architecture for a DRAM-based processing unit
US10373666B2 (en) 2016-11-08 2019-08-06 Micron Technology, Inc. Apparatuses and methods for compute components formed over an array of memory cells
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) * 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10262701B2 (en) * 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
CN109933424B (zh) * 2019-01-22 2020-11-13 浙江工商大学 基于数据循环移位的pcm内存行复用方法
US10847215B2 (en) * 2019-04-29 2020-11-24 Arm Limited Bitcell shifting technique
US12118056B2 (en) 2019-05-03 2024-10-15 Micron Technology, Inc. Methods and apparatus for performing matrix transformations within a memory array
US11901006B2 (en) 2019-05-16 2024-02-13 Xenergic Ab Shiftable memory and method of operating a shiftable memory
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4504925A (en) * 1982-01-18 1985-03-12 M/A-Com Linkabit, Inc. Self-shifting LIFO stack
US4757503A (en) * 1985-01-18 1988-07-12 The University Of Michigan Self-testing dynamic ram
US4864544A (en) * 1986-03-12 1989-09-05 Advanced Micro Devices, Inc. A Ram cell having means for controlling a bidirectional shift
JPS63231798A (ja) * 1987-03-20 1988-09-27 Fujitsu Ltd 2次元シフトレジスタ
CA1286803C (en) * 1989-02-28 1991-07-23 Benoit Nadeau-Dostie Serial testing technique for embedded memories
JP3037252B2 (ja) * 1998-01-28 2000-04-24 日本電気アイシーマイコンシステム株式会社 アドレス選択回路
US6515895B2 (en) * 2001-01-31 2003-02-04 Motorola, Inc. Non-volatile magnetic register
CN100489797C (zh) * 2001-10-11 2009-05-20 阿尔特拉公司 可编程逻辑设备上的错误检测
GB2393277B (en) * 2002-09-17 2006-01-18 Micron Europe Ltd Method for manipulating data in a group of processing elements to perform a reflection of the data
US7139946B2 (en) * 2002-12-18 2006-11-21 Logicvision, Inc. Method and test circuit for testing memory internal write enable
JP2006523340A (ja) * 2003-03-14 2006-10-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 2次元データメモリ
JP2004296040A (ja) * 2003-03-28 2004-10-21 Renesas Technology Corp 半導体記憶装置
DE102005023118B3 (de) * 2005-05-19 2006-12-21 Infineon Technologies Ag Schaltungsanordnung zum Zuführen von Konfigurationsdaten in FPGA-Einrichtungen
US7743202B2 (en) * 2006-03-09 2010-06-22 Mediatek Inc. Command controller, prefetch buffer and methods for accessing a serial flash in an embedded system
US20090193384A1 (en) * 2008-01-25 2009-07-30 Mihai Sima Shift-enabled reconfigurable device
CN101383188B (zh) * 2008-07-16 2011-02-16 南京航空航天大学 一种胚胎电子系统
US8189408B2 (en) * 2009-11-17 2012-05-29 Freescale Semiconductor, Inc. Memory device having shifting capability and method thereof

Also Published As

Publication number Publication date
US20140247673A1 (en) 2014-09-04
WO2013062596A1 (en) 2013-05-02
GB2510286A (en) 2014-07-30
GB201407330D0 (en) 2014-06-11
KR20140085468A (ko) 2014-07-07
CN103907157A (zh) 2014-07-02
CN103907157B (zh) 2017-10-17
GB2510286B (en) 2015-08-19

Similar Documents

Publication Publication Date Title
DE112011105706T5 (de) Zeilenverschiebender verschiebbarer Speicher
DE69516881T2 (de) Speichervorrichtung und datenverarbeitungssystem mit einer solchen speichervorrichtung
DE4222273C2 (de) Zweikanalspeicher und Verfahren zur Datenübertragung in einem solchen
DE69635663T2 (de) vERFAHREN FÜR DAS EINSPEICHERN VON DATEN IN EINEM FLASH-EEPROM-HAUPTSPEICHER IN EINEM RECHNERSYSTEM
DE19928767B4 (de) Halbleiterspeicherbauelement
DE69535672T2 (de) Synchrone NAND DRAM Architektur
DE3588247T2 (de) Dynamischer Halbleiterspeicher mit einer statischen Datenspeicherzelle
DE69324508T2 (de) DRAM mit integrierten Registern
DE3886600T2 (de) Ferroelektrischer, latenter Bild-RAM-Speicher.
DE69229988T2 (de) Kombinierte DRAM- und SRAM-Speichermatrize
DE69333909T2 (de) Leseverstärker mit lokalen Schreibtreibern
DE69723105T2 (de) Speicher und verfahren zum lesen von speicherelementenuntergruppen
DE2919166C2 (de) Speichervorrichtung
EP0908893B1 (de) Speicherarchitektur mit Mehrebenenhierarchie
DE60302821T2 (de) Data-Austauschvorrichtung zwischen Abtastketten
DE112011105670T5 (de) Verschiebbarer Speicher, der Ringregister verwendet
DE2331589A1 (de) Datenverarbeitungsanordnung
DE19932683A1 (de) Halbleiterspeicher
DE69028382T2 (de) Serielle multiplexierte Registerarchitektur für VRAM
DE4141892A1 (de) Halbleiterspeichereinrichtung
DE2617408A1 (de) Datenverarbeitungsgeraet
DE69432512T2 (de) Für fensterumgebungsoperationen entworfenes rasterpuffersystem
DE69618319T2 (de) Mehrbankenspeicherarchitektur und Systeme und Verfahren unter Verwendung derselben
DE102008026762A1 (de) Vorrichtung und Verfahren zum Betreiben einer integrierten Schaltung
DE1286789B (de) Einrichtung an einem elektronischen Ziffernrechner zum schnellen Datenaustausch zwischen der Verarbeitungseinheit und dem zentralen Speicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOU, US

Free format text: FORMER OWNER: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., HOUSTON, TEX., US

R082 Change of representative

Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE

Representative=s name: SCHOPPE, ZIMMERMANN, STOECKELER, ZINKLER, SCHE, DE

Representative=s name: SCHOPPE, ZIMMERMANN, STOECKELER, ZINKLER & PAR, DE

R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOU, US

Free format text: FORMER OWNER: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., HOUSTON, TEX., US

R082 Change of representative

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB, DE

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB PATENTANWA, DE

Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE

Representative=s name: SCHOPPE, ZIMMERMANN, STOECKELER, ZINKLER, SCHE, DE

R082 Change of representative

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB, DE

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB PATENTANWA, DE

Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE

R082 Change of representative

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB, DE

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB PATENTANWA, DE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final