DE102016001224A1 - Speicher mit hoher Bandbreite und störungsfreies differenzielles XOR - Google Patents

Speicher mit hoher Bandbreite und störungsfreies differenzielles XOR Download PDF

Info

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
Application number
DE102016001224.2A
Other languages
English (en)
Inventor
Travis Hebig
Myron Buer
Carl Monzel
Richard Stephani
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.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Broadcom Corp
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 Broadcom Corp filed Critical Broadcom Corp
Publication of DE102016001224A1 publication Critical patent/DE102016001224A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single 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

Eine Mehrfachlese-Speichervorrichtung mit hoher Bandbreite weist mehrere Speicherblöcke, mehrere Adresseingangsbusse und eine Anzahl von Ausgangsdatenbussen auf. Die Speicherblöcke weisen einen Hilfsspeicherblock auf, und jeder Speicherblock weist mehrere Speicher-Unterblöcke einschließlich eines Hilfsspeicher-Unterblocks auf. Die Ausgangsdatenbusse geben während einer Mehrfachlese-Operation Daten entsprechend Adressen entsprechend den Adresseingangsbussen aus. Die Adressen entsprechen einem einzigen Speicher-Unterblock der Speicher-Unterblöcke eines Speicherblocks. Ebenso wird eine differenzielle XOR-Schaltung beschrieben, die eine Auswahllogikschaltung, eine Vorladeschaltung und einen Multiplexer aufweist. Die Auswahllogikschaltung liefert ein komplementäres Ausgangssignal, das einem unsymmetrischen Eingangssignal entspricht. Der Multiplexer liefert während einer Auswertungsphase ein differenzielles Ausgangssignal.

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 von 1 gemäß einer oder mehreren Implementierungen.
  • 3A3B zeigen Beispiele einer Leseschaltung und eines Datenausgangspfads der Mehrfachlese-Speichervorrichtung mit hoher Bandbreite von 1 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.
  • 6A6B 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 Bandbreite 100 gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Die Speichervorrichtung 100 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öcke 110 und 120 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 Hilfsblocks 120 ist dieselbe wie die Zählung der Unterblöcke anderer Blöcke (z. B. 110). Die Speichervorrichtung 100 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 Adresseingangsbusse 130 einschließlich beispielsweise vier Adresseingangsbussen entsprechend vier Eingangsadressen addrA, addrB, addrC und addrD auf. Die Speichervorrichtung 100 weist auch eine Anzahl von Ausgangsdatenbussen 140 auf, zum Beispiel doutA, doutB, doutC und doutD, um während einer Mehrfachlese-Operation Daten entsprechend mehreren Adressen entsprechend den Adresseingangsbussen 130 auszugeben. Die Adressen auf den Adresseingangsbussen 130 können einem einzigen Speicher-Unterblock (z. B. A1, A0, B1 oder B0) eines der Blöcke 110 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 Hilfsblocks 120, 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 Hilfsspeicherblock 120 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 oder 120) 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 Schreibschaltung 200 der Mehrfachlese-Speichervorrichtung mit hoher Bandbreite 100 von 1 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 in 2 gezeigt ist. Die in 2 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öcke 110 ab. Wenn zum Beispiel die Anzahl der Unterblöcke jedes Blocks 110 vier war, wurden XOR-Gatter mit drei Eingängen verwendet.
  • Bei der in 2 gezeigten Schreibschaltung 200 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-Gatter 210 wird verwendet, um die Boolsche Operation in Gl. 1 durchzuführen, was XOR von A1 und A0 bereitstellt. Das XOR-Gatter 220 führt die Boolesche Operation in Gl. 3 durch und stellt XOR von A1 und B1 bereit, was in den Unterblock X1 des Hilfsblocks 120 geschrieben wird. Schließlich führt XOR 230 die Boolesche Operation in Gl. 5 durch, was XOR von X1 und X0 bereitstellt. Es wird angemerkt, dass XOR 230 als einen seiner Eingänge den Ausgang von XOR 220 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.
  • 3A3B zeigen Beispiele einer Leseschaltung 300A und eines Datenausgangspfads 300B der Mehrfachlese-Speichervorrichtung mit hoher Bandbreite 100 von 1 gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Die Lese-Operation der gegenständlichen Technik wird durch eine beispielhafte Leseschaltung 300A durchgeführt. Die in 3A 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 Blocks 110) 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-Gatters 310. Der Adressenport C kann nicht gleichzeitig den Unterblock A1 oder A0 oder AX verwenden, so dass Lesen der Reihe 12 in den Unterblöcken B1 und X1 durchgeführt wird und durch das XOR-Gatter 312 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 Reihe 13 in den Unterblöcken B0, BX, X0 und XX durch die XOR-Gatter 314 und 316 durchgeführt wird und von dem XOR-Gatter 318 eine gemeinsame XOR-Verknüpfung für die Daten von den XOR-Gattern 314 und 316 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-Block 320, einen Leseverstärker 330 und einen separaten Datenausgangspfad für jeden Datenport. Jeder Datenpfad weist einen Multiplexer mit zwei Eingängen (z. B. 340A, 340B, 340C oder 340D) gefolgt von einem jeweiligen XOR-Gatter (z. B. 350A, 350B, 350C oder 350D) auf. Dieses Schaltungsdiagramm von 3B repräsentiert die Spaltenschaltungen für jeden Unterblock der Speichervorrichtung 100 von 1. 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 Datenausgangspfad 300B 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 und 350D sind in Reihe geschaltet, und die Daten 332 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ärker 330 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 Daten 332 von dem Leseverstärker 332 impliziert, dass die Daten 332 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 Daten 332 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 Daten 332 von diesem Modul nur bei dem XOR Gatter (z. B. 350A) gepuffert werden und an den Ausgang weitergeleitet werden. Da die XOR Gatter 350A, 350B, 350C und 350D 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 Beispielalgorithmus 400 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 von 3A zu. Der Algorithmus startet an einem Steueroperationsblock 410, wo überprüft wird, ob eine Lese-Operation an einem primären Port (z. B. einem Port von A1 von 3A) angefordert wird. Wenn die Antwort negativ ist, wird zu einem Steueroperationsblock 430 gegangen. Anderenfalls, wenn die Antwort positiv ist, wird die Steuerung an einen Operationsblock 420 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 Steueroperationsblock 430 weitergegeben. Am Steueroperationsblock 430 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 Steueroperationsblock 440 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 Operationsblock 450 eine einfache Lese-Operation ohne XOR durchgeführt, der Ausgang an einen entsprechenden Port weitergeleitet, und die Steuerung wird an den Operationsblock 430 weitergegeben. Wenn die Antwort positiv ist, werden beim Operationsblock 460 äquivalente Reihen (z. B. R11 von 3A) in dem Unterblock der niedrigsten Ebene (z. B. A0 von 3A) 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 Steueroperationsblock 430 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 Algorithmus 400 in Firmware oder Hardware, zum Beispiel einem feldprogrammierbaren Gate Array (FPGA), implementiert.
  • 5 zeigt ein Beispiel eines Verfahrens 500 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 Beispielverfahrens 500 vorliegend so beschrieben, dass sie der Reihe nach oder linear auftreten. Mehrere Blöcke des Beispielverfahrens 500 können jedoch parallel auftreten. Außerdem müssen die Blöcke des Beispielverfahrens 500 nicht in der gezeigten Reihenfolge durchgeführt werden und/oder einer oder mehrere der Blöcke des Beispielverfahrens 500 muss/müssen nicht durchgeführt werden.
  • Gemäß dem Verfahren 500 ist eine Speichervorrichtung (z. B. 100 von 1) in mehrere Speicherblöcke (z. B. 110 von 1) einschließlich eines Hilfsspeicherblocks (z. B. 120 von 1) aufgeteilt, wobei jeder Speicherblock mehrere Speicher-Unterblöcke (z. B. A1, A0, B1, B0 von 1) einschließlich eines Hilfsspeicher-Unterblocks (z. B. Ax oder BX von 1) aufweist (510). Mehrere Ausgangsdatenbusse (z. B. 140 von 1) der Speichervorrichtung geben während einer Mehrfachlese-Operation Daten entsprechend Adressen (z. B. AddrA, AddrB, AddrC oder AddrD von 1) entsprechend Adresseingangsbussen (z. B. 130 von 1) aus (520).
  • 6A6B zeigen Beispiele einer differenziellen exklusiven OR(XOR)-Schaltung 600A und einer korrespondierenden Wahrheitstabelle 600B gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Bei einer oder mehreren Implementierungen weist eine differenzielle XOR-Schaltung 600A eine Auswahllogikschaltung 610, einen Multiplexer 620 und eine Vorladeschaltung 630 auf. Die Auswahllogikschaltung 610 empfängt ein unsymmetrisches Eingangssignal 602 und ein Taktsignal 604 und liefert komplementäre Ausgangssignale 606 und 608 entsprechend dem unsymmetrischen Eingangssignal 602. Bei einigen Implementierungen weist die Auswallogikschaltung 610 Inverter 612 und 614 und NAND-Gatter 616 und 618 auf. Das NAND-Gatter 616 empfängt als Eingänge ein Ausgangssignal von dem Inverter 614, das ähnlich dem Signal 602 ist, und das Taktsignal 604, und liefert das Ausgangssignal 606. Das NAND-Gatter 618 empfängt als Eingänge ein Ausgangssignal von dem Inverter 612 (z. B. die invertierte Version des Signals 602) und das Taktsignal 604, und liefert das Ausgangssignal 608. Bei einem oder mehreren Aspekten kann die Auswahllogikschaltung 610 unter Verwendung von NOR-Gattern implementiert werden.
  • Der Multiplexer 620 empfängt ein differenzielles Eingangssignal BT und BF und die komplementären Ausgangssignale 606 und 608 und stellt während einer Auswertungsphase (z. B. wenn das Taktsignal 604 hoch ist) ein differenzielles Ausgangssignal (z. B. OUTT und OUTF) an den Ausgangsknoten 632 und 634 bereit. Bei einer oder mehreren Implementierungen kann der Multiplexer 620 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 Eingangssignal 602 (z. B. A) bis zu einer nächsten Vorladungsphase, die damit startet, dass das Taktsignal 604 zu niedrig übergeht, stabil sein. Bei einigen Implementierungen kann der Multiplexer 602 anders implementiert sein, zum Beispiel durch NMOS Pass Gates oder andere Konfigurationen.
  • Während der Vorladungsphase lädt die Vorladeschaltung 630 die Ausgangsknoten 632 und 634 auf einen hohen Pegel (logisch 1) vor. Die Vorladeschaltung 630 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 Taktsignal 604 steuert das gemeinsame Gatter der Transistoren T5–T7, und wenn es niedrig ist, gestattet es den Transistoren T5 und T6, die Ausgangsknoten 632 und 634 auf den Spannungszufuhr-Spannungspegel VDD vorzuladen. Wie in der Wahrheitstabelle 600b gezeigt ist, hängen die differenziellen Ausgangssignale DUTT und OUTF von dem unsymmetrischen Eingangssignal 602 (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 Wahrheitstabelle 600b stimmt mit einer differenziellen XOR Wahrheitstabelle für die Eingangssignale BT und BF überein, was die Operation der Schaltung 600A als differenzielles XOR in der Auswertungsphase bestätigt. Die störungsfreie Art der XOR Schaltung 600A kann der Wahrheitstabelle 600b 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 von 2, 3A und 3B 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 Schaltung 700 gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Die mehrstufige differenzielle XOR Schaltung 700 zeigt, wie vier der oben beschriebenen XOR Schaltungen (z. B. 710-1 bis 710-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 Inverter 704 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 in 7 gezeigt ist, wobei die Widerstände 720-1 bis 720-4 verwendet werden, um die von den XOR Schaltungen 710-1 bis 710-4 überquerten langen Leitungen zu bezeichnen. Ein Leseverstärker 740 wird verwendet, um das kleine differenzielle Signal des differenziellen Ausgangs des XOR Baums abzufühlen, um an einem Ausgangsknoten 742 des Leseverstärkers 740 ein endgültiges unsymmetrisches Ausgangssignal (OUT) auszugeben. Die Struktur jeder XOR Schaltung 710 ist ähnlich der XOR Schaltung 600A, 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ände 720-2 bezeichnet) durchlaufen hat. Die 4-stufige differenzielle XOR Schaltung 700 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äts 800, das Merkmale der gegenständlichen Technik verwendet, gemäß einer oder mehreren Implementierungen der gegenständlichen Technik. Beispiele des Kommunikationsgeräts 800 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ät 800 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ät 800 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 Puffer 820, einen Prozessor 830, einen Speicher 840 und ein Softwaremodul 850 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 Puffer 820 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 Prozessor 830 weist geeignete Logik, Schaltung und/oder Code auf, die das Verarbeiten von Daten und/oder das Steuern von Operationen des Kommunikationsgeräts 800 ermöglichen können. In dieser Hinsicht kann der Prozessor 830 befähigt sein, Steuersignale an verschiedene andere Abschnitte des Kommunikationsgeräts 800 zu liefern. Der Prozessor 830 steuert auch Datenübertragungen zwischen verschiedenen Abschnitten des Kommunikationsgeräts 800. Außerdem kann der Prozessor 830 die Implementierung eines Betriebssystems ermöglichen oder anderweitig Code ausführen, um Operationen des Kommunikationsgeräts 800 zu verwalten. Der Prozessor 830 kann auch den Algorithmus 400 von 4 ausführen, um eine Mehrfachlese-Operation des Speichers 840 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 Speicher 840 weist zum Beispiel RAM, ROM, Flash und/oder Magnetspeicher auf. Bei verschiedenen Ausführungsformen der gegenständlichen Technik kann der Speicher 840 einen RAM, DRAM, SRAM, T-RAM, Z-RAM, TTRAM oder ein beliebiges anderes Speichermedium aufweisen. Der Speicher 840 kann Softwaremodule 850 aufweisen, die, wenn sie von einem Prozessor (z. B. dem Prozessor 830) ausgeführt werden, einige oder alle der Funktionalitäten der ASIC 810 durchführen können. Bei einigen Implementierungen weisen die Softwaremodule 850 Code auf, der, wenn er von einem Prozessor ausgeführt wird, Funktionalitäten wie zum Beispiel die Konfiguration des Kommunikationsgeräts 800 durchführen kann.
  • Bei einigen Implementierungen ist der Speicher 840 ein Breitband-Mehrport-Speicher, wie zum Beispiel die Speichervorrichtung 100 von 1, und weist einen störungsfreien XOR Baum der gegenständlichen Technik (z. B. 600A von 6A) 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
DE102016001224.2A 2015-02-19 2016-02-04 Speicher mit hoher Bandbreite und störungsfreies differenzielles XOR Pending DE102016001224A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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