DE102021107093A1 - Speicherinterne rechenschaltung und verfahren - Google Patents

Speicherinterne rechenschaltung und verfahren Download PDF

Info

Publication number
DE102021107093A1
DE102021107093A1 DE102021107093.7A DE102021107093A DE102021107093A1 DE 102021107093 A1 DE102021107093 A1 DE 102021107093A1 DE 102021107093 A DE102021107093 A DE 102021107093A DE 102021107093 A1 DE102021107093 A1 DE 102021107093A1
Authority
DE
Germany
Prior art keywords
bits
data item
data
generate
memory
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
DE102021107093.7A
Other languages
English (en)
Inventor
Yu-Der Chih
Hidehiro Fujiwara
Yi-Chun Shih
Po-Hao Lee
Yen-Huei Chen
Chia-Fu Lee
Jonathan Tsung-Yung Chang
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.)
Taiwan Semiconductor Manufacturing Co TSMC Ltd
Original Assignee
Taiwan Semiconductor Manufacturing Co TSMC Ltd
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 Taiwan Semiconductor Manufacturing Co TSMC Ltd filed Critical Taiwan Semiconductor Manufacturing Co TSMC Ltd
Publication of DE102021107093A1 publication Critical patent/DE102021107093A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4074Power supply or voltage generation circuits, e.g. bias voltage generators, substrate voltage generators, back-up power, power control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1036Read-write modes for single port memories, i.e. having either a random port or a serial port using data shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)
  • Dram (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Semiconductor Memories (AREA)

Abstract

Eine Speicherschaltung weist eine Auswahlschaltung, eine Spalte von Speicherzellen und einen Addiererbaum auf. Die Auswahlschaltung ist konfiguriert, Eingangsdatenelemente zu empfangen, wobei jedes Eingangsdatenelement eine Anzahl von Bits gleich H enthält, und einen ausgewählten Satz von k-ten Bits der H Bits der Eingangsdatenelemente auszugeben. Jede Speicherzelle der Spalte von Speicherzellen weist eine erste Datenspeichereinheit auf, die konfiguriert ist, ein erstes Gewichtsdatenelement zu speichern, und einen ersten Multiplizierer, der konfiguriert ist, ein erstes Produktdatenelement basierend auf dem ersten Gewichtsdatenelement und einem ersten k-ten Bit des ausgewählten Satzes von k-ten Bits zu erzeugen. Der Addiererbaum ist konfiguriert, ein Summierungsdatenelement basierend auf jedem der ersten Produktdatenelemente zu erzeugen.

Description

  • PRIORITÄTSANSPRUCH
  • Die vorliegende Anmeldung beansprucht die Priorität der vorläufigen US Anmeldung Nr. 63/051,497 , eingereicht am 14. Juli 2020, die durch Bezugnahme in die vorliegende Anmeldung aufgenommen wird.
  • STAND DER TECHNIK
  • Speichergruppen werden häufig zum Speichern von und Zugreifen auf Daten verwendet, die für verschiedene Arten von Berechnungen verwendet werden, wie logische oder mathematische Operationen. Zur Durchführung dieser Operationen werden Datenbits zwischen den Speichergruppen und Schaltungen bewegt, die zum Durchführen der Berechnungen verwendet werden. In manchen Fällen enthalten Berechnungen mehrere Schichten von Operationen und die Ergebnisse einer ersten Operation werden als Eingangsdaten in einer zweiten Operation verwendet.
  • Figurenliste
  • Aspekte der vorliegenden Offenbarung lassen sich am besten anhand der folgenden detaillierten Beschreibung in Verbindung mit den beiliegenden Zeichnungen verstehen. Es ist zu beachten, dass gemäß der branchenüblichen Praxis verschiedene Merkmale nicht maßstabsgetreu dargestellt sind. Tatsächlich können die Abmessungen der verschiedenen Merkmale zugunsten einer klaren Erläuterung willkürlich vergrößert oder verkleinert sein.
    • 1A und 1B sind Diagramme von Speicherschaltungen gemäß manchen Ausführungsformen.
    • 2 ist ein Diagramm einer Auswahlschaltung gemäß manchen Ausführungsformen.
    • 3A und 3B sind Diagramme von Speicherzellen gemäß manchen Ausführungsformen.
    • 4 ist ein Diagramm eines Addiererbaums gemäß manchen Ausführungsformen.
    • 5 ist ein Diagramm eines Akkumulators gemäß manchen Ausführungsformen.
    • 6 ist ein Diagramm eines Abschnitts einer Speichergruppe gemäß manchen Ausführungsformen.
    • 7A und 7B sind Diagramme von Abschnitten einer Speicherschaltung gemäß manchen Ausführungsformen.
    • 8 ist ein Diagramm einer Speicherschaltungsbetriebsspannung gemäß manchen Ausführungsformen.
    • 9 ist ein Ablaufdiagramm eines Verfahrens zum Betreiben einer Speicherschaltung gemäß manchen Ausführungsformen.
    • 10 ist ein Ablaufdiagramm eines Verfahrens zum Betreiben einer Speicherschaltung gemäß manchen Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Offenbarung stellt viele verschiedene Ausführungsformen, oder Beispiele, zum Implementieren verschiedener Merkmale des bereitgestellten Gegenstands bereit. Spezifische Beispiele von Komponenten, Werten, Operationen, Materialien, Anordnungen oder dergleichen werden unten beschrieben, um die vorliegende Offenbarung zu vereinfachen. Diese sind selbstverständlich bloß Beispiele und nicht beabsichtigt einschränkend zu sein. Andere Komponenten, Werte, Operationen, Materialien, Anordnungen oder dergleichen werden in Betracht gezogen. Zum Beispiel kann die Bildung eines ersten Merkmals über oder auf einem zweiten Merkmal in der folgenden Beschreibung Ausführungsformen enthalten, in denen das erste und das zweite Merkmal in direktem Kontakt gebildet sind, und kann auch Ausführungsformen enthalten, in denen zusätzliche Merkmale zwischen dem ersten und dem zweiten Merkmal gebildet sein können, sodass das erste und das zweite Merkmal nicht in direktem Kontakt sein könnten. Zusätzlich kann die vorliegende Offenbarung Referenznummern und/oder -buchstaben in den unterschiedlichen Beispielen wiederholen. Diese Wiederholung dient dem Zweck der Vereinfachung und Klarheit und gibt selbst keine Beziehung zwischen den unterschiedlichen besprochenen Ausführungsformen und/oder Konfigurationen vor.
  • Weiter können räumlich relative Ausdrücke wie „unterliegend“, „unterhalb“, „unter“, „überliegend“, „ober“ und dergleichen hierin zur Erleichterung der Beschreibung verwendet werden, um die Beziehung eines Elements oder Merkmals zu (einem) anderen Element(en) oder Merkmal(en) wie in den Figuren veranschaulicht zu beschreiben. Die räumlich relativen Ausdrücke sind beabsichtigt, verschiedene Ausrichtungen des Bauelements in Verwendung oder Betrieb zusätzlich zu der in den Figuren abgebildeten Ausrichtung zu umschließen. Die Vorrichtung kann anders ausgerichtet sein (um 90 Grad gedreht oder bei anderen Ausrichtungen) und die hierin verwendeten räumlich relativen Beschreibungsausdrücke können ebenso entsprechend ausgelegt werden.
  • In verschiedenen Ausführungsformen weist eine Speichergruppe einer Speicherschaltung sowohl Speicher- als auch mathematische Operationseinheiten auf und ist dadurch konfiguriert, eine speicherinterne Berechnung durchzuführen, wobei eine Teilsumme basierend auf Eingangsdatenelementen und gespeicherten Gewichtsdatenelementen erzeugt wird. Verglichen mit Ansätzen, in welchen Speichergruppen keine Elemente enthalten, die konfiguriert sind, speicherinterne Berechnungen durchzuführen, sind solche Speicherschaltungen imstande, Teilsummen unter Verwendung kleinerer Bereiche und niedrigerer Leistungspegel zu erzeugen. In verschiedenen Anwendungen, z.B. neuronalen Faltnetzwerkanwendungen (CNN-Anwendungen), ermöglichen die Speicherschaltungen eine effiziente Anwendung von Gruppen von gespeicherten Gewichtsdatenelementen in Multiplikations- und Akkumulationsoperationen (MAC-Operationen) bei einem Satz oder mehreren Sätzen von Eingangsdatenelementen.
  • 1A und 1B sind Diagramme von Speicherschaltung 100A bzw. 100B gemäß manchen Ausführungsformen. Jede Speicherschaltung 100A und 100B weist eine Auswahlschaltung 110 gekoppelt an einen Eingangsdatenbus IDB und an eine entsprechende Speichergruppe 120A oder 120B, eine Eingangs-/Ausgangsschaltung (I/O-Schaltung) 130 und eine Anzahl M von Akkumulatoren 140, gekoppelt an die entsprechende Speichergruppe 120A oder 120B, und eine Steuerschaltung 150, gekoppelt an jede von Auswahlschaltung 110, die entsprechende Speichergruppe 120A oder 120B, I/O Schaltung 130 und jeden Akkumulator 140 durch einen Steuersignalbus CTRLB, auf.
  • Jede Speichergruppe 120A und 120B weist M Spalten C1-CM entsprechend den M Akkumulatoren 140 auf. Speichergruppe 120A weist eine Anzahl N von Reihen von Speicherzellen BCX auf, die jeweils einen einzelnen Eingangsanschluss (nicht markiert) und einen einzelne Ausgangsanschluss (nicht markiert) aufweisen, wodurch jeder Eingangsanschluss einer von N Reihen von Daten von Speichergruppe 120B entspricht. Speichergruppe 120B weist N/2 Reihen von Speicherzellen BX2 auf, die jeweils zwei Eingangsanschlüsse (nicht markiert) und einen einzelnen Ausgangsanschluss (nicht markiert) aufweisen, wodurch jeder Eingangsanschluss einer von N Reihen von Daten von Speichergruppe 120B entspricht. Wie unten besprochen, ist dadurch jede Speicherschaltung 100A und 100B konfiguriert, mehrere N Eingangsdatenelemente A1-AN auf Eingangsdatenbus IDB zu empfangen, wobei jedes Eingangsdatenelement A1-AN eine Anzahl von Bits gleich H enthält.
  • Tabelle 1 zeigt eine Datenstruktur von Eingangsdatenelementen Ai-AN, in der jedes der N Eingangsdatenelemente A1-AN H Bits von Daten enthält. Tabelle 1
    Datenelement Bit 1 Bit 2 .. Bit H
    A1 A11 A12 .. A1H
    A2 A21 A22 .. A2H
    : : : : :
    AN AN1 AN2 .. ANH
  • Wie unten besprochen, sind Speicherschaltungen 100A und 100B so konfiguriert, dass in Betrieb jede Spalte C1-CM jeder Speichergruppe 120A und 120B gleichzeitig ein gleich nummeriertes Bit (k-te Bit) jedes Eingangsdatenelements A1-AN, d.h. einen Satz von Bits A1k-ANk, von Auswahlschaltung 110 empfängt. Jede Spalte führt eine mathematische Operation basierend auf dem empfangenen Satz von Bits A1k-ANk und Gewichtsdatenelementen durch, die in entsprechenden Speicherzelle BCX oder BX2 gespeichert sind, wodurch die Anzahl M von Summierungsdatenelementen SD1-SDM entsprechend Spalten C1-CM erzeugt wird.
  • Ein Zähler k läuft durch jedes der H Bits, z.B. von 1 bis H, sodass Auswahlschaltung 110 Sätze von Bits A1k-ANk sequenziell ausgewählt ausgibt, und jede Spalte wiederholt die mathematische Operation an dem ausgewählten Satz von Bits A1k-ANk für jeden Wert von Zähler k, wodurch eine Abfolge von H Summierungsdatenelementen SD1-SDM erzeugt wird. Akkumulatoren 140 sind konfiguriert, entsprechende Teilsummen PS1-PSM basierend auf der Abfolge von Summierungsdatenelementen SD1-SDM zu erzeugen und die Teilsummen PS1-PSM an entsprechenden Ausgangsanschlüssen Oi-OM auszugeben.
  • In der Ausführungsform, die in 1A gezeigt ist, weist Speichergruppe 120A Speicherzellen BCX auf, die konfiguriert sind, jeweils ein Bit der sequenziell ausgewählten Sätze von k-ten Bits von Eingangsdatenelementen A1-AN zu empfangen, und in der Ausführungsform, die in 1B gezeigt ist, weist Speichergruppe 120B Speicherzellen BX2 auf, die konfiguriert sind, jeweils zwei Bits von angrenzenden Datenelementen der sequenziell ausgewählten Sätze von k-ten Bits von Eingangsdatenelementen A1-AN zu empfangen. Jede Speicherschaltung 100A und 100B ist dadurch konfiguriert, zur Ausführung eines Teils oder der Gesamtheit eines Verfahrens imstande zu sein, z.B. eines oder beider von Verfahren 900 oder 1000, die unten in Bezug auf 9 und 10 besprochen sind, durch die eine speicherinterne Berechnung durchgeführt wird.
  • In verschiedenen Ausführungsformen ist eine Speicherschaltung 100A oder 100B in einem neuronalen Netzwerk, z.B. einem CNN, einem Sensor, z.B. einem magnetischen, Bild-, Vibrations- oder Gyrosensor, einer Funkfrequenzvorrichtung (RF-Vorrichtung) oder einer anderen IC-Vorrichtung enthalten.
  • Jede Speicherschaltung 100A und 100B ist für den Zweck der Veranschaulichung vereinfacht. In verschiedenen Ausführungsformen weisen eine oder beide von Speicherschaltung 100A oder 100B verschiedene Elemente zusätzlich zu jenen auf, die in 1A und 1B gezeigt sind oder anderswie angeordnet sind, um die unten besprochenen Operationen durchzuführen.
  • Zwei oder mehr Schaltungselemente werden basierend auf einer oder mehreren direkten Signalverbindungen und/oder einer oder mehreren indirekten Signalverbindungen als gekoppelt angesehen, die eine oder mehr Logikvorrichtungen, z.B. einen Inverter oder ein Logikgate, zwischen den zwei oder mehr Schaltungselementen aufweisen. In manchen Ausführungsformen können Signalkommunikationen zwischen den zwei oder mehr gekoppelten Schaltungselementen durch die eine oder mehreren Logikvorrichtungen modifiziert werden, z.B. invertiert oder konditionell gemacht werden.
  • Auswahlschaltung 110 ist eine elektronische Schaltung, die ein oder mehrere Datenregister (in 1A und 1B nicht dargestellt), gekoppelt an Eingangsdatenbus IDB, und einen oder mehrere Multiplexer oder ähnliche Schaltungen (in 1A und 1B nicht dargestellt), gekoppelt an das eine oder die mehreren Datenregister und an Steuersignalbus CTRLB, aufweist.
  • Ein Datenregister, auch als ein Puffer in manchen Ausführungsformen bezeichnet, ist eine elektronische Schaltung, die konfiguriert ist, vorübergehend einige oder alle eines oder mehrerer Datenelemente zu speichern, z.B. die H Bits jedes Eingangsdatenelements A1-AN. In verschiedenen Ausführungsformen weist ein Datenregister einen einzelnen Satz von Anschlüssen auf, die konfiguriert sind, Datenbits einzugeben und auszugeben, oder separate Sätze von Anschlüssen, die konfiguriert sind Datenbits einzugeben und auszugeben.
  • Ein Multiplexer ist eine elektronische Schaltung, die einen ersten Satz von Anschlüssen, die konfiguriert sind, mehrere Signale, z.B. die H Bits eines von Eingangsdatenelementen A1-AN zu empfangen, eine oder mehrere Schaltvorrichtungen, z.B. Transistoren, die konfiguriert sind, ein oder mehrere Steuersignale, z.B. Steuersignale CTRL, zu empfangen, und mindestens einen Anschluss, der konfiguriert ist, ein ausgewähltes der empfangenen Signale in Reaktion auf das eine oder die mehreren Steuersignale auszugeben, aufweist.
  • Auswahlschaltung 110 ist dadurch konfiguriert, die H Bits jedes Eingangsdatenelements A1-AN zu speichern, die auf Eingangsdatenbus IDB empfangen werden, und in Reaktion auf ein oder mehrere Steuersignale CTRL, die auf Steuersignalbus CTRLB empfangen werden, einen Satz von ausgewählten k-ten Bits A1k-ANk an die entsprechende von Speichergruppe 120A oder 120B auszugeben. Für jedes Eingangsdatenelement A1-AN ist das entsprechende ausgewählte k-te Bit A1k-ANk ein selbes k-tes Bit aller K Bits. In manchen Ausführungsformen weist Auswahlschaltung 110 eine Auswahlschaltung 200 auf, wie unten in Bezug auf 2 besprochen.
  • In manchen Ausführungsformen ist Auswahlschaltung 110 konfiguriert, die Anzahl N von Eingangsdatenelementen A1-AN im Bereich von 4 bis 512 zu empfangen. In manchen Ausführungsformen ist Auswahlschaltung 110 konfiguriert, die Anzahl N von Eingangsdatenelementen A1-AN im Bereich von 32 bis 128 zu empfangen.
  • In manchen Ausführungsformen ist Auswahlschaltung 110 konfiguriert, die Anzahl H von Bits jedes Eingangsdatenelements A1-AN im Bereich von 1 bis 16 zu empfangen. In manchen Ausführungsformen ist Auswahlschaltung 110 konfiguriert, die Anzahl H von Bits jedes Eingangsdatenelements A1-AN im Bereich von 4 bis 8 zu empfangen.
  • In verschiedenen Ausführungsformen sind das eine oder die mehreren Steuersignale CTRL konfiguriert, in Betrieb Auswahlschaltung 110 zu veranlassen, die Sätze von k-ten Bits A1k-ANk von einem niedrigstwertigen Bit (LSB) bis zu einem höchstwertigen Bit (MSB) oder von einem MSB bis zu einem LSB sequenziell auszugeben. In verschiedenen Ausführungsformensind das eine oder die mehreren Steuersignale CTRL konfiguriert, in Betrieb Auswahlschaltung 110 zu veranlassen, der Reihe eine Gesamtheit der Anzahl H von Sätzen von Bits oder einen Teilsatz der Anzahl H von Sätzen von Bits auszugeben. In manchen Ausführungsformen weist jedes Eingangsdatenelement A1-AN eine Anzahl von Bits auf, die geringer als H Bits ist, und das eine oder die mehreren Steuersignale CTRL sind konfiguriert, Auswahlschaltung 110 zu veranlassen, eine Gesamtheit oder einen Teilsatz der Anzahl von empfangenen Bits sequenziell auszugeben.
  • In verschiedenen Ausführungsformen sind das eine oder die mehreren Steuersignale CTRL konfiguriert, in Betrieb Auswahlschaltung 110 zu veranlassen, für jeden Wert von Zähler k eine Gesamtheit oder einen Teilsatz des entsprechenden ausgewählten Satzes von k-ten Bits A1k-ANk auszugeben. In manchen Ausführungsformen weisen mehrere Eingangsdatenelemente eine Anzahl von Datenelementen von weniger als N auf und das eine oder die mehreren Steuersignale CTRL sind konfiguriert, für jeden Wert von Zähler k Auswahlschaltung 110 zu veranlassen, eine Gesamtheit oder einen Teilsatz des entsprechenden Satzes von k-ten Bits A1k-ANk der Anzahl von empfangenen Datenelementen auszugeben.
  • Jede Speichergruppe 120A und 120B ist eine elektronische Schaltung, die M Spalten C1-CM aufweist, wobei jede Spalte C1-CM einen Addiererbaum 122, wie unten besprochen, und entsprechende Speicherzellen BCX oder BX2, gekoppelt an den Addiererbaum 122, aufweist. Die Speicherzelle BCX oder BX2 jeder Spalte C1-CM sind weiter an Auswahlschaltung 110 gekoppelt und dadurch so konfiguriert, dass in Betrieb jede Spalte C1-CM gleichzeitig den ausgewählten Satz von k-ten Bits A1k-ANk empfängt, der von Auswahlschaltung 110 basierend auf Zähler k ausgegeben wird.
  • Da jede Speicherzelle BCX konfiguriert ist, die Bits eines einzelnen Datenelements A1-AN zu empfangen, weist Speichergruppe 120A insgesamt N Reihen Ri-RN von Speicherzellen BCX auf, sodass jede Reihe R1-RN einer Reihe von Daten von Speichergruppe 120A entspricht. Da jede Speicherzelle BX2 konfiguriert ist, die Bits von zwei Datenelementen Ai-AN zu empfangen, weist Speichergruppe 120B insgesamt L Reihen R1-RL von Speicherzellen BX2 auf, wobei die Anzahl L gleich N/2 ist, sodass jede Reihe R1-RL zwei Reihen von Daten von Speichergruppe 120B entspricht. In den Ausführungsformen, die in 1A und 1B gezeigt sind, weist jede Instanz einer Speicherzelle BCX oder BX2 einen Positionsindikator, z.B. 21, auf, entsprechend der Spalte und Reihe, in der sich die gegebene Instanz befindet.
  • In manchen Ausführungsformen weist Speichergruppe 120A oder 120B die Anzahl M von Spalten C1-CM im Bereich von 2 bis 512 auf. In manchen Ausführungsformen weist Speichergruppe 120A oder 120B die Anzahl M von Spalten C1-CM im Bereich von 16 bis 128 auf.
  • In den Ausführungsformen, die in 1A und 1B gezeigt sind, weist jede Speichergruppe 120A und 120B eine einzelne Gruppenschicht von Reihen Ri-RN oder R1-RL und Spalten C1-CM auf. In manchen Ausführungsformen weist eine oder beide von Speichergruppe 120A oder 120B eine oder mehrere Gruppenschichten (nicht dargestellt) zusätzlich zu der einzelnen Schicht auf, die in 1A und 1B gezeigt ist, wodurch Reihen und Spalten zusätzlich zu jenen einer einzelnen Schicht enthalten sind.
  • Eine Speicherzelle BCX weist ein Datenspeicherelement auf, das an einen Multiplizierer (in 1A und 1B nicht dargestellt) gekoppelt ist. Ein Datenspeicherelement ist eine elektrische, elektromechanische, elektromagnetische oder andere Vorrichtung, die konfiguriert ist, ein oder mehr Datenbits zu speichern, die durch logische Zustände dargestellt sind. In manchen Ausführungsformen entspricht ein logischer Zustand einem Spannungspegel einer elektrischen Ladung, die in einem Abschnitt oder der Gesamtheit eines Datenspeicherelements gespeichert ist. In manchen Ausführungsformen entspricht ein logischer Zustand einer physikalischen Eigenschaft, z.B. einem Widerstand oder einer magnetischen Orientierung, eines Abschnitts oder einer Gesamtheit eines Datenspeicherelements.
  • In manchen Ausführungsformen weist das Datenspeicherelement einen oder mehrere statische Direktzugriffsspeicherzellen (SRAM-Zellen) auf. In verschiedenen Ausführungsformen weist eine SRAM-Zelle, z.B. eine Fünf-Transistor- (5T), Sechs-Transistor- (6T), Acht-Transistor (8T) oder Neun-Transistor- (9T) SRAM-Zelle, eine Anzahl von Transistoren im Bereich von zwei bis zwölf auf. In manchen Ausführungsformen weist eine SRAM-Zelle eine Mehrfachspur-SRAM-Zelle auf. In manchen Ausführungsformen weist eine SRAM-Zelle eine Länge auf, die mindestens zweimal größer als eine Breite ist.
  • In manchen Ausführungsformen weist das Datenspeicherelement eine oder mehrere dynamische Direktzugriffsspeicherzellen (DRAM-Zellen), resistive Direktzugriffsspeicherzellen (RRAM-Zellen), magnetoresistive Direktzugriffsspeicherzellen (MRAM-Zellen), ferroelektrische Direktzugriffsspeicherzellen (FeRAM-Zellen), NODER-Flash-Zellen, NUND-Flash-Zellen, leitfähige Überbrückungsdirektzugriffsspeicherzellen (CBRAM-Zellen), Datenregister, nicht flüchtige Speicherzellen (NVM-Zellen), 3D NVM-Zellen oder andere Arten von Speicherzellen auf, die imstande sind, Bitdaten zu speichern.
  • In manchen Ausführungsformen ist das Datenspeicherelement konfiguriert, eine Anzahl von Datenbits im Bereich von 1 bis 16 zu speichern. In manchen Ausführungsformen ist das Datenspeicherelement konfiguriert, eine Anzahl von Datenbits im Bereich von 4 bis 8 zu speichern.
  • Das Datenspeicherelement weist eine oder mehr I/O-Verbindungen (nicht dargestellt) auf, durch die die logischen Zustände in Schreiboperationen programmiert werden und auf die in Leseoperationen, z.B. einer Multiplikationsoperation zugegriffen wird.
  • Ein Multiplizierer ist eine elektronische Schaltung, die ein oder mehr Logikgates aufweist, die konfiguriert sind, eine mathematische Operation, z.B. Multiplikation, basierend auf einem empfangenen Datenbit, z.B. einem von ausgewählten k-ten Bits A1k-ANk, und einem empfangenen Datenelement, z.B. einem Mehrfachbit-Gewichtsdatenelement, das im Datenspeicherelement gespeichert ist, durchzuführen, wodurch ein Produktdatenelement gleich dem Produkt des Eingangsdatenbits und des Eingangsdatenelements erzeugt wird. In manchen Ausführungsformen ist der Multiplizierer konfiguriert, das Produktdatenelement zu erzeugen, das eine Anzahl von Bits gleich der Anzahl von Bits des empfangenen Datenelements enthält. In verschiedenen Ausführungsformen weist der Multiplizierer ein oder mehrere UND- oder NODER-Gates oder andere Schaltungen auf, die zum Durchführen eines Teils oder der Gesamtheit einer Multiplikationsoperation geeignet sind.
  • Durch Aufnehmen des Datenspeicherelements, das an den Multiplizierer gekoppelt und konfiguriert ist, ein Gewichtsdatenelement zu speichern, und des Multiplizierers, der an Auswahlschaltung 110 gekoppelt und konfiguriert ist, ein Bit des ausgewählten Satzes von k-ten Bits A1k-ANk zu speichern, ist jede Speicherzelle BCX konfiguriert, ein Produktdatenelement P11-PMN basierend auf dem einen Bit des ausgewählten Satzes von k-ten Bits A1k-ANk und dem Gewichtsdatenelement entsprechend der Position der gegebenen Speicherzelle BCX in der Speichergruppe 120A zu erzeugen. In manchen Ausführungsformen weist eine Speicherzelle BCX eine Speicherzelle 300A auf, wie unten in Bezug auf 3A besprochen.
  • Eine Speicherzelle BX2 weist ein erstes Datenspeicherelement auf, das an einen ersten Multiplizierer gekoppelt ist, ein zweites Datenspeicherelement, das an einen zweiten Multiplizierer gekoppelt ist, und einen Addierer, der an den ersten und zweiten Multiplizierer (in 1A und 1B nicht dargestellt) gekoppelt ist. Das erste Datenspeicherelement und der Multiplizierer sind konfiguriert, ein erstes Produktdatenelement zu erzeugen, wie oben in Bezug auf Speicherzelle BCX besprochen, und das zweite Datenspeicherelement und der Multiplizierer sind konfiguriert, ein zweites Produktdatenelement zu erzeugen, wie oben in Bezug auf Speicherzelle BCX besprochen.
  • Ein Addierer ist eine elektronische Schaltung, die ein oder mehrere Logikgates aufweist, die konfiguriert sind, eine mathematische Operation, z.B. Addition, basierend auf einem empfangenen ersten und zweiten Datenelement, z.B. ersten und zweiten Produktdatenelement durchzuführen, die durch den ersten und zweiten Multiplizierer erzeugt werden, wodurch ein Summendatenelement gleich der Summe des empfangenen ersten und zweiten Datenelements erzeugt wird. In manchen Ausführungsformen ist der Addierer konfiguriert, das Summendatenelement zu erzeugen, das eine Anzahl von Bits enthält, die um eins größer als die Anzahl von Bits jedes des empfangenen ersten und zweiten Datenelements ist. In verschiedenen Ausführungsformen weist der Addierer einen oder mehrere vollständige Addierergates, halbe Addierergates, Welligkeit-Träger-Schaltungen, Träger-Speicher-Addiererschaltungen, Träger-Auswahl-Addiererschaltungen, Träger-Vorschau-Addiererschaltungen oder andere Schaltungen auf, die geeignet sind, einen Teil oder die Gesamtheit einer Additionsoperation durchzuführen.
  • Durch Aufnehmen des ersten Multiplizierers, der konfiguriert ist, das erste Produktdatenelement basierend auf einem ersten Bit des ausgewählten Satzes von k-ten Bits A1k-ANk und ersten gespeicherten Gewichtsdatenelements zu erzeugen, des zweiten Multiplizierers, der konfiguriert ist, das zweite Produktdatenelement basierend auf einem zweiten Bit des ausgewählten Satzes von k-ten Bits A1k-ANk zu erzeugen, und eines Addierers, der an jeden des ersten und zweiten Multiplizierers gekoppelt ist, ist jede Speicherzelle BX2 konfiguriert, ein Summendatenelement S11-SML basierend auf dem ersten und zweiten Bit des ausgewählten Satzes von k-ten Bits A1k-ANk und ersten und zweiten Gewichtsdatenelement entsprechend der Position der gegebenen Speicherzelle BX2 in Speichergruppe 120B zu erzeugen. In manchen Ausführungsformen weist eine Speicherzelle BX2 eine Speicherzelle 300B wie unten in Bezug auf 3B besprochen auf.
  • Addiererbaum 122 ist eine elektronische Schaltung, die mehrere Schichten von Addierern (in 1A und 1B nicht dargestellt) aufweist, in welchen eine erste Schicht konfiguriert ist, mehrere Datenelemente, z.B. Produktdatenelemente P11-PMN oder Summendatenelemente S11-SML, zu empfangen, und eine letzte Schicht einen einzelnen Addierer aufweist, der konfiguriert ist, ein Datenelement, z.B. ein Summierungsdatenelement SD1-SDM, basierend auf den empfangenen mehreren Datenelementen zu erzeugen. In manchen Ausführungsformen ist jede von einer oder mehreren aufeinanderfolgenden Schichten zwischen der ersten und letzten Schicht konfiguriert, eine erste Anzahl von Summendatenelementen zu empfangen, die von einer vorangehenden Schicht erzeugt werden, und eine zweite Anzahl von Summendatenelementen basierend auf der ersten Anzahl von Summendatenelementen zu erzeugen, wobei die zweite Anzahl die Hälfte der ersten Anzahl ist. Somit weist eine Gesamtzahl von Schichten die erste und letzte Schicht und jede aufeinanderfolgende Schicht, falls vorhanden, auf. In manchen Ausführungsformen weist ein Addiererbaum 122 einen Addiererbaum 400 auf, wie unten in Bezug auf 4 besprochen.
  • Addiererbaum 122 ist dadurch konfiguriert, die mehreren Datenelemente mit einer Anzahl gleich zwei hoch der Gesamtzahl von Schichten zu empfangen, wobei die Anzahl von Datenelementen dadurch ein Binärexponent der Gesamtzahl von Schichten ist. In der Ausführungsform, die in 1A gezeigt ist, weist Speichergruppe 120A jede Instanz von Addiererbaum 122 auf, die die Gesamtzahl von Schichten enthält, sodass zwei hoch der Gesamtzahl von Schichten gleich N Produktdatenelementen ist, z.B. P11-P1N. In der Ausführungsform, die in 1B gezeigt ist, weist Speichergruppe 120B jede Instanz von Addiererbaum 122 auf, die die Gesamtzahl von Schichten enthält, sodass zwei hoch der Gesamtzahl von Schichten gleich L Summendatenelementen ist, z.B. S11-S1L.
  • In manchen Ausführungsformen weist Addiererbaum 122 die Gesamtzahl von Schichten im Bereich von 2 bis 9 auf. In manchen Ausführungsformen weist Addiererbaum 122 die Gesamtzahl von Schichten im Bereich von 4 bis 7 auf.
  • In manchen Ausführungsformen ist jeder Addierer in jeder Schicht von Addiererbaum 122 konfiguriert, das entsprechende Summendatenelement zu erzeugen, das eine Anzahl von Bits enthält, die um eins größer als die Anzahl von Bits des Summendatenelements der vorangehenden Schicht ist, oder im Fall der ersten Schicht das Datenelement der empfangenen mehreren Datenelemente.
  • In manchen Ausführungsformen, die in 1A gezeigt sind, weisen Addiererbäume 122 die erste Schicht auf, die konfiguriert ist, Produktdatenelemente P11-PMN zu empfangen, die eine erste Anzahl von Bits gleich der Anzahl von Bits der Gewichtsdatenelemente enthalten, die in jeder Speicherzelle BCX gespeichert sind, und die letzte Schicht, die konfiguriert ist, Summierungsdatenelemente SD1-SDM zu erzeugen, die eine zweite Anzahl von Bits gleich der ersten Anzahl von Bits plus einem Wert gleich der Gesamtzahl von Schichten in Addiererbäumen 122 enthalten.
  • In manchen Ausführungsformen, die in 1B gezeigt sind, weisen Addiererbäume 122 die erste Schicht auf, die konfiguriert ist, Summendatenelemente S11-SML zu empfangen, die eine erste Anzahl von Bits um eins größer als die Anzahl von Bits der Gewichtsdatenelemente enthalten, die in jeder Speicherzelle BX2 gespeichert sind, und die letzte Schicht, die konfiguriert ist, Summierungsdatenelemente SD1-SDM zu erzeugen, die eine zweite Anzahl von Bits gleich der ersten Anzahl von Bits plus einem Wert gleich der Gesamtzahl von Schichten in Addiererbäumen 122 enthalten.
  • I/O Schaltung 130 ist eine elektronische Schaltung, die an Steuersignalbus CTRLB und an die eine oder mehreren I/O-Verbindungen jedes Datenspeicherelements jeder Speicherzelle BCX von Speichergruppe 120A oder jeder Speicherzelle BX2 von Speichergruppe 120B durch eine oder mehrere Wortleitungen, eine oder mehrere Bitleitungen und/oder eine oder mehrere Datenleitungen (nicht dargestellt) gekoppelt ist. I/O Schaltung 130 ist dadurch konfiguriert, in Reaktion auf ein oder mehrere Steuersignale CTRL, die auf Steuersignalbus CTRLB empfangen werden, jede Speicherzelle BCX oder BX2 auf einen logischen Zustand oder mehrere logische Zustände in Schreiboperationen zu programmieren und zu veranlassen, dass auf einen logischen Zustand oder mehrere logische Zustände, die in jeder Speicherzelle BCX oder BX2 gespeichert sind, in Leseoperationen zugegriffen wird.
  • Akkumulator 140 ist eine elektronische Schaltung, die an Steuersignalbus CTRLB gekoppelt ist und einen oder mehrere Addierer, ein oder mehrere Datenregister und einen oder mehr Verschieber (in 1A und 1B nicht dargestellt) aufweist, die gemeinsam in einer Feedback-Anordnung gekoppelt sind. Der eine oder die mehreren Addierer sind an Addiererbaum 122 gekoppelt und sind dadurch konfiguriert, eines von Summierungsdatenelementen SD1-SDM zu empfangen, wobei jedes Summierungsdatenelement SD1-SDM eines der Abfolge von H Summierungsdatenelementen SD1-SDM entsprechend dem sequenziell ausgewählten Satz von k-ten Bits A1k-ANk ist, der von Auswahlschaltung 110 basierend auf Zähler k ausgegeben wird.
  • Der eine oder die mehreren Addierer sind weiter konfiguriert, ein verschobenes Datenelement zu empfangen, das von dem einen oder den mehreren Verschiebern ausgegeben wird, und ein internes Summendatenelement basierend auf dem verschobenen Datenelement und dem einen von Summierungsdatenelementen SD1-SDM zu erzeugen. Das eine oder die mehreren Datenregister sind konfiguriert, das interne Summendatenelement von dem einen oder den mehreren Addierern zu empfangen, das interne Summendatenelement zu speichern und das gespeicherte interne Summendatenelement an den einen oder die mehreren Verschieber und an einen entsprechenden von Ausgangsanschlüssen O1-OM auszugeben. Der eine oder die mehreren Verschieber sind konfiguriert, das gespeicherte interne Datenelement zu empfangen, das von dem einen oder mehreren Datenregistern ausgegeben wird, und das verschobene Datenelement durch Verschieben des gespeicherten internen Datenelements um ein Bit in entweder eine MSB-Richtung oder eine LSB-Richtung zu erzeugen.
  • Akkumulator 140 ist dadurch konfiguriert, in Reaktion auf ein oder mehrere Steuersignale CTRL, die auf Steuersignalbus CTRLB empfangen werden, eine Akkumulationsoperation durchzuführen, wobei das gespeicherte interne Summendatenelement erhöht wird, wenn jedes in der Abfolge von Summierungsdatenelementen SD1-SDM empfangen wird. Das eine oder die mehreren Steuersignale CTRL basieren auf und/oder weisen Zähler k Informationen auf und sind dadurch konfiguriert zu veranlassen, dass die Akkumulationsoperation mit der sequenziellen Auswahl der Sätze von k-ten Bits A1k-ANk koordiniert ist, sodass das gespeicherte interne Datenelement verschoben und zu dem empfangenen Summierungsdatenelement SD1-SDM addiert wird, das mit dem Zeitpunkt und der MSB/LSB-Richtung der sequenziellen Erzeugung der Sätze von k-ten Bits A1k-ANk synchronisiert ist.
  • In Operation bewirkt Ausführung der Akkumulationsoperation basierend auf einem Rundlauf von Zähler k über die Spanne von H Bits der Sätze von k-ten Bits A1k-ANk und die entsprechenden H Instanzen des Summierungsdatenelements SD1-SDM, dass das interne Datenelement, das in dem einen oder den mehreren Datenregistern gespeichert ist, an den entsprechenden Ausgangsanschluss O1-OM als die entsprechende von Teilsummen PS1-PSM ausgegeben wird.
  • Steuerschaltung 150 ist eine elektronische Schaltung, die konfiguriert ist, Betrieb von Speicherschaltung 100A oder 100B durch Erzeugen von Steuersignalen CTRL und Ausgeben von Steuersignalen CTRL auf Steuersignalbus CTRLB zu steuern. In Betrieb werden Steuersignale CTRL vom Steuersignalbus CTRLB durch Auswahlschaltung 110, Speichergruppe 120A oder 120B, I/O Schaltung 130 und Akkumulatoren 140 gemäß den oben und unten besprochenen Ausführungsformen empfangen. In manchen Ausführungsformen ist Steuerschaltung 150 konfiguriert, Steuersignale CTRL zu erzeugen, die ein oder mehrere Taktsignale aufweisen oder auf diesen basieren.
  • In verschiedenen Ausführungsformen weist Steuerschaltung 150 einen Hardwareprozessor 152 und ein nicht transitorisches, computerlesbares Datenspeichermedium 154 auf. Das computerlesbare Datenspeichermedium 154 ist unter anderen mit Computerprogrammcode, d.h. einem Satz von ausführbaren Anweisungen, codiert, d.h. speichert diesen. Ausführung der Anweisungen durch Hardwareprozessor 152 stellt (mindestens teilweise) ein Speicherschaltungsbetriebswerkzeug dar, das einen Abschnitt oder die Gesamtheit, z.B. von Verfahren 900 wie unten in Bezug auf 9 besprochen, und/oder Verfahren 1000, wie unten in Bezug auf 10 besprochen (in der Folge die genannten Prozesse und/oder Verfahren) implementiert.
  • In verschiedenen Ausführungsformen ist Prozessor 152 elektrisch an das computerlesbare Datenspeichermedium 154 über eine I/O-Schnittstelle und an ein Netzwerk über einen Bus gekoppelt (Einzelheiten nicht dargestellt). Die Netzwerkschnittstelle ist mit einem Netzwerk (nicht dargestellt) verbunden, sodass Prozessor 152 und computerlesbares Datenspeichermedium 154 imstande sind, mit externen Elementen über das Netzwerk verbunden zu werden. Prozessor 152 ist konfiguriert, den Computerprogrammcode auszuführen, der im computerlesbaren Datenspeichermedium 154 encodiert ist, um Steuerschaltung 150 und Speicherschaltung 100A oder 100B zu veranlassen, zum Durchführen eines Abschnitts oder einer Gesamtheit der genannten Prozesse und/oder Verfahren brauchbar zu sein. In einer oder mehreren Ausführungsformen ist Prozessor 152 eine zentrale Verarbeitungseinheit (CPU), ein Multi-Prozessor, ein verteiltes Verarbeitungssystem, eine anwendungsspezifische integrierte Schaltung (ASIC) und/oder eine geeignete Verarbeitungseinheit.
  • In einer oder mehreren Ausführungsformen ist computerlesbares Datenspeichermedium 154 ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- und/oder ein Halbleitersystem (oder eine Einrichtung oder Vorrichtung). Zum Beispiel weist computerlesbares Datenspeichermedium 154 einen Halbleiter- oder Festkörperspeicher, ein Magnetband, eine entfernbare Computerdiskette, einen RAM, einen SRAM, einen DRAM, einen Nur-Lese-Speicher (ROM), eine starre Magnetplatte und/oder eine Bildplatte auf. In einer oder mehreren Ausführungsformen, die Bildplatten verwenden, weist computerlesbares Datenspeichermedium 154 einen Compact Disk-Nur-Lese-Speicher (CD-ROM), eine Compact Disk-Read/Write (CD-R/W) und/oder eine Digital Video Disc (DVD) auf.
  • In einer oder mehreren Ausführungsformen speichert computerlesbares Datenspeichermedium 154 den Computerprogrammcode, der konfiguriert ist, die Steuerschaltung 150 zu veranlassen, die Steuersignale zu erzeugen, um zum Durchführen eines Abschnitts oder der Gesamtheit der genannten Prozesse und/oder Verfahren brauchbar zu sein. In einer oder mehreren Ausführungsformen speichert computerlesbares Datenspeichermedium 154 auch Informationen, die Durchführen eines Abschnitts oder der Gesamtheit der genannten Prozesse und/oder Verfahren erleichtern.
  • Durch die zuvor besprochene Konfiguration ist jede Speicherschaltung 100A und 100B in Betrieb imstande, Eingangsdatenelemente A1-AN auf dem Eingangsdatenbus IDB zu empfangen, sequenziell Sätze von k-ten Bits A1k-ANk unter Verwendung von Auswahlschaltung 110 auszuwählen, die Abfolge ausgewählter Sätze von Bits A1k-ANk bei jeder Spalte C1-CM von Speicherzelle BCX oder BX2 zu empfangen und Speicherzelle BCX oder BX2 und entsprechende Addiererbäume 122 zum Durchführen einer synchronisierten Reihe von mathematischen Operationen zu verwenden, wobei Teilsummen PS1-PSM auf Ausgangsanschlüssen O1-OM ausgegeben werden. Durch Aufnehmen von Speichergruppe 120A oder 120B ist die jeweilige Speicherschaltung 100A oder 100B konfiguriert, eine speicherinterne Berechnung durchzuführen, wobei mindestens eine Teilsumme PS1-PSM basierend auf Eingangsdatenelementen A1-AN und gespeicherten Gewichtsdatenelementen erzeugt wird. Verglichen mit Ansätzen, in welchen Speichergruppen keine Elemente aufweisen, die konfiguriert sind, speicherinterne Berechnungen durchzuführen, sind solche Speicherschaltungen imstande, Teilsummen unter Verwendung kleinerer Bereiche und niedrigerer Leistungspegel zu erzeugen.
  • 2 ist ein Diagramm von Auswahlschaltung 200 gemäß manchen Ausführungsformen. Auswahlschaltung 200, auch als Multiplexschaltung 200 in manchen Ausführungsformen bezeichnet, ist als Auswahlschaltung 110 brauchbar, wie oben in Bezug auf 1A und 1B besprochen. Auswahlschaltung 200 weist ein Datenregister 200R, gekoppelt an Eingangsdatenbus IDB, und mehrere N Multiplexer Mi-MN, gekoppelt an Datenregister 200R und an Steuersignalbus CTRLB auf.
  • Datenregister 200R weist einen ersten Satz von Anschlüssen (nicht dargestellt), gekoppelt an Eingangsdatenbus IDB, auf und ist dadurch konfiguriert, Bitdaten zu empfangen, die die H Bits jedes Eingangsdatenelements A1-AN enthalten, und vorübergehend die Bitdaten zu speichern. In verschiedenen Ausführungsformen ist Datenregister 200R konfiguriert, in Betrieb die Bitdaten parallel oder in Reihe zu empfangen. Datenregister 200R weist einen zweiten Satz von Anschlüssen (nicht markiert), gekoppelt an Multiplexer M1-MN, auf und ist dadurch konfiguriert, in Betrieb jedes der H Bits jedes Eingangsdatenelements A1-AN, die in 2 als A11-A1H, A21-A2H,... AN1-ANH gezeigt sind, an Multiplexer Mi-MN auszugeben.
  • Multiplexer Mi-MN entsprechen Eingangsdatenelementen A1-AN, sodass jeder Multiplexer M1-MN einen Satz von Anschlüssen (nicht markiert) aufweist, die konfiguriert sind, die H Bits des entsprechenden Datenelements A1-AN zu empfangen. Jeder Multiplexer Mi-MN weist einen entsprechenden Ausgangsanschluss MiO-MNO auf und ist dadurch konfiguriert, in Betrieb ein ausgewähltes k-tes Bit A1k-ANk des entsprechenden Datenelements A1-AN auf dem entsprechenden Ausgangsanschluss O1-ON in Reaktion auf ein oder mehrere Steuersignale CTRL auszugeben, die auf Steuersignalbus CTRLB empfangen werden. Multiplexer Mi-MN und das eine oder die mehreren Steuersignale CTRL sind konfiguriert, in Betrieb gleichzeitig dasselbe k-te Bit jedes Datenelements A1-AN auszugeben, wodurch der Satz von k-ten Bits A1k-ANk basierend auf Zähler k erzeugt wird, wie oben besprochen.
  • Auswahlschaltung 200 ist dadurch konfiguriert, zum Durchführen der oben in Bezug auf Auswahlschaltung 110 und 1A und 1B besprochenen Betriebe imstande zu sein. Durch Aufnehmen von Auswahlschaltung 200 als Auswahlschaltung 110 ist jede Speicherschaltung 100A und 100B imstande, die oben besprochenen Vorteile zu erzielen.
  • 3A und 3B sind Diagramme von Speicherzelle 300A bzw. 300B gemäß manchen Ausführungsformen. Speicherzelle 300A, auch als eine Bitzelle 300A in manchen Ausführungsformen bezeichnet, ist als eine oder mehrere Instanzen von Speicherzelle BCX brauchbar, wie oben in Bezug auf 1A besprochen, und Speicherzelle 300B, auch als eine Bitzelle 300B in manchen Ausführungsformen bezeichnet, ist als eine oder mehrere Instanzen von Speicherzelle BX2 brauchbar, wie oben in Bezug auf 1B besprochen.
  • Jede Speicherzelle 300A und 300B ist zum Zweck der Veranschaulichung vereinfacht. In verschiedenen Ausführungsformen weisen eine oder beide von Speicherzelle 300A oder 300B verschiedene Elemente zusätzlich zu den in 3A und 3B gezeigten auf oder sind anders angeordnet, um die Betriebe wie unten besprochen durchzuführen. In verschiedenen Ausführungsformen weist eine Speicherzelle 300A oder 300B mehrere elektrische Verbindungen zu einer oder mehr Wortleitungen, einer oder mehr Bitleitungen und/oder einer oder mehr Datenleitungen (nicht dargestellt), und dadurch zu I/O Schaltung 130 auf, wie oben in Bezug auf 1A und 1B besprochen, durch welche Gewichtsdatenelemente WTmn und WTm(n+1), wie unten besprochen, gespeichert und/oder zugegriffen werden.
  • Jede Speicherzelle 300A und 300B weist eine Datenspeichereinheit SU1, gekoppelt an einen Multiplizierer MUL1 auf. Speicherzelle 300B weist auch eine Datenspeichereinheit, SU2 gekoppelt an einen Multiplizierer MUL2, und einen Addierer ADD, gekoppelt an jeden von Multiplizierer MUL1 und MUL2 auf.
  • Datenspeichereinheit SU1 ist konfiguriert, Gewichtsdatenelement WTmn zu speichern, und Datenspeichereinheit SU2 ist konfiguriert, Gewichtsdatenelement WTm(n+1) zu speichern. In manchen Ausführungsformen entspricht Indikator m einer der Anzahl M von Spalten C1-CM und Indikator n entspricht einer der Anzahl N von Reihen von Daten von Speichergruppe 120A oder 120B.
  • In verschiedenen Ausführungsformen ist jede Datenspeichereinheit SU1 und SU2 konfiguriert, Gewichtsdatenelement WTmn bzw. WTm(n+1) zu speichern, das ein einzelnes Bit oder mehrere Bits enthält. In manchen Ausführungsformen sind eine oder beide von Datenspeichereinheit SU1 oder SU2 konfiguriert, das entsprechende Gewichtsdatenelement WTmn oder WTm(n+1) zu speichern, das eine Anzahl von Bits im Bereich von 1 bis 16 enthält. In manchen Ausführungsformen sind eine oder beide von Datenspeichereinheit SU1 oder SU2 konfiguriert, das entsprechende Gewichtsdatenelement WTmn oder WTm(n+1) zu speichern, das die Anzahl von Bits im Bereich von 4 bis 8 enthält. In manchen Ausführungsformen sind eine oder beide von Datenspeichereinheit SU1 oder SU2 konfiguriert, das entsprechende Gewichtsdatenelement WTmn oder WTm(n+1) zu speichern, das eine programmierbare Anzahl von Bits enthält.
  • Jeder Multiplizierer MUL1 und MUL2 ist konfiguriert, eine Multiplikationsoperation durchzuführen, enthaltend eine Anzahl von Bits gleich jener der entsprechenden Datenspeichereinheit SU1 oder SU2, an die der gegebene Multiplizierer MUL1 oder MUL2 gekoppelt ist. Multiplizierer MUL1 ist konfiguriert, Gewichtsdatenelement WTmn von Datenspeichereinheit SU1 und ein erstes der k-ten Bits A1k-ANk, dargestellt in 3A und 3B als ANk, zu empfangen und das Produkt als ein Produktdatenelement Pmn auszugeben.
  • In manchen Ausführungsformen, z.B. jenen, in welchen Speicherzelle 300A als Speicherzelle BCX verwendet wird, entspricht Produktdatenelement Pmn, basierend auf Indikatoren m und n, einem von Produktdatenelementen P11-PMN, wie oben in Bezug auf 1A besprochen. Speicherzelle 300A ist dadurch konfiguriert, zur Durchführung der oben in Bezug auf Speicherzelle BCX und 1A besprochenen Betriebe imstande zu sein.
  • Multiplizierer MUL2 ist konfiguriert, Gewichtsdatenelement WTm(n+1) von Datenspeichereinheit SU2 und ein zweites der k-ten Bits A1k-ANk, dargestellt in 3B als A(n+1)k zu empfangen und das Produkt als ein Produktdatenelement Pm(n+1) auszugeben.
  • Addierer ADD ist konfiguriert, jedes Produktdatenelement Pmn und Pm(n+1) mit der Anzahl von Bits des entsprechenden Multiplizierers MUL1 oder MUL2 zu empfangen, eine Additionsoperation durchzuführen und die Summe als ein Summendatenelement Sml mit einer Anzahl von Bits um eins größer als die Anzahl von Bits jedes Produktdatenelements Pmn und Pm(n+1) auszugeben. In manchen Ausführungsformen entspricht Indikator l einer der Anzahl L von Reihen von Speicherzellen BX2 von Speichergruppe 120B.
  • In manchen Ausführungsformen, z.B. jenen, in welchen Speicherzelle 300B als Speicherzelle BX2 verwendet wird, entspricht Summendatenelement Sml, basierend auf Indikatoren m und 1, einem von Summendatenelementen S11-SML, wie oben in Bezug auf 1B besprochen. Speicherzelle 300B ist dadurch konfiguriert, zur Durchführung der oben in Bezug auf Speicherzelle BX2 und 1B besprochenen Betriebe imstande zu sein.
  • Durch Aufnehmen von Speicherzelle 300A als eine oder mehrere Instanzen von Speicherzelle BCX oder Aufnehmen von Speicherzelle 300B als eine oder mehrere Instanzen von Speicherzelle BX2, ist die entsprechende Speicherschaltung 100A oder 100B imstande, die oben besprochenen Vorteile zu erzielen.
  • 4 ist ein Diagramm von Addiererbaum 400 gemäß manchen Ausführungsformen. Addiererbaum 400 ist als Addiererbaum 122 brauchbar, wie oben in Bezug auf 1A und 1B besprochen. Addiererbaum 400 weist eine Anzahl u von Schichten von Addierern ADD1-ADDu auf.
  • Eine erste Schicht von Addierern weist Addierer ADD1 auf, die konfiguriert sind, eine Anzahl U (= 2u) von Summendatenelementen SUM11-SUM1U zu empfangen, wodurch die erste Schicht eine Anzahl U/2 von Addierern ADD1 aufweist. In manchen Ausführungsformen, z.B. jenen, in welchen Addiererbaum 400 als Addiererbaum 122 in einer Spalte C1-CM von Speichergruppe 120A verwendet wird, entsprechen Summendatenelemente SUM11-SUM1U mehreren Produktdatenelementen, die durch die entsprechende Spalte von Speicherzellen BCX ausgegeben werden, z.B. Produktdatenelemente P11-P1N, die durch Spalte C1 ausgegeben werden, wie oben in Bezug auf 1A besprochen. In manchen Ausführungsformen, z.B. jenen, in welchen Addiererbaum 400 als Addiererbaum 122 in einer Spalte C1-CM von Speichergruppe 120B verwendet wird, entsprechen Summendatenelemente SUM11-SUM1U mehreren Summendatenelementen, die durch die entsprechende Spalte von Speicherzellen BX2 ausgegeben werden, z.B. Summendatenelemente S11-S1L, die durch Spalte C1 ausgegeben werden, wie oben in Bezug auf 1B besprochen.
  • Jede Addierer ADD1 ist konfiguriert, eine Additionsoperation an einem entsprechenden empfangenen Paar von Summendatenelementen, z.B. SUM11 und SUM12, von Summendatenelementen SUM11-SUM1U durchzuführen und die Summe als ein entsprechendes von Summendatenelementen SUM21-SUM2(U/2) auszugeben. Addierer ADD1 sind konfiguriert, Summendatenelemente SUM11-SUM1U zu empfangen, die eine erste Anzahl von Bits enthalten, z.B. die Anzahl von Bits von Produktdatenelementen P11-PMN wie oben in Bezug auf 1A besprochen oder von Summendatenelementen S11-SML wie oben in Bezug auf 1B besprochen, und Summendatenelemente SUM21-SUM2(U/2) auszugeben, die eine zweite Anzahl von Bits um eins größer als die erste Anzahl von Bits enthalten.
  • Eine zweite Schicht von Addierern weist eine Anzahl U/4 von Addierern ADD2 auf. Jeder Addierer ADD2 ist konfiguriert, eine Additionsoperation an einem entsprechenden empfangenen Paar von Summendatenelementen, z.B. SUM21 und SUM22, von Summendatenelementen SUM21-SUM2(U/2) durchzuführen und die Summe als ein entsprechendes von Summendatenelementen SUM31-SUM3(U/4) auszugeben. Addierer ADD2 sind konfiguriert, Summendatenelemente SUM21-SUM2(U/2) zu empfangen, die die zweite Anzahl von Bits enthalten, und Summendatenelemente SUM31-SUM3(U/4) auszugeben, die eine dritte Anzahl von Bits um eins größer als die zweite Anzahl von Bits enthalten.
  • Eine letzte Schicht von Addierern weist den einzelnen Addierer ADDu auf, der konfiguriert ist, eine Additionsoperation an einem Paar von Summendatenelementen SUMu1 und SUMu2 durchzuführen, das von einer vorangehenden Schicht von Addierern empfangen wird, und die Summe als Summierungsdatenelement SDm auszugeben. Addierer ADDu ist konfiguriert, Summendatenelemente SUMu1 und SUMu2 zu empfangen, die eine vierte Anzahl von Bits enthalten, und Summierungsdatenelement SDm auszugeben, das eine fünfte Anzahl von Bits um eins größer als die vierte Anzahl von Bits und gleich der ersten Anzahl von Bits plus der Anzahl u enthält. In manchen Ausführungsformen, z.B. jenen, in welchen Addiererbaum 400 als Addiererbaum 122 verwendet wird, entspricht Summierungsdatenelement SDm einem von Summierungsdatenelementen SD1-SDM, wie oben in Bezug auf 1A und 1B besprochen.
  • In verschiedenen Ausführungsformen weist Addiererbaum 400 eine oder mehrere zusätzliche Schichten von Addierern zwischen der zweiten und letzten Schicht auf, gezeigt in 4, wobei jede zusätzliche Schicht übereinstimmend mit den Konfigurationen der oben besprochenen ersten, zweiten und letzten Schicht konfiguriert ist, sodass in Betrieb Summierungsdatenelement SDm basierend auf empfangenen Summendatenelementen SUM11-SUM1U erzeugt wird. In manchen Ausführungsformen weist Addiererbaum 400 die zweite Schicht von Addierern ADD2 nicht auf und weist daher insgesamt u = 2 Schichten auf, sodass in Betrieb Summierungsdatenelement SDm basierend auf insgesamt U = 4 Summendatenelementen SUM11-SUM1U erzeugt wird.
  • In manchen Ausführungsformen weist daher Addiererbaum 400 eine Gesamtzahl von Schichten im Bereich von 2 bis 9 auf. In manchen Ausführungsformen weist daher Addiererbaum 400 die Gesamtzahl von Schichten im Bereich von 4 bis 7 auf.
  • Addiererbaum 400 ist dadurch konfiguriert, zur Durchführung der oben in Bezug auf Addiererbaum 122 und 1A und 1B besprochenen Betriebe imstande zu sein. Durch Aufnehmen von Addiererbaum 400 als Addiererbaum 122 ist jede Speicherschaltung 100A und 100B imstande, die oben besprochenen Vorteile zu erzielen.
  • 5 ist ein Diagramm von Akkumulator 500 gemäß manchen Ausführungsformen. Akkumulator 500, auch als Teilsummenschaltung 500 in manchen Ausführungsformen bezeichnet, ist als Akkumulator 140 brauchbar, wie oben in Bezug auf 1A und 1B besprochen. Akkumulator 500 weist Addierer ADDA, gekoppelt an jedes von Datenregister R1 und Verschieber SH1 auf. Verschieber SHi ist auch an Datenregister R1 gekoppelt, sodass Addierer ADDA, Datenregister R1 und Verschieber SH1 dadurch gemeinsam in einer Feedback-Anordnung gekoppelt sind.
  • Addierer ADDA ist konfiguriert, in Betrieb Summierungsdatenelement SDm zu empfangen, wie oben in Bezug auf 4 besprochen. In manchen Ausführungsformen, z.B. jenen, in welchen Akkumulator 500 als Akkumulator 140 verwendet wird, entspricht Summierungsdatenelement SDm einem von Summierungsdatenelementen SD1-SDM, wie oben in Bezug auf 1A und 1B besprochen.
  • Addierer ADDA ist weiter konfiguriert, in Betrieb ein verschobenes Datenelement SDE zu empfangen, das von Verschieber SHi ausgegeben wird, und ein internes Summendatenelement IDE basierend auf dem verschobenen Datenelement SDE und Summierungsdatenelement SDm zu erzeugen. Datenregister R1 ist konfiguriert, internes Summendatenelement IDE von Addierer ADDA zu empfangen, das interne Summendatenelement IDE zu speichern und das gespeicherte interne Summendatenelement IDE an Verschieber SHi und an einen Ausgangsanschluss Om auszugeben. Verschieber SHi ist konfiguriert, das gespeicherte interne Datenelement IDE zu empfangen, das von Datenregister R1 ausgegeben wird, und das verschobene Datenelement SDE durch Verschieben des gespeicherten internen Datenelements IDE um ein Bit in entweder eine MSB-Richtung oder eine LSB-Richtung zu erzeugen.
  • Akkumulator 500 ist dadurch konfiguriert, in Reaktion auf ein oder mehrere Steuersignale CTRL, die auf Steuersignalbus CTRLB empfangen werden (in 5 nicht dargestellt), eine Akkumulationsoperation durchzuführen, wodurch das gespeicherte interne Summendatenelement IDE erhöht wird, sobald jedes in einer Abfolge von Summierungsdatenelementen SDm empfangen wird. Ausführung der Akkumulationsoperation über mehrere Instanzen des Summierungsdatenelements SDm veranlasst daher, dass das interne Datenelement IDE, das in Datenregister R1 gespeichert ist, am Ausgangsanschluss Om als eine Teilsumme PSm der mehreren Instanzen des Summierungsdatenelements SDm ausgegeben wird.
  • In manchen Ausführungsformen, z.B. jenen, in welchen Akkumulator 500 als Akkumulator 140 verwendet wird, entspricht Teilsumme PSm, die am Ausgangsanschluss Om ausgegeben wird, einer von Teilsummen PS1-PSM, die am entsprechenden Ausgangsanschluss O1-OM ausgegeben werden, wie oben in Bezug auf 1A und 1B besprochen.
  • Akkumulator 500 ist dadurch konfiguriert, zur Durchführung der oben in Bezug auf Akkumulator 140 und 1A und 1B besprochenen Betriebe imstande zu sein. Durch Aufnehmen von Akkumulator 500 als Akkumulator 140 ist jede Speicherschaltung 100A und 100B imstande, die oben besprochenen Vorteile zu erzielen.
  • 6 ist ein Diagramm eines Abschnitts einer Speichergruppe 120A oder 120B (120A/120B) gemäß manchen Ausführungsformen. 6 weist mehrere Instanzen von Speicherzelle BCX oder BX2 (BCX/BX2) und eine Instanz von Addiererbaum 122 auf, jede wie oben in Bezug auf 1A und 1B besprochen. In der Ausführungsform, die in 6 gezeigt ist, weist Speichergruppe 120A/120B auch einem Multiplexer MA auf, der zwischen Speicherzellen BCX/BX2 und Addiererbaum 122 gekoppelt ist. 6 ist zum Zweck der Veranschaulichung vereinfacht.
  • Multiplexer MA ist konfiguriert, selektiv eine oder mehrere von Speicherzellen BCX/BX2 an Addiererbaum 122 zu koppeln, sodass in Betrieb Datenelemente, die von Speicherzellen BCX/BX2 ausgegeben werden, z.B. Produktdatenelemente P11-PMN oder Summendatenelemente S11-SML, wie oben in Bezug auf 1A und 1B besprochen, selektiv zu Addiererbaum 122 in Reaktion auf ein oder mehrere Steuersignale CTRL geleitet werden, die auf Steuersignalbus CTRLB empfangen werden (in 6 nicht dargestellt). In verschiedenen Ausführungsformen sind Speicherzellen BCX/BX2 in einer selben Spalte C1-CM enthalten oder sind in separaten Spalten C1-CM enthalten, wodurch sich zwei Spalten C1-CM den Addiererbaum 122 teilen.
  • Durch die zuvor besprochene Konfiguration weist eine Speicherschaltung 100A oder 100B Speichergruppe 120A/120B auf, die mindestens einen Addiererbaum 122 aufweist, den sich mehrere Speicherzellen BCX/BX2 teilen. In solchen Ausführungsformen ist die Speicherschaltung 100A oder 100B daher imstande, Teilsummen unter Verwendung kleinerer Bereiche zu erzeugen, verglichen mit Ansätzen, in welchen eine Speichergruppe nicht mindestens einen Addiererbaum aufweist, den sich mehrere Speicherzellen teilen.
  • 7A und 7B sind Diagramme von Abschnitten einer Speicherschaltung 100A oder 100B (100A/100B) gemäß manchen Ausführungsformen. Jede von 7A und 7B zeigt ein nicht einschränkendes Beispiel, in dem zwei oder mehr Teilsummen PS1-PSM kombiniert werden, und ist zum Zweck der Veranschaulichung vereinfacht.
  • In der in 7A gezeigten Ausführungsform weist Speicherschaltung 100A/100B entsprechende Speichergruppe 120A/120B und zwei Instanzen von Akkumulator 140 auf, jedes wie oben in Bezug auf 1A und 1B besprochen. In der in 7A gezeigten Ausführungsform ist Ausgangsanschluss O2 einer ersten Instanz von Akkumulator 140 an die zweite Instanz von Akkumulator 140 gekoppelt, sodass in Betrieb Teilsumme PS2 von der zweiten Instanz von Akkumulator 140 empfangen wird und in Teilsumme PS1 enthalten ist, die am Ausgangsanschluss O1 ausgegeben wird. In manchen Ausführungsformen sind die zwei Instanzen von Akkumulator 140 konfiguriert, in Betrieb selektiv Teilsummen PS1 und PS2 auszugeben, die Teilsumme PS2 in Teilsumme PS1 nicht enthalten, z.B. in Reaktion auf eines oder mehrere von Steuersignalen CTRL, die auf Steuersignalbus CTRLB empfangen werden (nicht dargestellt in 7A oder 7B).
  • In der in 7B gezeigten Ausführungsform weist Speicherschaltung 100A/100B jede von Spalten C1-C4 auf (enthaltend entsprechende Instanzen von Akkumulator 140), die konfiguriert sind, in Betrieb Eingangsdatenelemente A1-AN auf dem Eingangsdatenbus IDB zu empfangen und entsprechende Teilsummen PS1-PS4 auszugeben, wie oben in Bezug auf 1A und 1B besprochen. In der in 7B gezeigten Ausführungsform weist Speicherschaltung 100A/100B auch einen Addierer ADDSUM auf, der konfiguriert ist, in Betrieb jede Teilsumme PS1-PS4 zu empfangen und eine kombinierte Teilsumme OSUM basierend auf jeder Teilsumme PS1-PS4 zu erzeugen. In manchen Ausführungsformen ist Speicherschaltung 100A/100B konfiguriert, in Betrieb selektiv Teilsummen PS1-PS4 auszugeben, ohne Teilsumme OSUM auszugeben, z.B. in Reaktion auf ein oder mehrere von Steuersignalen CTRL, die auf Steuersignalbus CTRLB empfangen werden.
  • In jedem der nicht einschränkenden Beispiele, die in 7A und 7B gezeigt sind, basiert in Betrieb eine Teilsumme PS1 oder OSUM, die von Speicherschaltung 100A/100B ausgegeben wird, auf jedem Eingangsdatenelement A1-AN, das mit Speicherzellen BCX/BX2 in zwei oder mehr von Spalten C1-CM kombiniert wird. Die Teilsumme PS1 oder OSUM wird dadurch basierend auf den kombinierten Bits von Gewichtsdatenelementen erzeugt, die in den Speicherzellen BCX/BX2 gespeichert sind, sodass die Auflösung oder Präzision der Teilsumme PS1 oder OSUM verglichen mit Ausführungsformen erhöht ist, in welchen Teilsummen PS1-PSM auf Eingangsdatenelementen A1-AN basieren, die mit einer einzelnen von Spalten C1-CM kombiniert sind.
  • In manchen Ausführungsformen weisen Speicherzellen BCX/BX2 Gewichtsdatenelemente auf, die insgesamt vier Bits enthalten, sodass, in Betrieb in der in 7A gezeigten Ausführungsform, Teilsumme PS1 basierend auf insgesamt acht Bits von Gewichtsdatenelementen ausgegeben wird und in der in 7B gezeigten Ausführungsform Teilsumme OSUM basierend auf insgesamt sechzehn Bits von Gewichtsdatenelementen ausgegeben wird.
  • Die in 7A und 7B gezeigten Ausführungsformen sind nicht einschränkende Beispiele, die nur zur Veranschaulichung bereitgestellt sind. In verschiedenen Ausführungsformen ist eine Speicherschaltung 100A/100B anders konfiguriert, sodass eine oder mehr Teilsummen basierend auf kombinierten gespeicherten Gewichtsdatenelementen erzeugt werden, wodurch Auflösung verglichen mit Ausführungsformen erhöht wird, in welchen Teilsummen nicht auf kombinierten Gewichtsdatenelementen basieren.
  • 8 ist ein Diagramm einer Speicherschaltungsbetriebsspannung VDD gemäß manchen Ausführungsformen. In der in 8 gezeigten Ausführungsform ist Betriebsspannung VDD eine Leistungsversorgungsspannung einer Leistungsdomäne, in der Speicherschaltung 100A oder 100B arbeitet, wie oben in Bezug auf 1A und 1B besprochen. Betriebsspannung VDD weist drei Leistungsversorgungsspannungspegel, oV, VDD1 und VDD2 auf, von welchen Leistungsversorgungsspannungspegel VDD1 größer ist als Leistungsversorgungsspannungspegel VDD2. Die Spannungspegel und Zeitverhältnisse, die in 8 gezeigt sind, z.B. relative Dauer und/oder Magnituden und Sequenzen, sind nicht einschränkende Beispiele, die nur zur Veranschaulichung bereitgestellt sind.
  • Leistungsversorgungsspannungspegel oV stellt einen abgeschalteten Modus dar, in dem Speicherschaltungsbetriebe nicht durchgeführt werden. In manchen Ausführungsformen weist Speichergruppe 120A oder 120B Datenspeichereinheiten SUi, und SU2 auf, die, falls vorhanden, nicht flüchtige Speicherzellen aufweisen, sodass Gewichtsdatenelemente WTmn und/oder WTm(n+1) in einer oder mehreren Perioden gehalten werden, in welchen Betriebsspannung VDD einen Spannungspegel oV hat.
  • Leistungsversorgungsspannungspegel VDD1 stellt einen I/O-Modus dar, während dessen ein oder mehrere Gewichtselemente WTmn und oder WTm(n+1) in Speicherzelle BCX und/oder BX2 in einer oder mehreren Schreiboperationen gespeichert werden und/oder auf die in einer oder mehreren Leseoperationen zugegriffen wird.
  • Leistungsversorgungsspannungspegel VDD2 stellt einen Berechnungsmodus dar, während dessen eine oder mehrere speicherinterne Berechnungsoperationen durchgeführt werden, wie oben in Bezug auf 1A und 1B besprochen und/oder wie unten in Bezug auf Verfahren 900 und 1000 besprochen.
  • In der Ausführungsform, die in 8 gezeigt ist, wird durch Durchführen speicherinterner Berechnungen bei Leistungsversorgungsspannungspegel VDD2, der niedriger als Leistungsversorgungsspannungspegel VDD1 ist, Leistungsnutzung verglichen mit Ansätzen verringert, in welchen speicherinterne Berechnungen in einem Berechnungsmodus mit einem selben Spannungspegel wie jenem eines I/O-Modus durchgeführt werden.
  • 9 ist ein Ablaufdiagramm von Verfahren 900 zum Betreiben einer Speicherschaltung gemäß manchen Ausführungsformen. Verfahren 900 ist mit einer Speicherschaltung, z.B. Speicherschaltung 100A oder 100B, wie oben in Bezug auf 1A und 1B besprochen, verwendbar.
  • Die Abfolge, in der die Operationen von Verfahren 900 in 9 gezeigt sind, dient nur der Veranschaulichung; die Operationen von Verfahren 900 können gleichzeitig oder in Sequenzen ausgeführt werden, die sich von jenen unterscheiden, die in 9 gezeigt sind. In manchen Ausführungsformen werden Operationen zusätzlich zu jenen, die in 9 gezeigt sind, vor, zwischen, während und/oder nach den Operationen durchgeführt, die in 9 gezeigt sind. In manchen Ausführungsformen sind die Operationen von Verfahren 900 ein Teilsatz eines Verfahrens zum Betreiben einer IC, z.B. eines Sensors, einer RF-Vorrichtung, eines Prozessors, einer Logik oder einer Signalverarbeitungsschaltung oder dergleichen. In verschiedenen Ausführungsformen sind ein oder mehrere Operationen von Verfahren 900 ein Teilsatz von Verfahren 1000, wie unten in Bezug auf 10 besprochen.
  • Verfahren 900 ist ein nicht einschränkendes Beispiel einer Teilsummenberechnung, in der eine Instanz PSm von Teilsummen PS1-PSM für eine entsprechende m-te von Spalten C1-CM berechnet wird, wie oben in Bezug auf 1A-5 besprochen. In der Ausführungsform, die in 9 gezeigt ist, durchläuft Zähler k jedes der Anzahl H von Bits jedes Eingangsdatenelements A1-AN. Bei jedem Wert von Zähler k wird ein Summierungsdatenelement Pk, entsprechend einer Instanz von Summierungsdatenelementen SD1-SDM als eine Summe von N Produkten der entsprechenden k-ten Bits und Gewichtsdatenelemente Wmn berechnet. Teilsumme PSm wird durch Akkumulieren von Datenelementen Pk wie unten besprochen erzeugt.
  • Bei Operation 910 wird Zähler k auf null initialisiert. In manchen Ausführungsformen umfasst Initialisieren von Zähler k Verwenden von Steuerschaltung 150, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Initialisieren von Zähler k auf null Einstellen des Inhalts eines oder mehrerer Datenregister auf null. In manchen Ausführungsformen umfasst Initialisieren von Zähler k auf null Einstellen eines internen Datenelements IDE eines Datenregisters R1 auf null, wie oben in Bezug auf Akkumulator 500 und 5 besprochen.
  • Bei Operation 920 wird Zähler k um eins erhöht und Summierungsdatenelement Pk wird basierend auf dem Wert von Zähler k erzeugt. Erzeugen von Summierungsdatenelement Pk umfasst Summieren von Produktdatenelementen entsprechend jeder von N Reihen von Daten in Speichergruppe 120A oder 120B über den Bereich, der von n=1 bis N definiert ist. Jedes n-te Produktdatenelement ist das k-te Bit ANk des Eingangsdatenelements An entsprechend Zählern n und k, multipliziert mit einem entsprechenden Gewichtsdatenelement Wmn oder Wm(n+i). Summieren der resultierenden Produktdatenelemente über den Bereich n=1 bis N erzeugt dadurch Summierungsdatenelement Pk entsprechend einer Instanz von Summierungsdatenelementen SD1-SDM.
  • In manchen Ausführungsformen umfasst Erzeugen von Summierungsdatenelement Pk Verwenden eines Addiererbaums 122 entsprechend der m-ten von Spalten C1-CM, um Produktdatenelemente Pmn, die durch Speicherzellen BCX ausgegeben werden, über den Bereich n=1 bis n=N zu summieren, wie oben in Bezug auf Speicherschaltung 100A und 1A-5 besprochen. In manchen Ausführungsformen umfasst Erzeugen von Summierungsdatenelement Pk Verwenden von Speicherzellen BX2, um Summendatenelemente Sm1-Sml über den Bereich 1=1 bis 1=L zu erzeugen, und Verwenden eines Addiererbaums 122 entsprechend der m-ten von Spalten C1-CM, um die Summenproduktdatenelemente Sm1-Sml zu summieren, die durch die Speicherzellen BX2 ausgegeben werden, wie oben in Bezug auf Speicherschaltung 100B und 1A-5 besprochen.
  • Bei Operation 930 wird Teilsummendatenelement Ok basierend auf dem Wert des Zählers k erzeugt. Erzeugen von Teilsummendatenelement Ok umfasst Initialisieren von Teilsummendatenelement Ok auf einen ersten Wert von Summierungsdatenelement Pk, wenn Zähler k den Wert 1 hat, und wenn Zähler k einen Wert ungleich 1 hat, Verschieben des vorherigen Werts von Datenelement Ok (Ok-1) und Addieren eines aktuellen Werts von Summierungsdatenelement Pk.
  • Verschieben des vorherigen Werts von Teilsummendatenelement Ok entspricht Erhöhen oder Senken des vorherigen Werts um ein signifikantes Bit. In manchen Ausführungsformen entspricht Inkrementieren von Zähler k von 1 bis H einem Erhöhen signifikanter Bits von Eingangsdatenelementen A1-AN und Verschieben des vorherigen Werts von Teilsummendatenelement Ok entspricht Erhöhen des vorherigen Werts um ein signifikantes Bit, d.h. Multiplizieren des vorherigen Werts mit zwei. In manchen Ausführungsformen entspricht Inkrementieren von Zähler k von 1 auf H einem Senken signifikanter Bits von Eingangsdatenelementen A1-AN und Verschieben des vorherigen Werts von Teilsummendatenelement Ok entspricht Senken des vorherigen Werts um ein signifikantes Bit, d.h. Dividieren des vorherigen Werts durch zwei.
  • In manchen Ausführungsformen umfasst Erzeugen von Teilsummendatenelement Ok Einstellen von Teilsummendatenelement PS1-PSM auf eine erste Instanz des entsprechenden Summierungsdatenelements SD1-SDM durch Speichern der ersten Instanz des entsprechenden Summierungsdatenelements SD1-SDM als internes Datenelement IDE in Datenregister Ri, Verwenden von Verschieber SH1 zum Verschieben des internen Datenelements IDE und Addieren anschließender Instanzen von Summierungsdatenelementen SD1-SDM zu Verschieber-Datenelementen SDE, wie oben in Bezug auf 1A-5 besprochen.
  • Bei Operation 940 wird Zähler k mit der Anzahl H verglichen. Wenn Zähler k kleiner als die Anzahl H ist, kehrt Verfahren 900 zu Operation 920 zurück, und wenn Zähler k gleich der Anzahl H ist, fährt Verfahren 900 mit Operation 950 fort.
  • Bei Operation 950 wird Teilsummendatenelement PSm auf den endgültigen Wert von Teilsummendatenelement Ok entsprechend Zähler k=H eingestellt. In manchen Ausführungsformen, die Anzahl H = 4, entspricht Inkrementieren von Zähler k einem Erhöhen signifikanter Bits von Eingangsdatenelementen A1-AN und Einstellen von Teilsummendatenelement PSm auf den endgültigen Wert von Teilsummendatenelement Ok ist gegeben durch PSm = 2 0 n = 1 N A n 1 x W m n + 2 1 n = 1 N A n 2 x W m n + 2 2 n = 1 N A n 3 x W m n + 2 3 n = 1 N A n 4 x W m n
    Figure DE102021107093A1_0001
    wobei Zähler k=i einem LSB und einem Koeffizienten von 2° entspricht und Zähler k=4 einem MSB und einem Koeffizient von 23 entspricht.
  • In manchen Ausführungsformen umfasst Einstellen von Teilsummendatenelement PSm auf den endgültigen Wert von Teilsummendatenelement Ok Ausgeben des m-ten Teilsummendatenelements PS1-PSM auf einem entsprechenden m-ten Ausgangsanschluss O1-OM, wie oben in Bezug auf 1A-5 besprochen.
  • Durch Ausführen mancher oder aller der Operationen von Verfahren 900 unter Verwendung einer Speicherschaltung 100A oder 100B wird eine Teilsumme basierend auf einer speicherinternen Berechnung erzeugt, wodurch die oben in Bezug auf Speicherschaltung 100A und 100B besprochenen Vorteile erreicht werden.
  • 10 ist ein Ablaufdiagramm von Verfahren 1000 zum Betreiben einer Speicherschaltung gemäß manchen Ausführungsformen. Verfahren 1000 ist mit einer Speicherschaltung, z.B. Speicherschaltung 100A oder 100B, wie oben in Bezug auf 1A und 1B besprochen, verwendbar.
  • Die Abfolge, in der die Operationen von Verfahren 1000 in 10 gezeigt sind, dient nur der Veranschaulichung; die Operationen von Verfahren 1000 können in Sequenzen ausgeführt werden, die sich von jener unterscheiden, die in 10 gezeigt ist. In manchen Ausführungsformen werden Operationen zusätzlich zu jenen, die in 10 gezeigt sind, vor, zwischen, während und/oder nach den Operationen durchgeführt, die in 10 gezeigt sind. In manchen Ausführungsformen sind die Operationen von Verfahren 1000 ein Teilsatz eines Verfahrens zum Betreiben einer IC, z.B. eines Sensors, einer RF-Vorrichtung, eines Prozessors, einer Logik oder einer Signalverarbeitungsschaltung oder dergleichen. In verschiedenen Ausführungsformen sind die Operationen von Verfahren 1000 ein Teilsatz eines Verfahrens zum Betreiben eines CNN oder eines anderen neuronalen Netzwerks.
  • Bei Operation 1010 wird in manchen Ausführungsformen ein erstes Gewichtsdatenelement in jeder Speicherzelle einer Spalte von Speicherzellen gespeichert. In manchen Ausführungsformen umfasst Speichern des ersten Gewichtsdatenelements in jeder Speicherzelle der Spalte von Speicherzellen Speichern von Gewichtsdaten in mehreren Spalten von Speicherzellen. In verschiedenen Ausführungsformen umfasst Speichern des ersten Gewichtsdatenelements in jeder Speicherzelle der Spalte von Speicherzellen Verwenden von I/O Schaltung 130, um Gewichtsdatenelemente WTmn und/oder WTm(n+1) in Speicherzellen BCX oder BX2 von Spalten C1-CM zu speichern, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Speichern des ersten Gewichtsdatenelements in jeder Speicherzelle der Spalte von Speicherzellen Betreiben der Speicherschaltung bei einem ersten Leistungsversorgungsspannungspegel, der höher als ein zweiter Leistungsversorgungsspannungspegel ist, bei dem manche oder alle von Operationen 1020-1070 durchgeführt werden. In manchen Ausführungsformen umfasst Betreiben der Speicherschaltung bei dem ersten Leistungsversorgungsspannungspegel Betreiben der Speicherschaltung bei Leistungsversorgungsspannungspegel VDD1 und Betreiben der Speicherschaltung bei dem zweiten Leistungsversorgungsspannungspegel umfasst Betreiben der Speicherschaltung bei Leistungsversorgungsspannungspegel VDD2 wie oben in Bezug auf 8 besprochen.
  • Bei Operation 1020 wird in manchen Ausführungsformen ein Satz von k-ten Bits von H Bits jedes Eingangsdatenelements mehrerer Eingangsdatenelemente gleichzeitig von einer Auswahlschaltung ausgegeben. In manchen Ausführungsformen umfasst gleichzeitiges Ausgeben des Satzes von k-ten Bits von H Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Ausgeben eines Satzes von k-ten Bits A1k-ANk von Eingangsdatenelementen A1-AN von Auswahlschaltung 110, wie oben in Bezug auf 1A-5 besprochen.
  • In verschiedenen Ausführungsformen ist gleichzeitiges Ausgeben des Satzes von k-ten Bits von H Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Teil eines sequenziellen Ausgebens von Sätzen von k-ten Bits durch Inkrementieren von einem LSB zu einem MSB oder von einem MSB zu einem LSB.
  • In manchen Ausführungsformen umfasst gleichzeitiges Ausgeben des Satzes von k-ten Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Empfangen der mehreren Eingangsdatenelemente bei der Auswahlschaltung. In manchen Ausführungsformen umfasst gleichzeitiges Ausgeben des Satzes von k-ten Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Speichern der mehreren Eingangsdatenelemente in der Auswahlschaltung, z.B. in einem oder mehreren Datenregistern. In manchen Ausführungsformen umfasst gleichzeitiges Ausgeben des Satzes von k-ten Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Empfangen und Speichern der Eingangsdatenelemente A1-AN unter Verwendung der Auswahlschaltung 110, wie oben in Bezug auf 1A und 1B besprochen. In manchen Ausführungsformen umfasst gleichzeitiges Ausgeben des Satzes von k-ten Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Verwenden der oben in Bezug auf 2 besprochenen Auswahlschaltung 200.
  • In manchen Ausführungsformen umfasst gleichzeitiges Ausgeben des Satzes von k-ten Bits von H Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Erzeugen und Antworten auf ein oder mehrere Steuersignale, z.B. ein oder mehr Steuersignale CTRL, die durch Steuerschaltung 150 erzeugt werden, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst gleichzeitiges Ausgeben des Satzes von k-ten Bits von H Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Durchführen von manchem oder allem von Verfahren 900 wie unten besprochen in Bezug auf 9.
  • Bei Operation 1030 wird der Satz von k-ten Bits bei einer Spalte von Speicherzellen empfangen. In verschiedenen Ausführungsformen umfasst Empfangen des Satzes von k-ten Bits bei der Spalte von Speicherzellen Empfangen eines Satzes von k-ten Bits A1k-ANk bei einer Spalte von Speicherzellen BCX oder BX2, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Empfangen des Satzes von k-ten Bits bei der Spalte von Speicherzellen Empfangen des Satzes von k-ten Bits bei jeder Spalte von mehreren Spalten. In manchen Ausführungsformen umfasst Empfangen des Satzes von k-ten Bits bei den mehreren Spalten Empfangen des Satzes von k-ten Bits A1k-ANk bei jeder von Spalten C1-CM, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Empfangen des Satzes von k-ten Bits bei der Spalte von Speicherzellen Durchführen von manchem oder allem von Verfahren 900, wie unten in Bezug auf 9 besprochen.
  • Bei Operation 1040 wird jede Speicherzelle der Spalte von Speicherzellen verwendet, um das k-te Bit eines entsprechenden Eingangsdatenelements mit dem ersten Gewichtsdatenelement zu multiplizieren, das in der Speicherzelle gespeichert ist, wodurch ein entsprechendes erstes Produktdatenelement erzeugt wird. In verschiedenen Ausführungsformen umfasst Verwenden der Speicherzelle zum Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements mit dem ersten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, Verwenden einer Speicherzelle BCX oder BX2, um das k-te Bit A1k-ANk mit dem ersten Gewichtsdatenelement zu multiplizieren, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements mit dem ersten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, wodurch das entsprechende erste Produktdatenelement erzeugt wird, Multiplizieren von Bit ANk mit Gewichtsdatenelement WTmn, wodurch Produktdatenelement Pmn erzeugt wird, wie oben in Bezug auf Speicherzellen 300A und 300B und 3A und 3B besprochen.
  • In manchen Ausführungsformen umfasst Verwenden jeder Speicherzelle der Spalte von Speicherzellen Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements der mehreren Datenelemente mit dem ersten Gewichtsdatenelement Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits eines anderen entsprechenden Eingangsdatenelements der mehreren Datenelemente mit einem zweiten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, wodurch ein zweites Produktdatenelement erzeugt wird, und Addieren des ersten Produktdatenelements zu dem zweiten Produktdatenelement, um ein Summendatenelement zu erzeugen.
  • In manchen Ausführungsformen umfasst Multiplizieren des k-ten Bits eines anderen entsprechenden Eingangsdatenelements der mehreren Datenelemente mit dem zweiten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, wodurch das zweite Produktdatenelement erzeugt wird, und Addieren des ersten Produktdatenelements zu dem zweiten Produktdatenelement, um das Summendatenelement zu erzeugen, Multiplizieren von Bit A(n+1)k mit Gewichtsdatenelement WTm(n+1), wodurch das Produktdatenelement Pm(n+1) erzeugt wird, und Addieren von Produktdatenelement Pmn zu Produktdatenelement Pm(n+1), um Summendatenelement Sml zu erzeugen, wie oben in Bezug auf Speicherzelle 300B und 3B besprochen.
  • In manchen Ausführungsformen umfasst Verwenden der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements mit dem ersten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, Verwenden mehrerer Spalten von Speicherzellen, z.B. Spalten C1-CM, wie oben in Bezug auf 1A-5 besprochen, zum Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements mit entsprechenden ersten Gewichtsdatenelementen von mehreren ersten Gewichtsdatenelementen.
  • In manchen Ausführungsformen umfasst Verwenden der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements mit dem ersten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, Erzeugen und Antworten auf ein oder mehrere Steuersignale, z.B. ein oder mehrere Steuersignale CTRL die durch Steuerschaltung 150 erzeugt werden, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements mit dem ersten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, Durchführen von manchem oder allem von Verfahren 900, wie unten in Bezug auf 9 besprochen.
  • Bei Operation 1050 wird ein Addiererbaum zum Erzeugen eines Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente verwendet. In manchen Ausführungsformen umfasst Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente Verwenden von Addiererbaum 122 zum Erzeugen einer Instanz von Summierungsdatenelement SD1-SDM basierend auf Produktdatenelementen Pmn und/oder Pm(n+1), wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements Verwenden von Addiererbaum 400, wie oben in Bezug auf 4 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements Verwenden mehrerer Addiererbäume zum Erzeugen mehrerer Summierungsdatenelemente, z.B. Summierungsdatenelemente SD1-SDM, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements Empfangen der ersten Produktdatenelemente beim Addiererbaum. In manchen Ausführungsformen umfasst Empfangen der ersten Produktdatenelemente beim Addiererbaum Empfangen eines Produktdatenelements P11-PMN bei einem Addiererbaum 122, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements Empfangen von Summendatenelementen beim Addiererbaum. In manchen Ausführungsformen umfasst Empfangen der Summendatenelemente beim Addiererbaum Empfangen eines Summendatenelements S11-SML bei einem Addiererbaum 122, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements Verwenden eines Multiplexers zum Koppeln des Addiererbaums an ausgewählte Speicherzellen, z.B. Verwenden von Multiplexer MA, wie oben in Bezug auf 6 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente Erzeugen und Antworten auf ein oder mehrere Steuersignale, z.B. ein oder mehr Steuersignale CTRL, die durch Steuerschaltung 150 erzeugt werden, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente Durchführen von manchem oder allem von Verfahren 900, wie unten in Bezug auf 9 besprochen.
  • Bei Operation 1060 wird ein Akkumulator zum Erzeugen einer Teilsumme basierend auf den Summierungsdatenelementen verwendet. In manchen Ausführungsformen umfasst Verwenden des Akkumulators zum Erzeugen der Teilsumme basierend auf den Summierungsdatenelementen Verwenden von Akkumulator 140 zum Erzeugen einer Teilsumme PS1-PSM basierend auf einem entsprechenden Summierungsdatenelement SD1-SDM, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Akkumulators zum Erzeugen der Teilsumme Addieren eines ersten Summierungsdatenelements zu einem zweiten Summierungsdatenelement, das in einem Datenregister gespeichert und durch einen Verschieber verschoben ist. In manchen Ausführungsformen ist Addieren des ersten Summierungsdatenelements zu dem zweiten Summierungsdatenelement mit der Auswahlschaltung synchronisiert, die die Sätze von k-ten Bits sequenziell ausgibt. In manchen Ausführungsformen umfasst Verwenden des Akkumulators zum Erzeugen der Teilsumme Verwenden von Akkumulator 500 zum Erzeugen der Teilsumme PSm, wie oben in Bezug auf 5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Akkumulators zum Erzeugen der Teilsumme basierend auf den Summierungsdatenelementen Verwenden mehrerer Akkumulatoren zum Erzeugen mehrerer Teilsummendatenelemente, z.B. Teilsummendatenelemente PS1-PSM, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden der mehreren Akkumulatoren zum Erzeugen der mehreren Teilsummen Verwenden eines ersten Akkumulators zum Erzeugen einer ersten Teilsumme basierend auf einer zweiten Teilsumme, die durch einen zweiten Akkumulator erzeugt wird, z.B. Verwenden einer ersten Instanz von Akkumulator 140 zum Erzeugen von Teilsumme PS1 basierend auf Teilsumme PS2, wie oben besprochen in Bezug auf 7A.
  • In manchen Ausführungsformen umfasst Verwenden der mehreren Akkumulatoren zum Erzeugen der mehreren Teilsummen Verwenden eines Addierers zum Erzeugen einer Teilsumme basierend auf mehreren Teilsummen, die durch mehrere Akkumulatoren erzeugt werden, z.B. Verwenden von Addierer ADDSUM zum Erzeugen der Teilsumme OSUM basierend auf Teilsumme PS1-PS4, wie oben in Bezug auf 7B besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Akkumulators zum Erzeugen der Teilsumme basierend auf den Summierungsdatenelementen Erzeugen und Antworten auf ein oder mehrere Steuersignale, z.B. ein oder mehrere Steuersignale CTRL, die durch Steuerschaltung 150 erzeugt werden, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Verwenden des Akkumulators zum Erzeugen der Teilsumme basierend auf den Summierungsdatenelementen Durchführen von manchem oder allem von Verfahren 900, wie unten in Bezug auf 9 besprochen.
  • Bei Operation 1070 werden in manchen Ausführungsformen manche oder alle von Operationen 1010-1060 wiederholt. In manchen Ausführungsformen umfasst Wiederholen mancher oder aller von Operationen 1010-1060 Synchronisieren von Ausführung mancher oder aller von Operationen 1010-1060. In manchen Ausführungsformen umfasst Wiederholen mancher oder aller von Operationen 1010-1060 Inkrementieren eines Zählers, z.B. Zähler k, wie oben in Bezug auf 1A-9 besprochen. In manchen Ausführungsformen umfasst Wiederholen mancher oder aller von Operationen 1010-1060 Erzeugen eines oder mehrerer Steuersignale, z.B. Verwenden von Steuerschaltung 150 zum Erzeugen eines oder mehrerer von Steuersignalen CTRL, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Wiederholen mancher oder aller von Operationen 1010-1060 Durchführen von manchem oder allem von Verfahren 900, wie oben in Bezug auf 9 besprochen.
  • In manchen Ausführungsformen umfasst Wiederholen mancher oder aller von Operationen 1010-1060 Verwenden eines Akkumulators zum Erzeugen einer Teilsumme basierend auf H Summierungsdatenelementen, z.B. Verwenden von Akkumulator 140 zum Erzeugen einer Teilsumme PSi-PSM basierend auf H Instanzen entsprechender Summierungsdatenelemente SD1-SDM, wie oben in Bezug auf 1A-5 besprochen.
  • In manchen Ausführungsformen umfasst Wiederholen mancher oder aller von Operationen 1010-1060 sequenzielles Multiplizieren von Sätzen von k-ten Bits, die durch die Auswahlschaltung ausgegeben werden, mit entsprechenden ersten Gewichtsdatenelementen, wodurch mehrere erste Produktdatenelemente, z.B. erste Produktdatenelemente Pmn, erzeugt werden, wie oben in Bezug auf 3A und 3B besprochen.
  • In manchen Ausführungsformen umfasst Wiederholen mancher oder aller von Operationen 1010-1060 sequenzielles Multiplizieren von Sätzen von k-ten Bits, die durch die Auswahlschaltung ausgegeben werden, mit entsprechenden zweiten Gewichtsdatenelementen, wodurch mehrere zweite Produktdatenelemente, z.B. zweite Produktdatenelemente Pm(n+1), erzeugt werden, wie oben in Bezug auf 3B besprochen.
  • In manchen Ausführungsformen umfasst Wiederholen mancher oder aller von Operationen 1010-1060 Verwenden des Addiererbaums zum Erzeugen der H Summierungsdatenelemente basierend auf den mehreren ersten Produktdatenelementen und in manchen Ausführungsformen weiter basierend auf den mehreren zweiten Produktdatenelementen.
  • In manchen Ausführungsformen sind die mehreren Eingangsdatenelemente erste mehrere Eingangsdatenelemente eines Satzes von mehreren Eingangsdatenelementen und Wiederholen mancher oder aller von Operationen 1010-1060 umfasst sequenzielles Empfangen jedes der mehreren Eingangsdatenelemente des Satzes von mehreren Eingangsdatenelementen und Durchführen von manchem oder allem von Operationen 1010-1060 zum Erzeugen einer oder mehrerer Teilsummen basierend auf jedem der mehreren Eingangsdatenelemente des Satzes von mehreren Eingangsdatenelementen und einer einzelnen Vielzahl von Gewichtsdatenelementen.
  • Durch Ausführen mancher oder aller der Operationen von Verfahren 1000 wird eine Teilsumme basierend auf einer speicherinternen Berechnung erzeugt, wodurch die oben in Bezug auf Speicherschaltung 100A und 100B besprochenen Vorteile erzielt werden. In Ausführungsformen, in welchen eine oder mehr Teilsummen basierend auf jeder Vielzahl von Eingangsdatenelementen eines Satzes von mehreren Eingangsdatenelementen und einer einzelnen Vielzahl von Gewichtsdatenelementen erzeugt werden, sind Leistungspegel weiter verringert, verglichen mit Ansätzen, in welchen eine einzelne Vielzahl von Gewichtsdatenelementen nicht wieder für mehrere speicherinterne Teilsummenberechnungen verwendet wird.
  • In manchen Ausführungsformen weist eine Speicherschaltung eine Auswahlschaltung, die konfiguriert ist, mehrere Eingangsdatenelemente zu empfangen, wobei jedes Eingangsdatenelement der mehreren Eingangsdatenelemente eine Anzahl von Bits gleich H enthält, und einen ausgewählten Satz von k-ten Bits der H Bits jedes Eingangsdatenelements der mehreren Datenelemente auszugeben, eine Spalte von Speicherzellen, wobei jede Speicherzelle der Spalte von Speicherzellen eine erste Datenspeichereinheit, die konfiguriert ist, ein erstes Gewichtsdatenelement zu speichern, und einen ersten Multiplizierer, der zum Erzeugen eines ersten Produktdatenelements basierend auf dem ersten Gewichtsdatenelement und einem ersten k-ten Bit des ausgewählten Satzes von k-ten Bits konfiguriert ist, aufweist, und einen Addiererbaum, der zum Erzeugen eines Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente konfiguriert ist, auf. In manchen Ausführungsformen ist jedes Gewichtsdatenelement ein Mehrfachbit-Datenelement. In manchen Ausführungsformen weist jede Speicherzelle der Spalte von Speicherzellen eine zweite Datenspeichereinheit, die zum Speichern eines zweiten Gewichtsdatenelements konfiguriert ist, einen zweiten Multiplizierer, der zum Erzeugen eines zweiten Produktdatenelements basierend auf dem zweiten Gewichtsdatenelement und einem zweiten k-ten Bit des ausgewählten Satzes von k-ten Bits konfiguriert ist, und einen Addierer, der zum Erzeugen eines Summendatenelements aus dem ersten und zweiten Produktdatenelement konfiguriert ist, auf, wobei der Addiererbaum konfiguriert ist, das Summierungsdatenelement basierend auf jedem der Summendatenelemente zu erzeugen. In manchen Ausführungsformen ist das Summierungsdatenelement ein Summierungsdatenelement von H Summierungsdatenelementen, die Auswahlschaltung ist konfiguriert, Sätze von k-ten Bits von einem ersten Bit bis zum H-ten Bit sequenziell auszugeben, der Addiererbaum ist konfiguriert, jedes der H Summierungsdatenelemente basierend auf den sequenziell ausgegebenen Sätzen von k-ten Bits zu erzeugen, und die Speicherschaltung weist einen Akkumulator auf, der konfiguriert ist, eine Teilsumme basierend auf den H Summierungsdatenelementen zu erzeugen. In manchen Ausführungsformen weist die Speicherschaltung eine Steuerschaltung auf, die konfiguriert ist, ein oder mehr Steuersignale zu erzeugen, die von der Auswahlschaltung und dem Akkumulator empfangen werden, wobei die Speicherschaltung dadurch konfiguriert ist, die Teilsumme synchronisiert mit der Auswahlschaltung zu erzeugen, die die Sätze von k-ten Bits sequenziell ausgibt. In manchen Ausführungsformen ist die Spalte von Speicherzellen eine Spalte von mehreren Spalten von Speicherzellen, wobei jede Spalte von Speicherzellen konfiguriert ist, den ausgewählten Satz von k-ten Bits der H Bits jeder Vielzahl von Bits zu empfangen, der Addiererbaum ein Addiererbaum von mehreren Addiererbäumen ist, die an entsprechende Spalten der mehrere Spalten von Speicherzellen gekoppelt sind, der Akkumulator ein Akkumulator von mehreren Akkumulatoren ist, die an entsprechende Addiererbäume der mehreren Addiererbäume gekoppelt sind, und jeder Akkumulator der mehreren Akkumulatoren konfiguriert ist, eine entsprechende Teilsumme basierend auf den H Summierungsdatenelementen zu erzeugen, die durch den entsprechenden Addiererbaum der mehreren Addiererbäume erzeugt werden. In manchen Ausführungsformen ist mindestens ein Akkumulator der mehreren Akkumulatoren konfiguriert, die entsprechende Teilsumme basierend auf einer Teilsumme zu erzeugen, die durch einen anderen Akkumulator der mehreren Akkumulatoren erzeugt wird. In manchen Ausführungsformen weist jede erste Datenspeichereinheit eine SRAM-Vorrichtung auf, die konfiguriert ist manches oder alles des ersten Gewichtsdatenelements zu speichern. In manchen Ausführungsformen weist die Speicherschaltung eine I/O Schaltung auf, die konfiguriert ist, jedes erste Gewichtsdatenelement in der entsprechenden ersten Datenspeichereinheit zu speichern.
  • In manchen Ausführungsformen umfasst ein Verfahren zum Betreiben einer Speicherschaltung Empfangen, bei einer Spalte von Speicherzellen, eines Satzes von k-ten Bits einer Anzahl H von Bits jedes Eingangsdatenelements mehrerer Eingangsdatenelemente, Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits eines entsprechenden Eingangsdatenelements der mehreren Datenelemente mit einem ersten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, wodurch ein entsprechendes erstes Produktdatenelement erzeugt wird, und Verwenden eines Addiererbaums zum Erzeugen eines Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente. In manchen Ausführungsformen umfasst Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements der mehreren Datenelemente mit dem ersten Gewichtsdatenelement Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits eines anderen entsprechenden Eingangsdatenelements der mehreren Datenelemente mit einem zweiten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, wodurch ein zweites Produktdatenelement erzeugt wird, und Addieren des ersten Produktdatenelements zu dem zweiten Produktdatenelement, um ein Summendatenelement zu erzeugen, wobei Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements auf jedem der entsprechenden Summendatenelemente basiert. In manchen Ausführungsformen umfasst das Verfahren Verwenden einer Auswahlschaltung zum sequenziellen Ausgeben von Sätzen von k-ten Bits der H Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente und Verwenden eines Akkumulators zum Erzeugen einer Teilsumme basierend auf H Summierungsdatenelementen, wobei Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits des Eingangsdatenelements der mehreren Datenelemente mit dem ersten Gewichtsdatenelement sequenzielles Multiplizieren jedes k-ten Bits mit dem ersten Gewichtsdatenelement umfasst, wodurch mehrere erste Produktdatenelemente erzeugt werden, und Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente Verwenden des Addiererbaums zum Erzeugen der H Summierungsdatenelemente basierend auf den mehreren ersten Produktdatenelementen umfasst. In manchen Ausführungsformen umfasst Empfangen des k-ten Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Empfangen des Satzes von k-ten Bits bei jeder Spalte von Speicherzellen von mehreren Spalten von Speicherzellen, Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits mit dem ersten Gewichtsdatenelement umfasst Verwenden jeder Speicherzelle jeder Spalte von Speicherzellen der mehreren Spalten von Speicherzellen zum Multiplizieren des k-ten Bits mit einem entsprechenden ersten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, wodurch das entsprechende erste Produktdatenelement erzeugt wird, Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements umfasst Verwenden mehrerer Addiererbäume zum Erzeugen mehrerer Summierungsdatenelemente basierend auf den ersten Produktdatenelementen, und Verwenden des Akkumulators zum Erzeugen der Teilsumme umfasst Verwenden mehrerer Akkumulatoren zum Erzeugen mehrerer Teilsummen basierend auf entsprechenden H Summierungsdatenelementen. In manchen Ausführungsformen umfasst Verwenden der mehreren Akkumulatoren zum Erzeugen der mehreren Teilsummen Verwenden eines ersten Akkumulators zum Erzeugen einer ersten Teilsumme basierend auf einer zweiten Teilsumme, die durch einen zweiten Akkumulator erzeugt wird. In manchen Ausführungsformen umfasst Verwenden des Akkumulators zum Erzeugen der Teilsumme Addieren eines ersten Summierungsdatenelements mit einem zweiten Summierungsdatenelement, das in einem Datenregister gespeichert und durch einen Verschieber verschoben ist, und Addieren des ersten Summierungsdatenelements zu dem zweiten Summierungsdatenelement ist mit der Auswahlschaltung synchronisiert, die die k-ten Bits sequenziell ausgibt. In manchen Ausführungsformen umfasst Verwenden der Auswahlschaltung zum sequenziellen Ausgeben der Sätze von k-ten Bits der H Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Ausgeben der Sätze von k-ten Bits von einem LSB zu einem MSB. In manchen Ausführungsformen umfasst das Verfahren Speichern des ersten Gewichtsdatenelements in jeder Speicherzelle der Spalte von Speicherzellen basierend auf einem ersten Leistungsversorgungsspannungspegel, wobei jedes von dem Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits mit dem ersten Gewichtsdatenelement und dem Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements auf einem zweiten Leistungsversorgungsspannungspegel unter dem ersten Leistungsversorgungsspannungspegel basiert.
  • In manchen Ausführungsformen weist eine Speicherschaltung eine Auswahlschaltung, die konfiguriert ist, für mehrere Eingangsdatenelemente, die jeweils H Bits enthalten, ausgewählte Sätze von k-ten Bits an entsprechende Speicherzellen jeder Spalte von Speicherzellen von mehreren Spalten von Speicherzellen sequenziell auszugeben, mehrere Addiererbäume, wobei jeder Addiererbaum der mehreren Addiererbäume an eine entsprechende Spalte von Speicherzellen der mehreren Spalten von Speicherzellen gekoppelt ist, und mehrere Akkumulatoren, wobei jeder Akkumulator der mehreren Akkumulatoren an einen entsprechenden Addiererbaum der mehreren Addiererbäume gekoppelt ist, auf. Jede Speicherzelle jeder Spalte von Speicherzellen weist einen Multiplizierer auf, der konfiguriert ist, ein Produktdatenelement basierend auf dem entsprechenden k-ten Bit des ausgewählten Satzes von k-ten Bits und einem Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, zu erzeugen, wobei jeder Addiererbaum der mehreren Addiererbäume konfiguriert ist, für jeden sequenziell ausgegebenen Satz von k-ten Bits, ein Summierungsdatenelement basierend auf jedem der Produktdatenelemente der entsprechenden Spalte von Speicherzellen zu erzeugen, und jeder Akkumulator der mehreren Akkumulatoren konfiguriert ist, eine Teilsumme basierend auf den Summierungsdatenelementen, die durch den entsprechenden Addiererbaum der mehreren Addiererbäume erzeugt werden, zu erzeugen. In manchen Ausführungsformen weist jeder Addiererbaum der mehreren Addiererbäume einen ersten Addierer, der konfiguriert ist, erste und zweite Summendatenelemente zu empfangen und die Summierungsdatenelemente mit einer ersten Anzahl von Bits auszugeben, und einen zweiten und dritten Addierer, die konfiguriert sind, das erste und zweite Summendatenelement basierend auf den Produktdatenelementen der entsprechenden Spalte von Speicherzellen auszugeben, auf, wobei jedes des ersten und zweiten Summendatenelements eine zweite Anzahl von Bits hat, die um eins niedriger ist als die erste Anzahl von Bits. In manchen Ausführungsformen ist mindestens ein Addiererbaum der mehreren Addiererbäume an die entsprechende Spalte von Speicherzellen der mehreren Spalten von Speicherzellen durch einen Multiplexer gekoppelt.
  • Zuvor wurden Merkmale von mehreren Ausführungsformen angeführt, so dass Fachleute auf dem Gebiet die Aspekte der vorliegenden Offenbarung besser verstehen können. Fachleute auf dem Gebiet sollten zu schätzen wissen, dass sie die vorliegende Offenbarung leicht als Basis zur Gestaltung oder Modifizierung anderer Prozesse und Strukturen zur Ausführung derselben Zwecke und/oder zum Erreichen derselben Vorteile der hier vorgestellten Ausführungsformen verwenden können. Fachleute auf dem Gebiet sollten auch erkennen, dass solche äquivalenten Konstruktionen nicht vom Wesen und Umfang der vorliegenden Offenbarung abweichen und dass sie hier verschiedene Änderungen, Ersetzungen und Abänderungen vornehmen können, ohne vom Wesen und Umfang der vorliegenden Offenbarung abzuweichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63/051497 [0001]

Claims (20)

  1. Speicherschaltung, aufweisend: eine Auswahlschaltung konfiguriert zum Empfangen mehrerer Eingangsdatenelemente, wobei jedes Eingangsdatenelement der mehreren Eingangsdatenelemente eine Anzahl von Bits gleich H enthält, und Ausgeben eines ausgewählten Satzes von k-ten Bits der H Bits jedes Eingangsdatenelements der mehreren Datenelemente; eine Spalte von Speicherzellen, wobei jede Speicherzelle der Spalte von Speicherzellen aufweist: eine erste Datenspeichereinheit, die konfiguriert ist, ein erstes Gewichtsdatenelement zu speichern; und einen ersten Multiplizierer, der konfiguriert ist, ein erstes Produktdatenelement basierend auf dem ersten Gewichtsdatenelement und einem entsprechenden ersten k-ten Bit des ausgewählten Satzes von k-ten Bits zu erzeugen; und einen Addiererbaum, der konfiguriert ist, ein Summierungsdatenelement basierend auf jedem der ersten Produktdatenelemente zu erzeugen.
  2. Speicherschaltung nach Anspruch 1, wobei jedes Gewichtsdatenelement ein Mehrfachbit-Datenelement ist.
  3. Speicherschaltung nach Anspruch 1 oder 2, wobei jede Speicherzelle der Spalte von Speicherzellen weiter aufweist: eine zweite Datenspeichereinheit, die konfiguriert ist, ein zweites Gewichtsdatenelement zu speichern; einen zweiten Multiplizierer, der konfiguriert ist, ein zweites Produktdatenelement basierend auf dem zweiten Gewichtsdatenelement und einem entsprechenden zweiten k-ten Bit des ausgewählten Satzes von k-ten Bits zu erzeugen; und einen Addierer, der konfiguriert ist, ein Summendatenelement aus dem ersten und zweiten Produktdatenelement zu erzeugen, wobei der Addiererbaum konfiguriert ist, das Summierungsdatenelement basierend auf jedem der Summendatenelemente zu erzeugen.
  4. Speicherschaltung nach einem der vorangehenden Ansprüche, wobei das Summierungsdatenelement ein Summierungsdatenelement von H Summierungsdatenelementen ist, die Auswahlschaltung konfiguriert ist, Sätze von k-ten Bits von einem ersten Bit bis zum H-ten Bit sequenziell auszugeben, der Addiererbaum konfiguriert ist, jedes der H Summierungsdatenelemente basierend auf den sequenziell ausgegebenen Sätzen von k-ten Bits zu erzeugen, und die Speicherschaltung weiter einen Akkumulator aufweist, der konfiguriert ist, eine Teilsumme basierend auf den H Summierungsdatenelementen zu erzeugen.
  5. Speicherschaltung nach Anspruch 4, weiter aufweisend eine Steuerschaltung, die konfiguriert ist, ein oder mehrere Steuersignale zu erzeugen, die von der Auswahlschaltung und dem Akkumulator empfangen werden, wobei die Speicherschaltung dadurch konfiguriert ist, die Teilsumme synchronisiert mit der Auswahlschaltung zu erzeugen, die die Sätze von k-ten Bits sequenziell ausgibt.
  6. Speicherschaltung nach Anspruch 4 oder 5, wobei die Spalte von Speicherzellen eine Spalte von mehreren Spalten von Speicherzellen ist, wobei jede Spalte von Speicherzellen konfiguriert ist, den ausgewählten Satz von k-ten Bits der H Bits jeder Vielzahl von Bits zu empfangen, der Addiererbaum ein Addiererbaum von mehreren Addiererbäumen ist, die an entsprechende Spalten der mehreren Spalten von Speicherzellen gekoppelt sind, der Akkumulator ein Akkumulator der mehreren Akkumulatoren ist, die an entsprechende Addiererbäume der mehreren Addiererbäume gekoppelt sind, und jeder Akkumulator der mehreren Akkumulatoren konfiguriert ist, eine entsprechende Teilsumme basierend auf den H Summierungsdatenelementen zu erzeugen, die durch den entsprechenden Addiererbaum der mehreren Addiererbäume erzeugt werden.
  7. Speicherschaltung nach Anspruch 6, wobei mindestens ein Akkumulator der mehreren Akkumulatoren konfiguriert ist, die entsprechende Teilsumme basierend auf einer Teilsumme zu erzeugen, die von einem anderen Akkumulator der mehreren Akkumulatoren erzeugt wird.
  8. Speicherschaltung nach einem der vorangehenden Ansprüche, wobei jede erste Datenspeichereinheit eine statische Direktzugriffsspeichervorrichtung (SRAM-Vorrichtung) aufweist, die konfiguriert ist, manches oder alles des ersten Gewichtsdatenelements zu speichern.
  9. Speicherschaltung nach einem der vorangehenden Ansprüche, weiter aufweisend eine Eingangs-/Ausgangsschaltung (I/O-Schaltung), die konfiguriert ist, jedes erste Gewichtsdatenelement in der entsprechenden ersten Datenspeichereinheit zu speichern.
  10. Verfahren zum Betreiben einer Speicherschaltung, das Verfahren umfassend: Empfangen, bei einer Spalte von Speicherzellen, eines Satzes von k-ten Bits einer Anzahl H von Bits jedes Eingangsdatenelements mehrerer Eingangsdatenelemente; Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits eines entsprechenden Eingangsdatenelements der mehreren Datenelemente mit einem ersten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, wodurch ein entsprechendes erstes Produktdatenelement erzeugt wird; und Verwenden eines Addiererbaums zum Erzeugen eines Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente.
  11. Verfahren nach Anspruch 10, wobei das Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements der mehreren Datenelemente mit dem ersten Gewichtsdatenelement Verwenden jeder Speicherzelle der Spalte von Speicherzellen umfasst zum: Multiplizieren des k-ten Bits eines anderen entsprechenden Eingangsdatenelements der mehreren Datenelemente mit einem zweiten Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, wodurch ein zweites Produktdatenelement erzeugt wird; und Addieren des ersten Produktdatenelements zu dem zweiten Produktdatenelement, um ein Summendatenelement zu erzeugen, wobei des Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements auf jedem der entsprechenden Summendatenelemente basiert.
  12. Verfahren nach Anspruch 10 oder 11, weiter umfassend: Verwenden einer Auswahlschaltung zum sequenziellen Ausgeben von Sätzen von k-ten Bits der H Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente; und Verwenden eines Akkumulators zum Erzeugen einer Teilsumme basierend auf H Summierungsdatenelementen, wobei das Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits des entsprechenden Eingangsdatenelements der mehreren Datenelemente mit dem ersten Gewichtsdatenelement sequenzielles Multiplizieren jedes k-ten Bits mit dem ersten Gewichtsdatenelement umfasst, wodurch mehrere erste Produktdatenelemente erzeugt werden, und das Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements basierend auf jedem der ersten Produktdatenelemente Verwenden des Addiererbaums zum Erzeugen der H Summierungsdatenelemente basierend auf den mehreren ersten Produktdatenelementen umfasst.
  13. Verfahren nach Anspruch 12, wobei das Empfangen des Satzes von k-ten Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Empfangen des Satzes von k-ten Bits bei jeder Spalte von Speicherzellen von mehreren Spalten von Speicherzellen umfasst, das Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits mit dem ersten Gewichtsdatenelement Verwenden jeder Speicherzelle jeder Spalte von Speicherzellen der mehreren Spalten von Speicherzellen zum Multiplizieren des k-ten Bits mit einem entsprechenden ersten Gewichtsdatenelement umfasst, das in der Speicherzelle gespeichert ist, wodurch das entsprechende erste Produktdatenelement erzeugt wird, das Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements Verwenden mehrerer Addiererbäume zum Erzeugen mehrerer Summierungsdatenelemente basierend auf den ersten Produktdatenelementen umfasst und das Verwenden des Akkumulators zum Erzeugen der Teilsumme Verwenden mehrerer Akkumulatoren zum Erzeugen mehrerer Teilsummen basierend auf entsprechenden H Summierungsdatenelementen umfasst.
  14. Verfahren nach Anspruch 13, wobei das Verwenden der mehreren Akkumulatoren zum Erzeugen der mehreren Teilsummen Verwenden eines ersten Akkumulators zum Erzeugen einer ersten Teilsumme basierend auf einer zweiten Teilsumme, die durch einen zweiten Akkumulator erzeugt wird, umfasst.
  15. Verfahren nach einem der vorangehenden Ansprüche 12 bis 14, wobei das Verwenden des Akkumulators zum Erzeugen der Teilsumme Addieren eines ersten Summierungsdatenelements zu einem zweiten Summierungsdatenelement, das in einem Datenregister gespeichert und durch einen Verschieber verschoben ist, umfasst und das Addieren des ersten Summierungsdatenelements zu dem zweiten Summierungsdatenelement mit der Auswahlschaltung synchronisiert ist, die die Sätze von k-ten Bits sequenziell ausgibt.
  16. Verfahren nach einem der vorangehenden Ansprüche 12 bis 15, wobei das Verwenden der Auswahlschaltung zum sequenziellen Ausgeben der Sätze von k-ten Bits der H Bits jedes Eingangsdatenelements der mehreren Eingangsdatenelemente Ausgeben der Sätze von k-ten Bits von einem niedrigstwertigen Bit (LSB) bis zu einem höchstwertigen Bit (MSB) umfasst.
  17. Verfahren nach einem der vorangehenden Ansprüche 10 bis 16, weiter umfassend: Speichern des ersten Gewichtsdatenelements in jeder Speicherzelle der Spalte von Speicherzellen basierend auf einem ersten Leistungsversorgungsspannungspegel, wobei jedes von dem Verwenden jeder Speicherzelle der Spalte von Speicherzellen zum Multiplizieren des k-ten Bits mit dem ersten Gewichtsdatenelement und dem Verwenden des Addiererbaums zum Erzeugen des Summierungsdatenelements auf einem zweiten Leistungsversorgungsspannungspegel unter dem ersten Leistungsversorgungsspannungspegel basiert.
  18. Speicherschaltung, umfassend: eine Auswahlschaltung, die konfiguriert ist, für mehrere Eingangsdatenelemente, die jeweils H Bits enthalten, ausgewählte Sätze von k-ten Bits an entsprechende Speicherzellen jeder Spalte von Speicherzellen von mehreren Spalten von Speicherzellen sequenziell auszugeben; mehrere Addiererbäume, wobei jeder Addiererbaum der mehreren Addiererbäume an eine entsprechende Spalte von Speicherzellen der mehreren Spalten von Speicherzellen gekoppelt ist; und mehrere Akkumulatoren, wobei jeder Akkumulator der mehreren Akkumulatoren an einen entsprechenden Addiererbaum der mehreren Addiererbäume gekoppelt ist, wobei jede Speicherzelle jeder Spalte von Speicherzellen einen Multiplizierer aufweist, der konfiguriert ist, ein Produktdatenelement basierend auf dem entsprechenden k-ten Bit des ausgewählten Satzes von k-ten Bits und einem Gewichtsdatenelement, das in der Speicherzelle gespeichert ist, zu erzeugen, jeder Addiererbaum der mehreren Addiererbäume konfiguriert ist, für jeden sequenziell ausgegebenen Satz von k-ten Bits, ein Summierungsdatenelement basierend auf jedem der Produktdatenelemente der entsprechenden Spalte von Speicherzellen zu erzeugen, und jeder Akkumulator der mehreren Akkumulatoren konfiguriert ist, eine Teilsumme basierend auf den Summierungsdatenelementen zu erzeugen, die durch den entsprechenden Addiererbaum der mehreren Addiererbäume erzeugt werden.
  19. Speicherschaltung nach Anspruch 18, wobei jeder Addiererbaum der mehreren Addiererbäume aufweist: einen ersten Addierer, der konfiguriert ist, ein erstes und zweites Summendatenelement zu empfangen und die Summierungsdatenelemente mit einer ersten Anzahl von Bits auszugeben; und einen zweiten und dritten Addierer, die konfiguriert sind, das erste und zweite Summendatenelement basierend auf den Produktdatenelementen der entsprechenden Spalte von Speicherzellen auszugeben, wobei jedes des ersten und zweiten Summendatenelements eine zweite Anzahl von Bits um eins niedriger als die erste Anzahl von Bits enthält.
  20. Speicherschaltung nach Anspruch 18 oder 19, wobei mindestens ein Addiererbaum der mehreren Addiererbäume an die entsprechende Spalte von Speicherzellen der mehreren Spalten von Speicherzellen durch einen Multiplexer gekoppelt ist.
DE102021107093.7A 2020-07-14 2021-03-23 Speicherinterne rechenschaltung und verfahren Pending DE102021107093A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063051497P 2020-07-14 2020-07-14
US63/051,497 2020-07-14
US17/203,130 US20220019407A1 (en) 2020-07-14 2021-03-16 In-memory computation circuit and method
US17/203,130 2021-03-16

Publications (1)

Publication Number Publication Date
DE102021107093A1 true DE102021107093A1 (de) 2022-01-20

Family

ID=76920518

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021107093.7A Pending DE102021107093A1 (de) 2020-07-14 2021-03-23 Speicherinterne rechenschaltung und verfahren

Country Status (7)

Country Link
US (1) US20220019407A1 (de)
EP (1) EP3940527A1 (de)
JP (1) JP2022018112A (de)
KR (1) KR102555621B1 (de)
CN (1) CN113571109A (de)
DE (1) DE102021107093A1 (de)
TW (1) TWI771014B (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022117853A (ja) * 2021-02-01 2022-08-12 パナソニックIpマネジメント株式会社 診断回路、電子デバイス及び診断方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2139564C1 (ru) * 1995-08-31 1999-10-10 Интел Корпорейшн Устройство для выполнения операций умножения-сложения с упакованными данными
TW200520225A (en) * 2003-10-24 2005-06-16 Matsushita Electric Ind Co Ltd Pixel arranging apparatus, solid-state image sensing apparatus, and camera
KR102408858B1 (ko) * 2017-12-19 2022-06-14 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 동작 방법
US10678507B2 (en) * 2017-12-22 2020-06-09 Alibaba Group Holding Limited Programmable multiply-add array hardware
US10515689B2 (en) * 2018-03-20 2019-12-24 Taiwan Semiconductor Manufacturing Company, Ltd. Memory circuit configuration and method
CN110673824B (zh) * 2018-07-03 2022-08-19 赛灵思公司 矩阵向量乘电路以及循环神经网络硬件加速器
US10664746B2 (en) * 2018-07-17 2020-05-26 Macronix International Co., Ltd. Neural network system
US10831446B2 (en) * 2018-09-28 2020-11-10 Intel Corporation Digital bit-serial multi-multiply-and-accumulate compute in memory
KR102664213B1 (ko) * 2018-10-08 2024-05-08 삼성전자주식회사 인-메모리 프리페칭을 수행하는 메모리 장치 및 이를 포함하는 시스템
US20200183837A1 (en) * 2018-12-07 2020-06-11 Samsung Electronics Co., Ltd. Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning
US11119674B2 (en) * 2019-02-19 2021-09-14 Macronix International Co., Ltd. Memory devices and methods for operating the same

Also Published As

Publication number Publication date
CN113571109A (zh) 2021-10-29
US20220019407A1 (en) 2022-01-20
EP3940527A1 (de) 2022-01-19
JP2022018112A (ja) 2022-01-26
TW202203053A (zh) 2022-01-16
KR20220008743A (ko) 2022-01-21
KR102555621B1 (ko) 2023-07-13
TWI771014B (zh) 2022-07-11

Similar Documents

Publication Publication Date Title
DE202018101330U1 (de) Transportieren von Matrizen neuronaler Netze in Hardware
DE102014012138B4 (de) Verbesserter Decoder für Paritätsprüfcodes mit niedriger Dichte
DE112019000437B4 (de) Architektur einer resistiven verarbeitungseinheit mit voneinander getrennter gewichtungsaktualisierungs- und inferenzschaltung
DE112019003529T5 (de) Datendarstellung für dynamische Genauigkeit in Kernen neuronaler Netze
DE2324731A1 (de) Festzustandsspeicher fuer mehrdimensionalen zugriff
DE4016113A1 (de) Probabilistisches schlussfolgerungssystem
DE102021120080A1 (de) Compute-in-memory
US11663383B2 (en) Method and system for hierarchical circuit simulation using parallel processing
DE102022100920A1 (de) Compute-in-memory-akkumulator
DE112017008040T5 (de) Rechenoperationsschaltung, rechenoperationsverfahren und programm
DE102021101727A1 (de) Sram-basierte zelle für in-memory-computing und hybride rechen-/speicherarchitektur
US20220319596A1 (en) Compute-in-memory array and module, and data computing method
DE102021107093A1 (de) Speicherinterne rechenschaltung und verfahren
DE102022100200A1 (de) Compute-In-Memory-Speicherarray, CIM-Speicherarray
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
WO1992009040A1 (de) Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung
DE102020205623A1 (de) Speichervorrichtung mit neuronaler netzwerk-verarbeitungsschaltung
DE60307050T2 (de) Schaltung und verfahren für logische operationen
Diamantini et al. Chiral dynamics and fermion mass generation in three-dimensional gauge theory
DE102022110841A1 (de) Datensequenzierungsschaltung und verfahren
DE1774606B1 (de) Speicheranordnung zur durchfuehrung logischer und arithmetischer grundoperationen
DE102021117736A1 (de) Reihenweises tracking von referenzerzeugung für speichervorrichtungen
DE102019119744A1 (de) Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur
DE102023110187A1 (de) Schaltung und verfahren zur datenberechnung
DE102020211815A1 (de) Speichereinheit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0007000000

Ipc: G06F0007480000

R083 Amendment of/additions to inventor(s)