DE102016001224A1 - Speicher mit hoher Bandbreite und störungsfreies differenzielles XOR - Google Patents
Speicher mit hoher Bandbreite und störungsfreies differenzielles XOR Download PDFInfo
- Publication number
- DE102016001224A1 DE102016001224A1 DE102016001224.2A DE102016001224A DE102016001224A1 DE 102016001224 A1 DE102016001224 A1 DE 102016001224A1 DE 102016001224 A DE102016001224 A DE 102016001224A DE 102016001224 A1 DE102016001224 A1 DE 102016001224A1
- Authority
- DE
- Germany
- Prior art keywords
- memory
- block
- blocks
- sub
- data
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 186
- 230000000295 complement effect Effects 0.000 claims abstract description 9
- 238000011156 evaluation Methods 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 38
- 238000003491 array Methods 0.000 claims 1
- 238000004891 communication Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006880 cross-coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1621—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Static Random-Access Memory (AREA)
- Dram (AREA)
- Logic Circuits (AREA)
Abstract
Description
- Die vorliegende Beschreibung bezieht sich im Allgemeinen auf Speicherschaltungen und im Besonderen, jedoch nicht ausschließlich, auf einen Speicher mit hoher Bandbreite und ein störungsfreies differenzielles exklusives OR (XOR).
- Netzwerkprozessoren, die hohe Speicherbandbreite benötigen, können Mehrport-Speicherbit-Zellen verwenden, die ziemlich groß und aufwändig zu implementieren sind. Beispielsweise können Registerdateispeicher, die auf Mehrport-Speicherbit-Zellen basieren, 4-Port Speicherbit-Zellen verwenden, die jeweils vier Sätze von Pass Gates verwenden, oder 4-Lese-Port-Speicherbit-Zellen, die vier Sätze von Reihentransistoren (z. B. NFET) für die Lese-Ports und Pass Gates für die Schreib-Ports verwenden. Diese Bit-Zellen sind jedoch im Wesentlichen flächenaufwändig und können am häufigsten bei Registerdateianwendungen kleiner Kapazität Verwendung finden. Die bestehenden Bit-Zellen und die dazu gehörigen Speicherarchitekturen sind nicht zur Verwendung in Speichern mit großer Kapazität geeignet, wie sie von Netzwerkprozessoren benötigt werden.
- KUZRER ÜBERBLICK ÜBER DIE ERFINDUNG
- Gemäß einem Aspekt wird eine Mehrfachlese-Speichervorrichtung mit hoher Bandbreite bereitgestellt, wobei die Vorrichtung aufweist:
eine Vielzahl von Speicherblöcken einschließlich eines Hilfsspeicherblocks, wobei jeder der Vielzahl von Speicherblöcken eine Vielzahl von Speicher-Unterblöcken aufweist, wobei die Vielzahl von Speicher-Unterblöcken einen Hilfsspeicher-Unterblock aufweisen;
eine Vielzahl von Adresseingangsbussen; und
eine Vielzahl von Ausgangsdatenbussen, die dazu konfiguriert sind, während einer Mehrfachlese-Operation Daten entsprechend einer Vielzahl von Adressen auszugeben, wobei die Vielzahl von Adressen der Vielzahl von Adresseingangsbussen entsprechen,
wobei die Vielzahl von Adressen einem einzigen Speicher-Unterblock der Vielzahl von Speicher-Unterblöcken eines Speicherblocks der Vielzahl von Speicherblöcken entsprechen. - Vorteilhaft sind wenigstens einige der Vielzahl von Ausgangsdatenbussen dazu konfiguriert, durch ein oder mehrere XOR-Gatter mit wenigstens zwei Speicher-Unterblöcken verbunden zu werden, die sich von dem einzigen Speicher-Unterblock unterscheiden.
- Vorteilhaft ist ein erster Ausgangsdatenbus der Vielzahl von Ausgangsdatenbussen dazu konfiguriert, während der Mehrfachlese-Operation Daten entsprechend einer ersten Adresse der Vielzahl von Adressen entsprechend einem ersten Adresseingangsbus der Vielzahl von Adresseingangsbussen auszugeben, wobei jeder der Hilfsspeicher-Unterblöcke, der nicht Teil des Hilfsspeicherblocks ist, dazu konfiguriert ist, primäre Hilfsdaten zu enthalten, und wobei wenigstens ein XOR-Gatter dazu konfiguriert ist, die primären Hilfsdaten zu liefern, und dazu konfiguriert ist, während einer Schreib-Operation Eingangsdaten von wenigstens zwei der Vielzahl von Speicher-Unterblöcken eines jeweiligen der Vielzahl von Speicherblöcken zu empfangen, wobei die wenigstens zwei der Vielzahl von Speicher-Unterblöcken den jeweiligen der Hilfsspeicher-Unterblöcke aufweisen.
- Vorteilhaft ist jeder Hilfsspeicher-Unterblock, der Teil des Hilfsspeicherblocks ist, dazu konfiguriert, sekundäre Hilfsdaten zu enthalten, wobei wenigstens ein XOR-Gatter dazu konfiguriert ist, die sekundären Hilfsdaten zu liefern, und dazu konfiguriert ist, während einer Schreib-Operation Eingangsdaten von wenigstens zwei der Vielzahl von Speicher-Unterblöcken von wenigstens zwei der Vielzahl von Speicherblöcken zu empfangen.
- Vorteilhaft ist ein letzter Hilfsspeicher-Unterblock des Hilfsspeicherblocks dazu konfiguriert, ternäre Hilfsdaten zu enthalten, wobei wenigstens ein XOR-Gatter dazu konfiguriert ist, die ternären Hilfsdaten zu liefern, und dazu konfiguriert ist, während einer Schreib-Operation Eingangsdaten von wenigstens zwei Speicher-Unterblöcken des Hilfsspeicherblocks zu empfangen.
- Vorteilhaft ist ein zweiter Ausgangsdatenbus dazu konfiguriert, während der Mehrfachlese-Operation Daten entsprechend einer zweiten Adresse der Vielzahl von Adressen entsprechend einem zweiten Adresseingangsbus auszugeben, und wobei der zweite Ausgangsdatenbus mit einem ersten Lese-XOR-Gatter verbunden ist, das dazu konfiguriert ist, Daten von einem Speicher-Unterblock eines ersten Speicherblocks der Vielzahl von Speicherblöcken und einem jeweiligen Hilfsspeicher-Unterblock des ersten Speicherblocks der Vielzahl von Speicherblöcken zu empfangen.
- Vorteilhaft ist ein dritter Ausgangsdatenbus der Vielzahl von Ausgangsdatenbussen dazu konfiguriert, während der Mehrfachlese-Operation Daten entsprechend einer dritten Adresse der Vielzahl von Adressen entsprechend einem dritten Adresseingangsbus der Vielzahl von Adresseingangsbussen auszugeben, und wobei der dritte Ausgangsdatenbus mit einem zweiten Lese-XOR-Gatter verbunden ist, das dazu konfiguriert ist, Daten von einem Speicher-Unterblock eines zweiten Speicherblocks der Vielzahl von Speicherblöcken und einem jeweiligen Hilfsspeicher-Unterblock des zweiten Speicherblocks zu empfangen.
- Vorteilhaft weist die Vorrichtung des Weiteren einen Datenausgangspfad entsprechend jedem Speicher-Unterblock der Vielzahl von Speicher-Unterblöcken auf, wobei der Datenausgangspfad einen Multiplexer aufweist, der mit einem Ausgangs-XOR-Gatter verbunden ist, wobei Ausgangs-XOR-Gatter verbunden sind, um einen XOR-Baum mit Reihenschaltung zu bilden, und wobei ein Leseverstärker eines Speicher-Unterblocks dazu konfiguriert ist, Daten in eines von XOR des XOR-Baums mit Reihenschaltung weiterzuleiten.
- Gemäß einem Aspekt weist eine differenzielle XOR-Schaltung auf:
eine Auswahllogikschaltung, die dazu konfiguriert ist, ein unsymmetrisches Eingangssignal und ein Taktsignal zu empfangen, und ein komplementäres Ausgangssignal, das dem unsymmetrischen Eingangssignal entspricht, zu liefern;
eine Vorladeschaltung, die dazu konfiguriert ist, Ausgangsknoten während einer Vorladungsphase vorzuladen; und
einen Multiplexer, der dazu konfiguriert ist, ein differenzielles Eingangssignal und das komplementäre Ausgangssignal zu empfangen und während einer Auswertungsphase ein differenzielles Ausgangssignal an den Ausgangsknoten bereitzustellen. - Vorteilhaft ist das differenzielle Ausgangssignal dazu konfiguriert, von dem unsymmetrischen Eingangssignal abzuhängen, und wobei das differenzielle Ausgangssignal eines des differenziellen Eingangssignals oder eines Komplements des differenziellen Eingangssignals aufweist.
- Vorteilhaft basieren die Vorladungsphase und die Auswertungsphase auf unterschiedlichen Zuständen des Taktsignals, und wobei die Schaltung in mehreren XOR-Stufen implementiert ist.
- Vorteilhaft weist die Auswahllogikschaltung zwei Inverter und ein oder mehrere Logikgatter einschließlich NAND- oder NOR-Gattern auf, wobei der Multiplexer zwei kreuzgekoppelte MOS Pass Gates aufweist, und wobei die Vorladeschaltung wenigstens zwei MOS Transistoren aufweist, die das Taktsignal an einem gemeinsamen Gateknoten der wenigstens zwei MOS Transistoren empfangen.
- Gemäß einem Aspekt umfasst ein Verfahren zum Bereitstellen einer Mehrfachlese-Speichervorrichtung mit hoher Bandbreite:
Aufteilen einer Speichervorrichtung in eine Vielzahl von Speicherblöcken einschließlich eines Hilfsspeicherblocks, wobei jeder Speicherblock der Vielzahl von Speicherblöcken eine Vielzahl von Speicher-Unterblöcken einschließlich eines Hilfsspeicher-Unterblocks aufweist; und
Konfigurieren einer Vielzahl von Ausgangsdatenbussen der Speichervorrichtung, um während einer Mehrfachlese-Operation Daten entsprechend einer Vielzahl von Adressen entsprechend einer Vielzahl von Adress-Eingangsbussen auszugeben, wobei
die Vielzahl von Adressen einem einzigen Speicher-Unterblock der Vielzahl von Speicher-Unterblöcken eines Speicherblocks der Vielzahl von Speicherblöcken entsprechen. - Vorteilhaft umfasst das Verfahren des Weiteren das Konfigurieren wenigstens einiger der Vielzahl von Ausgangsdatenbussen, um durch ein oder mehrere XOR-Gatter mit wenigstens zwei Speicher-Unterblöcken der Vielzahl von Speicher-Unterblöcken verbunden zu werden, die sich von dem einzigen Speicher-Unterblock unterscheiden.
- Vorteilhaft umfasst das Verfahren des Weiteren:
Konfigurieren eines ersten Ausgangsdatenbusses der Vielzahl von Ausgangsdatenbussen, während der Mehrfachlese-Operation Daten entsprechend einer ersten Adresse der Vielzahl von Adressen entsprechend einem ersten Adresseingangsbus der Vielzahl von Adresseingangsbussen auszugeben,
Schreiben primärer Hilfsdaten während einer Schreib-Operation in jeden Hilfs-Speicher-Unterblock, der nicht Teil des Hilfsspeicherblocks ist; und
Konfigurieren wenigstens eines XOR-Gatters, die primären Hilfsdaten zu liefern und während der Schreib-Operation Eingangsdaten von wenigstens zwei der Vielzahl von Speicher-Unterblöcken eines jeweiligen Speicherblocks einschließlich des jeweiligen Hilfsspeicher-Unterblocks zu empfangen. - Vorteilhaft umfasst das Verfahren des Weiteren:
Schreiben sekundärer Hilfsdaten während einer Schreiboperation in jeden Hilfsspeicher-Unterblock, der Teil des Hilfs-Speicherblocks ist; und
Konfigurieren wenigstens eines XOR-Gatters, die sekundären Hilfsdaten zu liefern und während der Schreib-Operation Eingangsdaten von wenigstens zwei der Vielzahl von Speicher-Unterblöcken von wenigstens zwei der Vielzahl von Speicherblöcken zu empfangen. - Vorteilhaft umfasst das Verfahren des Weiteren:
Schreiben ternärer Hilfsdaten während einer Schreiboperation in einen letzten Hilfsspeicher-Unterblock des Hilfsspeicherblocks; und
Konfigurieren wenigstens eines XOR-Gatters, die ternären Hilfsdaten zu liefern und während der Schreib-Operation Eingangsdaten von wenigstens zwei Speicher-Unterblöcken des Hilfsspeicherblocks zu empfangen. - Vorteilhaft umfasst das Verfahren des Weiteren das Konfigurieren eines zweiten Ausgangsdatenbusses der Vielzahl von Ausgangsdatenbussen, um während der Mehrfachlese-Operation Daten entsprechend einer zweiten Adresse der Vielzahl von Adressen entsprechend einem zweiten Adresseingangsbus der Vielzahl von Adresseingangsbussen auszugeben durch Verbinden des zweiten Ausgangsdatenbusses der Vielzahl von Ausgangsdatenbussen mit einem ersten Lese-XOR-Gatter, wobei das erste Lese-XOR-Gatter dazu konfiguriert ist, Daten von einem Speicher-Unterblock eines ersten Speicherblocks der Vielzahl von Speicherblöcken und einem jeweiligen Hilfsspeicher-Unterblock des ersten Speicherblocks zu empfangen.
- Vorteilhaft umfasst das Verfahren des Weiteren das Konfigurieren eines dritten Ausgangsdatenbusses, um während der Mehrfachlese-Operation Daten entsprechend einer dritten Adresse der Vielzahl von Adressen entsprechend einem dritten Adresseingangsbus auszugeben durch Verbinden des dritten Ausgangsdatenbusses mit einem zweiten Lese-XOR-Gatter, wobei das zweite Lese-XOR-Gatter dazu konfiguriert ist, Daten von einem Speicher-Unterblock eines zweiten Speicherblocks der Vielzahl von Speicherblöcken und einem jeweiligen Hilfsspeicher-Unterblock des zweiten Speicherblocks zu empfangen.
- Vorteilhaft umfasst das Verfahren des Weiteren das Bereitstellen eines Datenausgangspfads entsprechend jedem Speicher-Unterblock der Vielzahl von Speicher-Unterblöcken durch Verbinden eines Multiplexers mit einem Ausgangs-XOR-Gatter und Verbinden von Ausgangs-XOR-Gattern, um einen XOR-Baum mit Reihenschaltung zu bilden, und wobei ein Leseverstärker eines Speicher-Unterblocks der Vielzahl von Speicher-Unterblöcken dazu konfiguriert ist, Daten in eines der Ausgangs-XOR-Gatter des XOR-Baums mit Reihenschaltung weiterzuleiten.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Bestimmte Merkmale der gegenständlichen Technik sind in den beigefügten Ansprüchen dargelegt. Zu Erläuterungszwecken werden jedoch mehrere Ausführungsformen der gegenständlichen Technik in den folgenden Figuren dargelegt.
-
1 zeigt ein Beispiel einer Mehrfachlese-Speichervorrichtung mit hoher Bandbreite gemäß einer oder mehreren Implementierungen. -
2 zeigt ein Beispiel einer Schreibschaltung der Mehrfachlese-Speichervorrichtung mit hoher Bandbreite von1 gemäß einer oder mehreren Implementierungen. -
3A –3B zeigen Beispiele einer Leseschaltung und eines Datenausgangspfads der Mehrfachlese-Speichervorrichtung mit hoher Bandbreite von1 gemäß einer oder mehreren Implementierungen. -
4 ist ein Flussdiagramm, das einen Beispielalgorithmus zum Durchführen einer Mehrfachlese-Operation gemäß einer oder mehreren Implementierungen zeigt. -
5 zeigt ein Beispiel eines Verfahrens zum Bereitstellen einer Mehrfachlese-Speichervorrichtung mit hoher Bandbreite gemäß einer oder mehreren Implementierungen. -
6A –6B zeigen Beispiele einer differenziellen exklusiven OR(XOR)-Schaltung und einer korrespondierenden Wahrheitstabelle, gemäß einer oder mehreren Implementierungen. -
7 zeigt ein Beispiel einer mehrstufigen differenziellen XOR Schaltung gemäß einer oder mehreren Implementierungen. -
8 zeigt ein Beispiel eines Kommunikationsgeräts, das Merkmale der gegenständlichen Technik verwendet, gemäß einer oder mehreren Implementierungen. - DETAILLIERTE BESCHREIBUNG
- Die folgende detaillierte Beschreibung ist als Beschreibung verschiedener Konfigurationen der gegenständlichen Technik gedacht und soll nicht die einzigen Konfigurationen repräsentieren, in denen die gegenständliche Technik praktiziert werden kann. Die beigefügten Zeichnungen sind hierin enthalten und bilden einen Teil der detaillierten Beschreibung. Die detaillierte Beschreibung enthält spezifische Einzelheiten, um ein profundes Verständnisses der gegenständlichen Technik zu ermöglichen. Es ist jedoch für Fachleute klar und offensichtlich, dass die gegenständliche Technik nicht auf die hier dargelegten spezifischen Einzelheiten beschränkt ist und unter Verwendung einer oder mehrerer Implementierungen praktiziert werden kann. In einem oder mehreren Fällen sind bekannte Strukturen und Komponenten in Form eines Blockdiagramms gezeigt, um zu vermeiden, dass die Konzepte der gegenständlichen Technik verschleiert werden.
- Bei einem oder mehreren Aspekten der gegenständlichen Technik sind Verfahren und Konfigurationen zum Bereitstellen eines Speichers mit hoher Bandbreite beschrieben. Des Weiteren ist ein dynamischer störungsfreier differenzieller XOR-Baum offenbart, der beim Implementieren des Speichers mit hoher Bandbreite der gegenständlichen Technik wirksam eingesetzt werden kann. Die gegenständliche Technik kann bei jeder beliebigen Halbleitervorrichtung verwendet werden, die einen Speicher mit hoher Bandbreite (z. B. 1–2 GHz) oder einen Mehrport-Speicher benötigt. Der offenbarte Speicher mit hoher Bandbreite hat viele vorteilhafte Merkmale auf Schaltungs-, System- und Produktebene. Auf Schaltungsebene kann die gegenständliche Technik beispielsweise zu einer wesentlichen (z. B. ~50%) Verbesserung der Dichte (Leseports pro mm2) gegenüber einem bestehenden algorithmischen Zweiport-XOR-Speicher führen. Die Systemvorteile beinhalten zusätzliche Lesebandbreite pro Flächeneinheit oder einen kleineren Bereich für gleiche Lesebandbreite. Auf Produktebene zählen Kostenersparnis aufgrund reduzierter Chipfläche und Leistungsverbesserung aufgrund zusätzlicher Lesebandbreite zu den vorteilhaften Merkmalen. Der differenzielle XOR-Baum der gegenständlichen Technik hat nicht nur keine zusätzlichen Übergänge (z. B. Störimpulse), sondern kann die dynamische Leistung in der peripheren XOR-Logik (z. B. um ~80%) und dem peripheren XOR-Bereich (z. B. um ~20%) wesentlich reduzieren und kann zu einem voraussagbaren Verzögerungspfad für den ungünstigsten Fall führen.
-
1 zeigt ein Beispiel einer Mehrfachlese-Speichervorrichtung mit hoher Bandbreite100 gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Die Speichervorrichtung100 ist in mehrere (z. B. 3 oder mehr) Speicherblöcke (nachfolgend „Blöcke”)110 einschließlich eines Hilfsspeicherblocks (nachfolgend „Hilfsblock”)120 aufgeteilt. Jeder der Speicherblöcke110 und120 weist mehrere Speicher-Unterblöcke (nachfolgend ”Unterblöcke”)112 auf (z. B. A1, A0, B1 und B0) einschließlich eines Hilfsspeicher-Unterblocks (nachfolgend „Hilfs-Unterblock”)114 (z. B. AX und BX). Die Zählung der Unterblöcke (X1, X0 und XX) des Hilfsblocks120 ist dieselbe wie die Zählung der Unterblöcke anderer Blöcke (z. B.110 ). Die Speichervorrichtung100 kann jede Art von Speicher sein, zum Beispiel ein SRAM Speicher, der zum Beispiel durch 6-Transistor (6-T) Speicherzellen oder andere Speicherzellen gebildet wird. - Die Speichervorrichtung
100 weist mehrere Adresseingangsbusse130 einschließlich beispielsweise vier Adresseingangsbussen entsprechend vier Eingangsadressen addrA, addrB, addrC und addrD auf. Die Speichervorrichtung100 weist auch eine Anzahl von Ausgangsdatenbussen140 auf, zum Beispiel doutA, doutB, doutC und doutD, um während einer Mehrfachlese-Operation Daten entsprechend mehreren Adressen entsprechend den Adresseingangsbussen130 auszugeben. Die Adressen auf den Adresseingangsbussen130 können einem einzigen Speicher-Unterblock (z. B. A1, A0, B1 oder B0) eines der Blöcke110 entsprechen, in den Eingangsdaten (z. B. Din) in einer Schreiboperation zu schreiben sind, wie vorliegend beschrieben ist. Die Speichervorrichtung mit hoher Bandbreite und hoher Kapazität der gegenständlichen Technik kann in einer Mehrfachlese-Einfachschreib-Implementierung implementiert werden. Der Einfachheit halber ist vorliegend eine Vierfachlese-Einzelschreib-Implementierung beschrieben. Selbstverständlich kann die Mehrfachlese-Operation zu einer Adressenkollision führen, wenn die mehreren Adressen, aus denen zu lesen ist, zu (z. B. mehreren Reihen) eines einzigen Unterblocks (z. B. A1, A0, B1 oder B0) gehören. Die gegenständliche Technik löst das Problem der Adressenkollision wie vorliegend im Einzelnen beschrieben ist. - Das Konzept hinter der Implementierung der Mehrfachlese(z. B. Vierfachlese)-Operation sind die folgenden Booleschen Gleichungen: Wenn A ⊕ B ⊕ C ⊕ D = n und B ⊕ C ⊕ D = m, folgt in Anbetracht der bekannten Gleichung A ⊕ A = 0: n ⊕ m = (A ⊕ (B ⊕ B) ⊕ (C ⊕ C) ⊕ (D ⊕ D)) = A ⊕ 0 ⊕ 0 ⊕ 0 = A, wobei das Symbol ⊕ die XOR-Operation angibt. Anders ausgedrückt, wenn man „n” hat, kann man A rekonstruieren, wenn man „m” hat. Dieses Konzept wird vorliegend verwendet, um die Mehrfachlese(z. B. Vierfachlese)-Operation der Speichervorrichtung
100 ohne Adressenkollisionen zu implementieren. Um die Mehrfachlese-Operation zu implementieren, verwendet die gegenständliche Technik die Hilfs-Unterblöcke AX und BX, um erste und zweite Adressenkollisionen zu lösen, und die Unterblöcke (z. B. X1, X0 und XX) des Hilfsblocks120 , um die dritten und vierten Adressenkollisionen zu lösen. Die Hilfs-Unterblöcke AX, BX, X1, X0 und XX werden nicht durch echte Adressen bezeichnet und enthalten Hilfsdaten, die zur Lösung von Mehrfachlese-Adressenkollisionen verwendet werden können. Selbstverständlich kann die gegenständliche Lösung auf mehr als Vieradress-Kollisionen erweitert werden, indem die Speichervorrichtung anders aufgeteilt wird, beispielsweise in Blöcke mit mehr als vier Unterblöcken. Bei der vorliegend erläuterten Implementierung mit Vieradress-Kollision wird der Dateninhalt der Hilfs-Unterblöcke durch die folgenden Booleschen Gleichungen definiert:AX = A0 ⊕ A1 (G1. 1) BX = B0 ⊕ B1 (G1. 2) X1 = A1 ⊕ B1 (G1. 3) X0 = A0 ⊕ B0 (G1. 4) XX = X1 ⊕ X0 (G1. 5) - Anders ausgedrückt enthält jeder Hilfsspeicher-Unterblock (z. B. AX oder BX), der nicht Teil des Hilfsspeicherblocks
120 ist, primäre Hilfsdaten. Die primären Hilfsdaten werden durch wenigstens ein XOR-Gatter bereitgestellt, das während einer Schreib-Operation Eingangsdaten von wenigstens zwei Speicher-Unterblöcken (z. B. A0 ⊕ A1 oder B0 ⊕ B1) eines jeweiligen Speicherblocks einschließlich dieses Hilfsspeicher-Unterblocks empfängt. Jeder Hilfsspeicher-Unterblock (z. B. X1, X0 oder XX), der dem Hilfsspeicherblock120 entspricht, enthält sekundäre Hilfsdaten. Die sekundären Hilfsdaten werden durch wenigstens ein XOR-Gatter bereitgestellt, das während einer Schreib-Operation Eingangsdaten von wenigstens zwei Speicher-Unterblöcken (z. B. A1 ⊕ B1, A0 ⊕ B0 oder A1 ⊕ B1 ⊕ A0 ⊕ B0) von wenigstens zwei Speicherblöcken (z. B.110 oder120 ) empfängt. Die XOR-Operationen der obenstehenden Gleichungen werden unter Verwendung von Zweiweg-XOR-Gattern wie unten erläutert implementiert. -
2 zeigt ein Beispiel einer Schreibschaltung200 der Mehrfachlese-Speichervorrichtung mit hoher Bandbreite100 von1 gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Um die Mehrfachlese (z. B. Vierfachlese) -Operation ohne Adressenkollision durchführen zu können, verwendet die gegenständliche Technik eine hierarchische XOR Architektur, wie in2 gezeigt ist. Die in2 gezeigte hierarchische XOR Architektur verwendet der Einfachheit halber Zweiweg-XOR-Gatter. Bei einigen Implementierungen hängt die Zählung der Eingänge der XOR-Gatter von der Zählung der Unterblöcke der Blöcke110 ab. Wenn zum Beispiel die Anzahl der Unterblöcke jedes Blocks110 vier war, wurden XOR-Gatter mit drei Eingängen verwendet. - Bei der in
2 gezeigten Schreibschaltung200 ist das Schreiben an eine Adresse entsprechend der 10. Reihe des Unterblocks A1 beschrieben. Die erste Pipeline-Stufe (z. B. Stufe 1) führt das tatsächliche Schreiben (z. B. W10) der Daten (z. B. Din) in Reihe 10 in dem Unterblock A1 durch. Gleichzeitig wird in Reihe 10 der Unterblöcke A0, B1 und X0 eine Lese-Operation durchgeführt. Die zweite Pipeline-Stufe (z. B. Stufe 2) führt Schreib-Operationen an AX, X1 und XX durch. Das XOR-Gatter210 wird verwendet, um die Boolsche Operation in Gl. 1 durchzuführen, was XOR von A1 und A0 bereitstellt. Das XOR-Gatter220 führt die Boolesche Operation in Gl. 3 durch und stellt XOR von A1 und B1 bereit, was in den Unterblock X1 des Hilfsblocks120 geschrieben wird. Schließlich führt XOR230 die Boolesche Operation in Gl. 5 durch, was XOR von X1 und X0 bereitstellt. Es wird angemerkt, dass XOR230 als einen seiner Eingänge den Ausgang von XOR220 verwendet, der in den Unterblock X1 geschrieben wird und mit dem Inhalt des Unterblocks X1 identisch ist. Der Inhalt der Hilfs-Unterblöcke AX, X1 und XX kann, wie gemäß den oben erläuterten Schreib-Operationen geschrieben, verwendet werden, um die Daten aus vier verschiedenen Adressen des Unterblocks A zu lesen, wie vorliegend erläutert ist. -
3A –3B zeigen Beispiele einer Leseschaltung300A und eines Datenausgangspfads300B der Mehrfachlese-Speichervorrichtung mit hoher Bandbreite100 von1 gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Die Lese-Operation der gegenständlichen Technik wird durch eine beispielhafte Leseschaltung300A durchgeführt. Die in3A gezeigte Lese-Operation beschreibt eine Lösung der Vierweg-Adressenkollision, wobei die Adressenports A, B, C und D (z. B. AddrA, AddrB, AddrC und AddrD) jeweils von demselben Unterblock (z. B. A1 des Blocks110 ) auf die Reihen 10, 11, 12 und 13 zugreifen. Anders ausgedrückt greift die Adresse A auf Daten von einer Adresse entsprechend Reihe 10 im Unterblock A1 zu, die Adresse B greift auf Daten von einer Adresse entsprechend Reihe 11 im Unterblock A1 zu, die Adresse C greift auf Daten von einer Adresse entsprechend Reihe 12 im Unterblock A1 zu, und die Adresse D greift auf Daten von einer Adresse entsprechend Reihe 13 im Unterblock A1 zu. Es wird angemerkt, dass die Adressen A, B, C und D nicht auf dieselbe Reihe des Unterblocks A zugreifen, sondern dass dies noch eine Adressenkollision ist, weil alle Adressen A, B, C und D Reihen in demselben physikalischen Unterblock A1 entsprechen. Es wird angemerkt, dass der Fall, bei dem alle der Adressen auf dieselbe Adresse zugreifen, in derselben Weise behandelt wird. - Die Lese-Operation wird wie folgt durchgeführt. Der Adressenport A greift auf die Reihe 10 im Unterblock A1 zu und gibt die Daten auf DOUTA aus. Der Adressenport B kann nicht gleichzeitig den Unterblock A1 verwenden, so dass ein Lesen der Reihe
11 (z. B. R11) von den Unterblöcken A0 und AX durchgeführt wird und die Daten als DOUTB ausgegeben werden. Es wird angemerkt, dass die Daten von Port B gerade durch die vorher beschriebenen Verfahren neu erzeugt worden sind, durch Durchführen von A0 ⊕ AX = A0 ⊕ (A1 ⊕ A0) = A1, unter Verwendung des XOR-Gatters310 . Der Adressenport C kann nicht gleichzeitig den Unterblock A1 oder A0 oder AX verwenden, so dass Lesen der Reihe12 in den Unterblöcken B1 und X1 durchgeführt wird und durch das XOR-Gatter312 für die Daten eine XOR-Verknüpfung durchgeführt wird, und die Daten als DOUTC an den jeweiligen Ausgangsport weitergeleitet werden. Der Adressenport D kann nicht gleichzeitig Unterblöcke verwenden, auf die bereits zugegriffen wird, so dass Lesen der Reihe13 in den Unterblöcken B0, BX, X0 und XX durch die XOR-Gatter314 und316 durchgeführt wird und von dem XOR-Gatter318 eine gemeinsame XOR-Verknüpfung für die Daten von den XOR-Gattern314 und316 durchgeführt wird und die Daten als DOUTD an den jeweiligen Ausgangsport weitergeleitet werden. Der Einfachheit halber ist hier dargestellt, dass das Durchführen der XOR-Verknüpfung für die als DOUTD auszusendenden Daten in zwei parallelen Stufen durchgeführt wird. Bei einigen Ausführungsformen können die XOR-Verknüpfungen nacheinander durchgeführt werden, um dasselbe logische Resultat zu ergeben. -
3B zeigt ein Schaltungsdiagramm einiger der Schlüsseldatenausgangspfad-Schaltungen. Das Diagramm zeigt SRAM-Kernzellen dargestellt durch einen SRAM-Block320 , einen Leseverstärker330 und einen separaten Datenausgangspfad für jeden Datenport. Jeder Datenpfad weist einen Multiplexer mit zwei Eingängen (z. B.340A ,340B ,340C oder340D ) gefolgt von einem jeweiligen XOR-Gatter (z. B.350A ,350B ,350C oder350D ) auf. Dieses Schaltungsdiagramm von3B repräsentiert die Spaltenschaltungen für jeden Unterblock der Speichervorrichtung100 von1 . Die Eingänge RDA_IN, RDB_IN, RDC_IN und RDD_IN, die oben in die Schaltung hereinkommen, kommen von den Ausgängen einer ähnlichen Datenausgangspfad-Schaltung in einem Unterblock, der (z. B. direkt oberhalb) an den Datenausgangspfad300B gekoppelt ist. - Wenn eine Lese-Operation durchgeführt wird, sind die Daten, die an jeden Ausgangsport weitergeleitet werden, entweder eine gepufferte Version der Daten, die aus dem Leseverstärker kommen, oder sie werden neu erzeugt durch Durchführen einer XOR-Verknüpfung für Daten, die aus den Leseverstärkern von verschiedenen Unterblöcken kommen. Die XOR-Gatter
350A ,350B ,350C und350D sind in Reihe geschaltet, und die Daten332 von einem Leseverstärker (z. B.330 ) eines Unterblocks können in einen der in Reihe geschalteten XOR-Bäume, die von einem Multiplexer (z. B.340A ) und einem korrespondierenden XOR-Gatter (z. B.350A ) gebildet werden, weitergeleitet werden. Die Portauswahlsignale PSA, PSB, PSC und PSD steuern, ob die Daten von dem Leseverstärker330 auf einen XOR-Baum (z. B. für einen gegebenen Port) weitergeleitet werden oder eine 0 in diesen XOR-Baum weitergeleitet wird. Das Weiterleiten einer 0 in den XOR-Baum zeigt an, dass die Daten von dem aktuellen Unterblock nicht verwendet werden, um die Daten zu erzeugen, die an den gegebenen Port gehen. - Bei einigen Implementierungen ist die Operation des Datenausgangspfads
300B wie folgt. Wenn ein WL in einem Speichermodul ausgelöst wird, wird der Portauswahleingang in diesem Modul ebenso ausgelöst. Die Portauswahlsignale PSA, PSB, PSC und PSD sind ”One-Hot”-Signale, die für jedes Modul separat sind. Das Weiterleiten der Daten332 von dem Leseverstärker332 impliziert, dass die Daten332 Teil des Datensatzes sind, für den eine XOR-Verknüpfung durchzuführen ist, um die Daten für diesen Port zu ergeben (z. B. RDA). Das Weiterleiten einer 0 zeigt an, dass die Daten332 nicht diesem Port entsprechen. Das Setzen aller PS Signale außer einem (z. B. PSA) für einen bestimmten Port auf 0 bedeutet, dass es keine Adressenkollision gab und die Daten332 von diesem Modul nur bei dem XOR Gatter (z. B.350A ) gepuffert werden und an den Ausgang weitergeleitet werden. Da die XOR Gatter350A ,350B ,350C und350D jedes Unterblocks in Reihe miteinander verbunden sind, erscheinen die richtigen Daten für jeden Port am Ende der Reihenverbindung. -
4 ist ein Flussdiagramm, das einen Beispielalgorithmus400 zum Durchführen einer Mehrlese-Operation zeigt, gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Die vorliegend beschriebene Mehrlese-Operation trifft beispielsweise auf die Leseschaltung von3A zu. Der Algorithmus startet an einem Steueroperationsblock410 , wo überprüft wird, ob eine Lese-Operation an einem primären Port (z. B. einem Port von A1 von3A ) angefordert wird. Wenn die Antwort negativ ist, wird zu einem Steueroperationsblock430 gegangen. Anderenfalls, wenn die Antwort positiv ist, wird die Steuerung an einen Operationsblock420 weitergegeben, wo eine Lese-Operation auf dem primären Port durchgeführt wird und der Inhalt der jeweiligen Adresse auf dem primären Ausgangsport (z. B. als DOUTA) ausgegeben wird, und die Steuerung wird an den Steueroperationsblock430 weitergegeben. Am Steueroperationsblock430 wird überprüft, ob eine Lese-Operation auf einem nächsten Port angefordert wird. Wenn die Antwort negativ ist, wird keine Lese-Operation durchgeführt. Wenn die Antwort jedoch positiv ist, wird die Steuerung an den Steueroperationsblock440 weitergegeben, wo überprüft wird, ob es eine Kollision mit einem vorherigen Port gibt (z. B. die Adressen zu einem einzigen Speicher-Unterblock gehören). Wenn keine Kollision aufgetreten ist, wird beim Operationsblock450 eine einfache Lese-Operation ohne XOR durchgeführt, der Ausgang an einen entsprechenden Port weitergeleitet, und die Steuerung wird an den Operationsblock430 weitergegeben. Wenn die Antwort positiv ist, werden beim Operationsblock460 äquivalente Reihen (z. B. R11 von3A ) in dem Unterblock der niedrigsten Ebene (z. B. A0 von3A ) ohne Kollision gelesen und mit dem jeweiligen Hilfs-Unterblock (z. B. AX) XOR-verknüpft, das Ergebnis wird an einen entsprechenden Ausgangsport ausgegeben, und die Steuerung wird an den Steueroperationsblock430 weitergegeben. - Bei einigen Implementierungen wird der Algorithmus
400 durch einen lokalen Prozessor durchgeführt, beispielsweise einen Prozessor oder einen Controller eines Netzwerk Switches oder Routers, oder durch einen fernen Prozessor wie zum Beispiel einen Cloud Prozessor. Bei einer oder mehreren Implementierungen ist der Algorithmus400 in Firmware oder Hardware, zum Beispiel einem feldprogrammierbaren Gate Array (FPGA), implementiert. -
5 zeigt ein Beispiel eines Verfahrens500 zum Bereitstellen einer Mehrfachlese-Speichervorrichtung mit hoher Bandbreite gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Zu Erläuterungszwecken sind die Blöcke des Beispielverfahrens500 vorliegend so beschrieben, dass sie der Reihe nach oder linear auftreten. Mehrere Blöcke des Beispielverfahrens500 können jedoch parallel auftreten. Außerdem müssen die Blöcke des Beispielverfahrens500 nicht in der gezeigten Reihenfolge durchgeführt werden und/oder einer oder mehrere der Blöcke des Beispielverfahrens500 muss/müssen nicht durchgeführt werden. - Gemäß dem Verfahren
500 ist eine Speichervorrichtung (z. B.100 von1 ) in mehrere Speicherblöcke (z. B.110 von1 ) einschließlich eines Hilfsspeicherblocks (z. B.120 von1 ) aufgeteilt, wobei jeder Speicherblock mehrere Speicher-Unterblöcke (z. B. A1, A0, B1, B0 von1 ) einschließlich eines Hilfsspeicher-Unterblocks (z. B. Ax oder BX von1 ) aufweist (510 ). Mehrere Ausgangsdatenbusse (z. B.140 von1 ) der Speichervorrichtung geben während einer Mehrfachlese-Operation Daten entsprechend Adressen (z. B. AddrA, AddrB, AddrC oder AddrD von1 ) entsprechend Adresseingangsbussen (z. B.130 von1 ) aus (520 ). -
6A –6B zeigen Beispiele einer differenziellen exklusiven OR(XOR)-Schaltung600A und einer korrespondierenden Wahrheitstabelle600B gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Bei einer oder mehreren Implementierungen weist eine differenzielle XOR-Schaltung600A eine Auswahllogikschaltung610 , einen Multiplexer620 und eine Vorladeschaltung630 auf. Die Auswahllogikschaltung610 empfängt ein unsymmetrisches Eingangssignal602 und ein Taktsignal604 und liefert komplementäre Ausgangssignale606 und608 entsprechend dem unsymmetrischen Eingangssignal602 . Bei einigen Implementierungen weist die Auswallogikschaltung610 Inverter612 und614 und NAND-Gatter616 und618 auf. Das NAND-Gatter616 empfängt als Eingänge ein Ausgangssignal von dem Inverter614 , das ähnlich dem Signal602 ist, und das Taktsignal604 , und liefert das Ausgangssignal606 . Das NAND-Gatter618 empfängt als Eingänge ein Ausgangssignal von dem Inverter612 (z. B. die invertierte Version des Signals602 ) und das Taktsignal604 , und liefert das Ausgangssignal608 . Bei einem oder mehreren Aspekten kann die Auswahllogikschaltung610 unter Verwendung von NOR-Gattern implementiert werden. - Der Multiplexer
620 empfängt ein differenzielles Eingangssignal BT und BF und die komplementären Ausgangssignale606 und608 und stellt während einer Auswertungsphase (z. B. wenn das Taktsignal604 hoch ist) ein differenzielles Ausgangssignal (z. B. OUTT und OUTF) an den Ausgangsknoten632 und634 bereit. Bei einer oder mehreren Implementierungen kann der Multiplexer620 durch Kreuzkoppeln von zwei MOS Pass Gates, die zum Beispiel durch die PMOS Transistor-Paare T1–T2 und T3–T4 gebildet werden, implementiert sein. Während der Auswertungsphase muss das Eingangssignal602 (z. B. A) bis zu einer nächsten Vorladungsphase, die damit startet, dass das Taktsignal604 zu niedrig übergeht, stabil sein. Bei einigen Implementierungen kann der Multiplexer602 anders implementiert sein, zum Beispiel durch NMOS Pass Gates oder andere Konfigurationen. - Während der Vorladungsphase lädt die Vorladeschaltung
630 die Ausgangsknoten632 und634 auf einen hohen Pegel (logisch 1) vor. Die Vorladeschaltung630 wird durch die Transistoren T5 und T6 und einen optionalen Transistor T7 implementiert. Die Transistoren T5–T7 sind PMOS Transistoren, können jedoch auch durch NMOS Transistoren implementiert werden. Das Taktsignal604 steuert das gemeinsame Gatter der Transistoren T5–T7, und wenn es niedrig ist, gestattet es den Transistoren T5 und T6, die Ausgangsknoten632 und634 auf den Spannungszufuhr-Spannungspegel VDD vorzuladen. Wie in der Wahrheitstabelle600b gezeigt ist, hängen die differenziellen Ausgangssignale DUTT und OUTF von dem unsymmetrischen Eingangssignal602 (z. B. A) ab und können mit dem differenziellen Eingangssignal (BT und BF) identisch sein oder ein Komplement des differenziellen Eingangssignals sein. Wenn zum Beispiel A logisch 0 ist, sind DUTT und OUTF identisch mit BT und BF. Wenn jedoch A logisch 1 ist, dann sind OUTT und OUTF Komplemente von BT und BF. Die Wahrheitstabelle600b stimmt mit einer differenziellen XOR Wahrheitstabelle für die Eingangssignale BT und BF überein, was die Operation der Schaltung600A als differenzielles XOR in der Auswertungsphase bestätigt. Die störungsfreie Art der XOR Schaltung600A kann der Wahrheitstabelle600b entnommen werden, die zeigt, dass in der Auswertungsphase nur eines von BT oder BF niedrig werden oder sein kann, und dann als Folge davon nur einer der Ausgänge (OUTT oder OUTF) niedrig werden kann. Bei vorbekannten XOR Schaltungen können jedoch je nach Ankunftszeiten der Eingänge mehrere Übergänge am Ausgang erkannt werden. - Bei einigen Implementierungen kann die störungsfreie XOR Schaltung mit niedriger dynamischer Leistung
600A verwendet werden, um die XOR Gatter von2 ,3A und3B zu implementieren, um zusätzliche Übergänge zu beseitigen, die dynamische Leistung in der peripheren XOR Logik (z. B. um ~80%) und dem peripheren XOR Bereich (z. B. um ~20%) zu reduzieren und einen voraussagbaren Verzögerungspfad für den ungünstigsten Fall zu erreichen. - Bei einigen Implementierungen kann die XOR Schaltung
600A in mehreren XOR Stufen implementiert werden, wie vorliegend erläutert ist. -
7 zeigt ein Beispiel einer mehrstufigen differenziellen XOR Schaltung700 gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Die mehrstufige differenzielle XOR Schaltung700 zeigt, wie vier der oben beschriebenen XOR Schaltungen (z. B.710-1 bis710-4 ) zu verbinden sind, um eine XOR Funktion mit 5 Eingängen zu erhalten, die die XOR Funktion A0 ⊕ A1 ⊕ A2 ⊕ A3 ⊕ B an den Eingängen A0, A1, A2, A3 und B durchführen kann. Der B Eingang ist ein unsymmetrischer Eingang, der durch den Inverter704 zu differenziell umgewandelt wird. Bei einigen Anwendungen kann der physikalische Abstand zwischen den XOR Funktionen groß sein, weil sie lange Leitungen überqueren müssen, wie in7 gezeigt ist, wobei die Widerstände720-1 bis720-4 verwendet werden, um die von den XOR Schaltungen710-1 bis710-4 überquerten langen Leitungen zu bezeichnen. Ein Leseverstärker740 wird verwendet, um das kleine differenzielle Signal des differenziellen Ausgangs des XOR Baums abzufühlen, um an einem Ausgangsknoten742 des Leseverstärkers740 ein endgültiges unsymmetrisches Ausgangssignal (OUT) auszugeben. Die Struktur jeder XOR Schaltung710 ist ähnlich der XOR Schaltung600A , und die BT und BF Eingänge jeder Stufe (z. B.710-3 ) sind das OUTT und OUTF einer vorhergehenden Stufe (z. B.710-2 ), das die langen Leitungen (z. B. durch die Widerstände720-2 bezeichnet) durchlaufen hat. Die 4-stufige differenzielle XOR Schaltung700 ist nur ein Beispiel und es können mehr Stufen in ähnlicher Art und Weise verbunden werden, um größere XOR Bäume zu bilden. -
8 zeigt ein Beispiel eines Kommunikationsgeräts800 , das Merkmale der gegenständlichen Technik verwendet, gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Beispiele des Kommunikationsgeräts800 beinhalten einen Ethernet Switch eines Ethernet Netzwerks, wie zum Beispiel eines privaten Netzwerks, das ein Datenzentrums-Netzwerk, ein Unternehmens-Netzwerk oder andere private Netzwerke aufweist. Das Kommunikationsgerät800 weist eine Anzahl von Eintritts(Eingangs)-Ports IP1–IPn und mehrere Austritts(Ausgangs)-Ports EP1–EPm auf. Bei einer oder mehreren Implementierungen können einer oder mehrere der Eingangsports IP1–IPn ein Datenpaket von einem anderen Switch oder einer Endpunktvorrichtung des Netzwerks empfangen. Das Kommunikationsgerät800 weist des Weiteren eine Hardware-Komponente, wie zum Beispiel eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit (ASIC))810 (die bei einigen Ausführungsformen als feldprogrammierbarer Gate Array (FPGA) implementiert sein kann), einen Puffer820 , einen Prozessor830 , einen Speicher840 und ein Softwaremodul850 auf. - Bei einigen Implementierungen kann die ASIC
810 geeignete Logik, Schaltung, Schnittstellen und/oder Code aufweisen, die dazu betreibbar sein können, Funktionalitäten einer PHY Schaltung durchzuführen. Der Puffer820 weist geeignete Logik, Schaltung, Code und/oder Schnittstellen auf, die dazu betreibbar sind, einen Datenblock zur Kommunikation durch einen oder mehrere der Ausgangsports EP1–EPm zu empfangen und zu speichern und/oder zu verzögern. Der Prozessor830 weist geeignete Logik, Schaltung und/oder Code auf, die das Verarbeiten von Daten und/oder das Steuern von Operationen des Kommunikationsgeräts800 ermöglichen können. In dieser Hinsicht kann der Prozessor830 befähigt sein, Steuersignale an verschiedene andere Abschnitte des Kommunikationsgeräts800 zu liefern. Der Prozessor830 steuert auch Datenübertragungen zwischen verschiedenen Abschnitten des Kommunikationsgeräts800 . Außerdem kann der Prozessor830 die Implementierung eines Betriebssystems ermöglichen oder anderweitig Code ausführen, um Operationen des Kommunikationsgeräts800 zu verwalten. Der Prozessor830 kann auch den Algorithmus400 von4 ausführen, um eine Mehrfachlese-Operation des Speichers840 durchzuführen. - Der Speicher
840 weist geeignete Logik, Schaltung und/oder Code auf, die das Speichern verschiedener Arten von Informationen, zum Beispiel empfangener Daten, erzeugter Daten, Code und/oder Konfigurationsinformationen, ermöglichen können. Der Speicher840 weist zum Beispiel RAM, ROM, Flash und/oder Magnetspeicher auf. Bei verschiedenen Ausführungsformen der gegenständlichen Technik kann der Speicher840 einen RAM, DRAM, SRAM, T-RAM, Z-RAM, TTRAM oder ein beliebiges anderes Speichermedium aufweisen. Der Speicher840 kann Softwaremodule850 aufweisen, die, wenn sie von einem Prozessor (z. B. dem Prozessor830 ) ausgeführt werden, einige oder alle der Funktionalitäten der ASIC810 durchführen können. Bei einigen Implementierungen weisen die Softwaremodule850 Code auf, der, wenn er von einem Prozessor ausgeführt wird, Funktionalitäten wie zum Beispiel die Konfiguration des Kommunikationsgeräts800 durchführen kann. - Bei einigen Implementierungen ist der Speicher
840 ein Breitband-Mehrport-Speicher, wie zum Beispiel die Speichervorrichtung100 von1 , und weist einen störungsfreien XOR Baum der gegenständlichen Technik (z. B.600A von6A ) auf. Dies kann zu einer signifikanten (z. B. ~50%) Verbesserung der Dichte im Vergleich zu bestehenden algorithmischen XOR Speichern mit zwei Ports führen, zu Kostenersparnis aufgrund reduzierter Chipfläche und zu Leistungsverbesserung aufgrund der zusätzlichen Fähigkeit gleichzeitiger Lese-Operationen. Die Verwendung des differenziellen XOR Baums der gegenständlichen Technik kann die dynamische Leistung in der peripheren XOR-Logik (z. B. um ~80%) und dem peripheren XOR-Bereich (z. B. um ~20%) wesentlich reduzieren und kann zu einem voraussagbaren Verzögerungspfad für den ungünstigsten Fall führen. - Für Fachleute ist es selbstverständlich, dass die verschiedenen erläuternden Blöcke, Module, Elemente, Komponenten und Verfahren, die vorliegend beschrieben wurden, als elektronische Hardware, Computersoftware oder Kombinationen aus beiden implementiert werden können. Um diese Austauschbarkeit von Hardware und Software zu zeigen, wurden verschiedene erläuternde Blöcke, Module, Elemente, Komponenten und Verfahren oben im Allgemeinen hinsichtlich ihrer Funktionalität beschrieben. Ob eine solche Funktionalität als Hardware oder als Software implementiert ist, hängt von der bestimmten Anwendung und den Gestaltungseinschränkungen ab, denen das Gesamtsystem unterliegt. Fachleute können die beschriebene Funktionalität in verschiedener Weise für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können unterschiedlich angeordnet (z. B. in verschiedener Reihenfolge angeordnet oder unterschiedlich aufgeteilt) werden, ohne vom Umfang der gegenständlichen Technik abzuweichen.
Claims (10)
- Mehrfachlese-Speichervorrichtung mit hoher Bandbreite, wobei die Vorrichtung aufweist: eine Vielzahl von Speicherblöcken einschließlich eines Hilfsspeicherblocks, wobei jeder der Vielzahl von Speicherblöcken eine Vielzahl von Speicher-Unterblöcken aufweist, wobei die Vielzahl von Speicher-Unterblöcken einen Hilfsspeicher-Unterblock aufweisen; eine Vielzahl von Adresseingangsbussen; und eine Vielzahl von Ausgangsdatenbussen, die dazu konfiguriert sind, während einer Mehrfachlese-Operation Daten entsprechend einer Vielzahl von Adressen auszugeben, wobei die Vielzahl von Adressen der Vielzahl von Adresseingangsbussen entsprechen, wobei die Vielzahl von Adressen einem einzigen Speicher-Unterblock der Vielzahl von Speicher-Unterblöcken eines Speicherblocks der Vielzahl von Speicherblöcken entsprechen.
- Vorrichtung nach Anspruch 1, wobei wenigstens einige der Vielzahl von Ausgangsdatenbussen dazu konfiguriert sind, durch ein oder mehrere XOR-Gatter mit wenigstens zwei Speicher-Unterblöcken verbunden zu werden, die sich von dem einzigen Speicher-Unterblock unterscheiden.
- Vorrichtung nach Anspruch 1, wobei ein erster Ausgangsdatenbus der Vielzahl von Ausgangsdatenbussen dazu konfiguriert ist, während der Mehrfachlese-Operation Daten entsprechend einer ersten Adresse der Vielzahl von Adressen entsprechend einem ersten Adresseingangsbus der Vielzahl von Adresseingangsbussen auszugeben, wobei jeder der Hilfsspeicher-Unterblöcke, der nicht Teil des Hilfsspeicherblocks ist, dazu konfiguriert ist, primäre Hilfsdaten zu enthalten, und wobei wenigstens ein XOR-Gatter dazu konfiguriert ist, die primären Hilfsdaten zu liefern, und dazu konfiguriert ist, während einer Schreib-Operation Eingangsdaten von wenigstens zwei der Vielzahl von Speicher-Unterblöcken eines jeweiligen der Vielzahl von Speicherblöcken zu empfangen, wobei die wenigstens zwei der Vielzahl von Speicher-Unterblöcken den jeweiligen der Hilfsspeicher-Unterblöcke aufweisen.
- Vorrichtung nach Anspruch 1, wobei jeder Hilfs-Speicher-Unterblock, der Teil des Hilfsspeicherblocks ist, dazu konfiguriert ist, sekundäre Hilfsdaten zu enthalten, wobei wenigstens ein XOR-Gatter dazu konfiguriert ist, die sekundären Hilfsdaten zu liefern, und dazu konfiguriert ist, während einer Schreib-Operation Eingangsdaten von wenigstens zwei der Vielzahl von Speicher-Unterblöcken von wenigstens zwei der Vielzahl von Speicherblöcken zu empfangen.
- Vorrichtung nach Anspruch 1, wobei ein letzter Hilfsspeicher-Unterblock des Hilfs-Speicherblocks dazu konfiguriert ist, ternäre Hilfsdaten zu enthalten, wobei wenigstens ein XOR-Gatter dazu konfiguriert ist, die ternären Hilfsdaten zu liefern, und dazu konfiguriert ist, während einer Schreib-Operation Eingangsdaten von wenigstens zwei Speicher-Unterblöcken des Hilfsspeicherblocks zu empfangen.
- Vorrichtung nach Anspruch 1, wobei ein zweiter Ausgangsdatenbus dazu konfiguriert ist, während der Mehrfachlese-Operation Daten entsprechend einer zweiten Adresse der Vielzahl von Adressen entsprechend einem zweiten Adresseingangsbus auszugeben, und wobei der zweite Ausgangsdatenbus mit einem ersten Lese-XOR-Gatter verbunden ist, das dazu konfiguriert ist, Daten von einem Speicher-Unterblock eines ersten Speicherblocks der Vielzahl von Speicherblöcken und einem jeweiligen Hilfsspeicher-Unterblock des ersten Speicherblocks der Vielzahl von Speicherblöcken zu empfangen.
- Vorrichtung nach Anspruch 1, wobei ein dritter Ausgangsdatenbus der Vielzahl von Ausgangsdatenbussen dazu konfiguriert ist, während der Mehrfachlese-Operation Daten entsprechend einer dritten Adresse der Vielzahl von Adressen entsprechend einem dritten Adresseingangsbus der Vielzahl von Adresseingangsbussen auszugeben, und wobei der dritte Ausgangsdatenbus mit einem zweiten Lese-XOR-Gatter verbunden ist, das dazu konfiguriert ist, Daten von einem Speicher-Unterblock eines zweiten Speicherblocks der Vielzahl von Speicherblöcken und einem jeweiligen Hilfsspeicher-Unterblock des zweiten Speicherblocks zu empfangen.
- Vorrichtung nach Anspruch 1, die des Weiteren einen Datenausgangspfad entsprechend jedem Speicher-Unterblock der Vielzahl von Speicher-Unterblöcken aufweist, wobei der Datenausgangspfad einen Multiplexer aufweist, der mit einem Ausgangs-XOR-Gatter verbunden ist, wobei Ausgangs-XOR-Gatter verbunden sind, um einen XOR-Baum mit Reihenschaltung zu bilden, und wobei ein Leseverstärker eines Speicher-Unterblocks dazu konfiguriert ist, Daten in eines von XOR des XOR-Baums mit Reihenschaltung weiterzuleiten.
- Differenzielle XOR-Schaltung, wobei die Schaltung aufweist: eine Auswahllogikschaltung, die dazu konfiguriert ist, ein unsymmetrisches Eingangssignal und ein Taktsignal zu empfangen, und ein komplementäres Ausgangssignal, das dem unsymmetrischen Eingangssignal entspricht, zu liefern; eine Vorladeschaltung, die dazu konfiguriert ist, Ausgangsknoten während einer Vorladungsphase vorzuladen; und einen Multiplexer, der dazu konfiguriert ist, ein differenzielles Eingangssignal und das komplementäre Ausgangssignal zu empfangen und während einer Auswertungsphase ein differenzielles Ausgangssignal an den Ausgangsknoten bereitzustellen.
- Verfahren zum Bereitstellen einer Mehrfachlese-Speichervorrichtung mit hoher Bandbreite, wobei das Verfahren umfasst: Aufteilen einer Speichervorrichtung in eine Vielzahl von Speicherblöcken einschließlich eines Hilfsspeicherblocks, wobei jeder Speicherblock der Vielzahl von Speicherblöcken eine Vielzahl von Speicher-Unterblöcken einschließlich eines Hilfsspeicher-Unterblocks aufweist; und Konfigurieren einer Vielzahl von Ausgangsdatenbussen der Speichervorrichtung, um während einer Mehrfachlese-Operation Daten entsprechend einer Vielzahl von Adressen entsprechend einer Vielzahl von Adress-Eingangsbussen auszugeben, wobei die Vielzahl von Adressen einem einzigen Speicher-Unterblock der Vielzahl von Speicher-Unterblöcken eines Speicherblocks der Vielzahl von Speicherblöcken entsprechen.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562118454P | 2015-02-19 | 2015-02-19 | |
US62/118,454 | 2015-02-19 | ||
US14/644,114 US9753667B2 (en) | 2015-02-19 | 2015-03-10 | High bandwidth memory and glitch-less differential XOR |
US14/644,11.4 | 2015-03-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102016001224A1 true DE102016001224A1 (de) | 2016-08-25 |
Family
ID=56577386
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102016015773.9A Active DE102016015773B3 (de) | 2015-02-19 | 2016-02-04 | Mehrfachlese- Speichervorrichtung |
DE102016001224.2A Pending DE102016001224A1 (de) | 2015-02-19 | 2016-02-04 | Speicher mit hoher Bandbreite und störungsfreies differenzielles XOR |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102016015773.9A Active DE102016015773B3 (de) | 2015-02-19 | 2016-02-04 | Mehrfachlese- Speichervorrichtung |
Country Status (4)
Country | Link |
---|---|
US (1) | US9753667B2 (de) |
CN (1) | CN105912484B (de) |
DE (2) | DE102016015773B3 (de) |
HK (1) | HK1222930A1 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11868804B1 (en) | 2019-11-18 | 2024-01-09 | Groq, Inc. | Processor instruction dispatch configuration |
US11360934B1 (en) | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
US11243880B1 (en) | 2017-09-15 | 2022-02-08 | Groq, Inc. | Processor architecture |
US11114138B2 (en) * | 2017-09-15 | 2021-09-07 | Groq, Inc. | Data structures with multiple read ports |
US11170307B1 (en) | 2017-09-21 | 2021-11-09 | Groq, Inc. | Predictive model compiler for generating a statically scheduled binary with known resource constraints |
US11144316B1 (en) | 2018-04-17 | 2021-10-12 | Ali Tasdighi Far | Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning |
US11537687B2 (en) | 2018-11-19 | 2022-12-27 | Groq, Inc. | Spatial locality transform of matrices |
TWI706414B (zh) * | 2019-05-27 | 2020-10-01 | 國立中山大學 | 記憶體內運算系統及其記憶體裝置 |
US10915298B1 (en) | 2019-10-08 | 2021-02-09 | Ali Tasdighi Far | Current mode multiply-accumulate for compute in memory binarized neural networks |
US11610104B1 (en) | 2019-12-30 | 2023-03-21 | Ali Tasdighi Far | Asynchronous analog accelerator for fully connected artificial neural networks |
US11615256B1 (en) | 2019-12-30 | 2023-03-28 | Ali Tasdighi Far | Hybrid accumulation method in multiply-accumulate for machine learning |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5040179A (en) * | 1989-08-18 | 1991-08-13 | Loral Aerospace Corp. | High data rate BCH encoder |
US5313475A (en) * | 1991-10-31 | 1994-05-17 | International Business Machines Corporation | ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme |
US5530824A (en) * | 1994-04-04 | 1996-06-25 | Motorola, Inc. | Address translation circuit |
US7073026B2 (en) * | 2002-11-26 | 2006-07-04 | Advanced Micro Devices, Inc. | Microprocessor including cache memory supporting multiple accesses per cycle |
US7254657B1 (en) * | 2005-04-29 | 2007-08-07 | Unisys Corporation | Dual mode capability for system bus |
US7856588B2 (en) * | 2006-10-19 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Data allocation in memory chips |
US9442846B2 (en) * | 2009-03-17 | 2016-09-13 | Cisco Technology, Inc. | High speed memory systems and methods for designing hierarchical memory systems |
US8438344B2 (en) * | 2010-03-12 | 2013-05-07 | Texas Instruments Incorporated | Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes |
-
2015
- 2015-03-10 US US14/644,114 patent/US9753667B2/en active Active
-
2016
- 2016-02-04 DE DE102016015773.9A patent/DE102016015773B3/de active Active
- 2016-02-04 DE DE102016001224.2A patent/DE102016001224A1/de active Pending
- 2016-02-18 CN CN201610090389.2A patent/CN105912484B/zh not_active Expired - Fee Related
- 2016-09-22 HK HK16111103.3A patent/HK1222930A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
DE102016015773B3 (de) | 2024-04-04 |
CN105912484A (zh) | 2016-08-31 |
HK1222930A1 (zh) | 2017-07-14 |
US9753667B2 (en) | 2017-09-05 |
CN105912484B (zh) | 2019-01-18 |
US20160246506A1 (en) | 2016-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102016015773B3 (de) | Mehrfachlese- Speichervorrichtung | |
DE3102799C2 (de) | Halbleiter-Speichervorrichtung | |
DE19740695C2 (de) | Datenspeicher mit Mehrebenenhierarchie | |
DE3906895C2 (de) | ||
DE112006004002B4 (de) | NBTI-resistente Speicherzellen mit Nand-Gliedern | |
DE4118804A1 (de) | Dynamische halbleiterspeicheranordnung mit hochgeschwindigkeit-reihenzugriffspaltendecodierer | |
DE102006062399A1 (de) | Halbleiterspeicherbauelement mit mehreren Speicherbereichen, Zugriffsverfahren und Testverfahren | |
DE202007018730U1 (de) | Inegrierte Schaltung mit abgestuftem Abschluss auf dem Chip | |
DE4415954A1 (de) | Datenspeichervorrichtung mit mehreren Eingängen mit verbesserter Zellenstabilität | |
DE102011053359A1 (de) | Latch-basierte Speichervorrichtung | |
DE4018296C2 (de) | ||
DE112016005762T5 (de) | Gemeinsame nutzung eines dram-datenpfads über einen geteilten lokalen datenbus | |
DE102019100477A1 (de) | Sram-speicher | |
DE10053700A1 (de) | Halbleiterspeicherbauelement mit Datenleitungspaaren | |
DE19829813A1 (de) | Integrierte Logikhalbleiterschaltungsvorrichtung mit einem eingebetteten dynamischen Direktzugriffsspeicher | |
DE69821691T2 (de) | Assoziatives Speichersystem | |
DE102022100200A1 (de) | Compute-In-Memory-Speicherarray, CIM-Speicherarray | |
DE3214230A1 (de) | Speicheranordnung mit mehrfach-zugriffsleitungen | |
DE1449806C3 (de) | Matrixspeicher | |
DE102018128927B4 (de) | Wortleitungsaktivierung für eine variable Verzögerung | |
DE2121490A1 (de) | Orthogonaler Datenspeicher | |
DE102019118926A1 (de) | Speicherredundanz | |
DE10211957B4 (de) | Ternäre inhaltsadressierbare Speicherzelle | |
DE102019201830A1 (de) | Integrierter Pegelumsetzer | |
DE10226102A1 (de) | Halbleiterspeicher mit verbesserter Softerror-Widerstandsfähigkeit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R130 | Divisional application to |
Ref document number: 102016015773 Country of ref document: DE |
|
R081 | Change of applicant/patentee |
Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LT, SG Free format text: FORMER OWNER: BROADCOM CORPORATION, IRVINE, CALIF., US Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE., SG Free format text: FORMER OWNER: BROADCOM CORPORATION, IRVINE, CALIF., US |
|
R082 | Change of representative |
Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, DE |
|
R081 | Change of applicant/patentee |
Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LT, SG Free format text: FORMER OWNER: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE, SG |
|
R082 | Change of representative |
Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, DE |
|
R016 | Response to examination communication | ||
R016 | Response to examination communication |