DE112017004966T5 - Erweiterte anwendung eines fehlerprüfungs- und korrekturcodes in einem speicher - Google Patents

Erweiterte anwendung eines fehlerprüfungs- und korrekturcodes in einem speicher Download PDF

Info

Publication number
DE112017004966T5
DE112017004966T5 DE112017004966.0T DE112017004966T DE112017004966T5 DE 112017004966 T5 DE112017004966 T5 DE 112017004966T5 DE 112017004966 T DE112017004966 T DE 112017004966T DE 112017004966 T5 DE112017004966 T5 DE 112017004966T5
Authority
DE
Germany
Prior art keywords
memory
data
port
subarray
ecc
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
DE112017004966.0T
Other languages
English (en)
Inventor
Pete Vogt
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112017004966T5 publication Critical patent/DE112017004966T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4097Bit-line organisation, e.g. bit-line layout, folded bit lines

Abstract

Eine Fehlerprüfung und Korrektur (Error Checking and Correction, ECC) kann erweitert werden, um die Korrektur von Speichersubarrayfehlern mittels eines ECC-Codes zu ermöglichen. Eine Speichervorrichtung weist mehrere Eingabe/Ausgabe(Input/Output, I/O)-Anschlüsse zur Verbindung mit einer externen Vorrichtung, wie beispielsweise einer Steuerung, auf. Die Speichervorrichtung weist mehrere Arrays oder Subarrays auf, die speziell auf I/O-Anschlüsse abgebildet und nicht beliebig verzweigt sind. Somit lassen sich die Datenpfade der Speichersubarrays ausschließlich zu einem speziellen I/O-Anschluss verzweigen. Der I/O-Anschluss lässt sich eindeutig einem einzelnen Speichersubarray zuordnen, oder mehrere Speichersubarrays lassen sich auf einen speziellen Anschluss abbilden. Die Abbildung erfolgt gemäß einer Codematrix, wobei ein Code der ECC-Codematrix, der dem speziellen I/O-Anschluss entspricht, dazu dient, Datenkorruptionsfehler und I/O-Fehler für den einen oder die mehreren zugeordneten Speicherarrays zu überprüfen und zu korrigieren.

Description

  • PRIORITÄTSANSPRUCH
  • Diese Patentanmeldung beansprucht die Priorität unter 35 U.S.C. § 365(c) gegenüber der US-Patentanmeldung Nr. 15/282 793 , die am 30. September 2016 mit dem Titel „EXTENDED APPLICATION OF ERROR CHECKING AND CORRECTION CODE IN MEMORY“ eingereicht wurde und hiermit durch Bezugnahme in ihrer Gesamtheit aufgenommen wird.
  • GEBIET
  • Die Beschreibungen beziehen sich im Allgemeinen auf den Speicher in Computersystemen, und spezieller beziehen sich Beschreibungen auf eine Fehlerprüfung und - korrektur in einem Speicher.
  • URHEBERRECHTSVERMERK/GENEHMIGUNG
  • Teile der Offenbarung dieser Patentschrift können Material enthalten, das dem Urheberrechtsschutz unterliegt. Der Inhaber des Urheberrechts hat keinen Einwand gegen die Vervielfältigung der Patentschrift oder die Offenlegung des Patents, wie sie in der Patentschrift oder den Aufzeichnungen des Patent- und Markenamtes erscheint, behält sich aber ansonsten sämtliche Urheberrechte vor. Der Urheberrechtsvermerk gilt für sämtliche Daten, wie sie im Folgenden und in den beigefügten Zeichnungen beschrieben sind, sowie für sämtliche im Folgenden beschriebene Software: Copyright © 2016, Intel Corporation, Alle Rechte vorbehalten.
  • HINTERGRUND
  • Da Speichervorrichtungen weiterhin auf kleinere Verarbeitungsgeometrien und höhere Dichten skaliert werden, steigt die Fehlerquote tendenziell an. Es gibt mehrere Mechanismen, um die Fehlerprüfung und -korrektur (Error Checking and Correction, ECC) von in Speichervorrichtungen gespeicherten Daten durchzuführen und die Zuverlässigkeit, Zugänglichkeit und Wartungsfreundlichkeit (Reliability, Accessibility, and Serviceability, RAS) von Speichervorrichtungen höherer Dichte zu verbessern. Eine Technik beinhaltet das Strippen von Daten über mehrere Speichervorrichtungen, das dem „Striping“ von Daten von Speichervorrichtungen in Implementationen eines RAID (Redundant Array of Independent Drives) ähnelt. Die Techniken ermöglichen die Wiederherstellung von Daten sogar bei Ausfall einer gesamten Speichervorrichtung. Die Wiederherstellung von Daten für den Fall, dass eine gesamte Speichervorrichtung ausfällt, kann durch Chipkill von IBM (International Business Machines), Extended ECC von Sun Microsystems, DDDC (Double Device Data Correction) von Intel Corporation und anderen implementiert werden. Alle Marken sind Eigentum ihrer jeweiligen Inhaber. Funktionen, die die Wiederherstellung nach einem vollständigen Ausfall eines Speichermediums ermöglichen, werden häufig in Servergeräten implementiert, bei denen die erhöhten Kosten solcher Implementierungen als Rechtfertigung für das verbesserte RAS angesehen werden, das diese Funktionen bietet.
  • Es versteht sich, dass die Implementierung solcher Funktionen typischerweise zusätzliche Hardware erfordert. Insbesondere beinhalten robustere ECC-Implementierungen mehr Speichervorrichtungen, um die Redundanz der Informationen zu erreichen, die zur Bereitstellung des ECC verwendet werden. Für einen gegebenen Datenzugriff kann das System die Daten auf eine große Anzahl von Vorrichtungen verteilen und dann einen ECC-Code implementieren, der einen vollständigen Ausfall eines der Vorrichtungen korrigieren kann. Es ist üblich, 18 oder 36 separate dynamische RAM(Dynamic Random Access Memory)-Vorrichtungen zu verwenden, um robuste ECC-Implementierungen zu erreichen. Die große Anzahl von Vorrichtungen, die herkömmlich für die Wiederherstellung nach einem vollständigen Ausfall einer Vorrichtung benötigt werden, ist jedoch in einigen Zusammenhängen möglicherweise nicht sinnvoll.
  • Figurenliste
  • Die folgende Beschreibung beinhaltet die Erläuterung von Figuren mit Darstellungen als Beispiel für die Umsetzung von Ausführungsformen der Erfindung. Die Zeichnungen sind als Beispiel und nicht als Einschränkung zu verstehen. In dem hier verwendeten Sinne sind Bezüge auf eine oder mehrere „Ausführungsformen“ so zu verstehen, dass sie ein bestimmtes Merkmal, eine bestimmte Struktur und/oder ein bestimmtes Merkmal beschreiben, das in mindestens einer Implementierung der Erfindung enthalten ist. So beschreiben Sätze wie „in einer Ausführungsform“ oder „in einer alternativen Ausführungsform“, die hierin erscheinen, verschiedene Ausführungsformen und Implementierungen der Erfindung und beziehen sich nicht unbedingt sämtliche auf dieselbe Ausführungsform. Sie schließen sich aber auch nicht unbedingt gegenseitig aus.
    • 1 zeigt ein Blockdiagramm einer Ausführungsform eines Systems, in dem eine Speichervorrichtung Datenpfade aufweist, die Speicherarrays auf spezielle (Eingabe/Ausgabe-) Anschlüsse abbilden, um ECC-Codes sowohl auf interne Datenfehler als auch auf I/O-Fehler für den Datenpfad für diese Daten anzuwenden.
    • 2 zeigt ein Blockdiagramm einer Ausführungsform eines Ein-Chip-Systems mit In-Package Memory, das Abbildungen eines speziellen Speicherarrays auf eine I/O aufweist, um die Verwendung von ECC-Codes sowohl für Datenfehler als auch für I/O-Fehler zu ermöglichen.
    • 3 zeigt ein Blockdiagramm einer Ausführungsform von Speicherelementen einer Speichervorrichtung, die auf spezielle I/O-Anschlüsse abgebildet sind.
    • 4 zeigt ein Blockdiagramm einer Ausführungsform einer Abbildung von Subarrays auf I/O-Pins mit einer I/O-Verzweigung, die sicherstellt, dass Daten aus einem Subarray ausschließlich auf einen speziellen I/O-Pin abgebildet werden.
    • 5A zeigt ein Blockdiagramm einer Ausführungsform einer I/O-Verzweigung zum Abbilden mehrerer Datenbits eines Subarrays auf einen einzelnen I/O-Anschluss.
    • 5B zeigt ein Blockdiagramm einer Ausführungsform der I/O-Verzweigung zum Abbilden mehrerer Datenbits mehrerer Subarrays auf einen einzigen I/O-Anschluss abzubilden.
    • 6 zeigt ein Blockdiagramm einer Ausführungsform einer Speichervorrichtung mit einer I/O-Verzweigung, damit ECC-Codes sowohl Datenfehler als auch I/O-Fehler abdecken können.
    • 7 zeigt ein Blockdiagramm einer Ausführungsform eine Datenpfadabbildung, um ECC-Codes zur Überprüfung und Korrektur von I/O-Fehlern anwenden zu können.
    • 8 zeigt ein Flussdiagramm einer Ausführungsform eines Verfahrens zur Herstellung einer Speichervorrichtung mit Datenpfaden, die auf spezielle I/Os abgebildet werden.
    • 9 zeigt ein Flussdiagramm einer Ausführungsform eines Verfahrens für einen Datenzugriff auf eine Speichervorrichtung mit Datenpfaden, die auf spezielle I/Os abgebildet werden.
    • 10 zeigt ein Blockdiagramm einer Ausführungsform eines Computersystems, in dem eine Speichervorrichtung mit einer Abbildung von Arrays auf eine I/O zur Anwendung von ECC implementiert werden kann.
    • 11 zeigt ein Blockdiagramm einer Ausführungsform einer mobilen Vorrichtung, in der eine Speichervorrichtung mit einer Abbildung von Arrays auf eine I/O zur Anwendung von ECC implementiert werden kann.
  • Es folgen Beschreibungen bestimmter Details und Implementierungen, einschließlich einer Beschreibung der Figuren, die einige oder sämtliche der nachfolgend beschriebenen Ausführungsformen darstellen können, sowie die Erörterung anderer möglicher Ausführungsformen oder Implementierungen der hierin vorgestellten erfinderischen Konzepte.
  • DETAILLIERTE BESCHREIBUNG
  • Wie hierin beschrieben, kann eine ECC (Error Checking and Correction) erweitert werden, um einem ECC-Code zu ermöglichen, Speichersubarrayfehler zu korrigieren. Ein physikalisches Verzweigen der Datenpfade kann gemäß einer Abbildung eines ECC-Codes auf die Datenbits, die durch den ECC-Code abzudecken sind, abgebildet werden. Somit deckt der ECC-Code Datenkorruptionsfehler für Daten, die in einem Speichersubarray gespeichert sind, sowie I/O(Input/Output)-Pfadfehler ab. Eine Speichervorrichtung beinhaltet Eingabe/Ausgabe(Input/Output, I/O)-Anschlüsse zur Verbindung mit einer externen Vorrichtung, wie beispielsweise einer Steuerung. Die Speichervorrichtung beinhaltet mehrere Arrays oder Subarrays, die speziell I/O-Anschlüssen zugeordnet und nicht beliebig verzweigt werden. Die Abbildung erfolgt gemäß einer Fehlerprüfungs- und Korrektur(Error Checking and Correcting, ECC)-Codematrix, wobei ein Code der ECC-Codematrix, der dem speziellen I/O-Anschluss entspricht, dazu dient, Datenkorruptionsfehler und I/O-Fehler für den einen oder die mehreren zugeordneten Speichersubarrays zu überprüfen und zu korrigieren. Somit können die Datenpfade der Speichersubarrays ausschließlich zu einem speziellen I/O-Anschluss verzweigt werden. Der I/O-Anschluss kann mit einem einzelnen Speichersubarray eindeutig verknüpft werden, oder mehrere Speichersubarrays können auf einen speziellen I/O-Anschluss abgebildet werden.
  • Die Anwendung der ECC erfolgt basierend auf den Daten, die an den I/O-Anschlüssen angezeigt werden. So bedeutet die Abbildung der speziellen Speicherressourcen auf die speziellen I/O-Pins, dass die Anwendung der ECC auf die Daten indirekt für die speziellen Speicherressourcen gilt, von denen die Daten stammen. Die ECC gilt für die Speicherressourcen, da die Speicherressourcen auf spezielle I/O-Anschlüsse abgebildet werden. Daher ähnelt die Anwendung der ECC der Anwendung der ECC auf Systeme mit Redundanz auf der Grundlage der Speichervorrichtungen, die eine Wiederherstellung nach einem Ausfall einer gesamten Vorrichtung ermöglicht. Ähnliche Techniken können zur Wiederherstellung bei einem fehlerhaften Subarray einer Speichervorrichtung angewendet werden, was einen internen Fehler der Vorrichtung oder einen Fehler im Zusammenhang mit der physikalischen Verbindung einschließen kann. In einer Ausführungsform kann die spezielle Abbildung gewährleisten, dass derselbe I/O-Anschluss sämtliche Datenbits aus einem Subarray der Speichervorrichtung „sieht“, wenn sämtliche Bits aus einem Subarray auf denselben I/O-Anschluss abgebildet sind, ein ECC-Code kann sämtliche Bits aus der Subarray korrigieren, selbst wenn der gesamte Subarray fehlerhaft ist. Beispielsweise sei ein Zugriff von 288 Bit aus einem Speicherarray betrachtet, wobei auf 16 Bits aus jedem Subarray zugegriffen wird, der auf einen von 18 I/O-Anschlüssen abgebildet ist (18*16=288). Wenn sämtliche 16 Bits auf einen einzelnen I/O-Anschluss abgebildet sind, kann der dem I/O-Anschluss zugeordnete ECC-Code den Ausfall sämtlicher 16 Bits aus dem Subarray korrigieren.
  • 1 zeigt ein Blockdiagramm einer Ausführungsform eines Systems, in dem eine Speichervorrichtung Datenpfade enthält, die Speicherarrays auf bestimmte (Eingabe/Ausgabe-)Anschlüsse abbilden, um ECC-Codes sowohl auf interne Datenfehler als auch auf I/O-Fehler für den Datenpfad für diese Daten anzuwenden. Das System 100 enthält einen Prozessor und Elemente eines Speichersubsystems in einer Computervorrichtung. Der Prozessor 110 stellt eine Verarbeitungseinheit einer Computerplattform dar, die ein Betriebssystem (Operating System, OS) und Anwendungen ausführen kann, die zusammenfassend als Host oder Benutzer des Speichers bezeichnet werden können. Das Betriebssystem und die Anwendungen führen Operationen aus, die zu Speicherzugriffen führen. Der Prozessor 110 kann einen oder mehrere getrennte Prozessoren beinhalten. Jeder einzelne Prozessor kann eine einzelne Verarbeitungseinheit, eine Mehrkernverarbeitungseinheit oder eine Kombination davon beinhalten. Die Verarbeitungseinheit kann ein Primärprozessor wie eine CPU (Central Processing Unit), ein Peripherieprozessor wie eine GPU (Graphic Processing Unit) oder eine Kombination davon sein. Speicherzugriffe können auch von Vorrichtungen wie einer Netzwerk- oder Festplattensteuerung eingeleitet werden. Solche Vorrichtungen können in einigen Systemen mit dem Prozessor integriert oder über einen Bus (z.B. PCI-Express) mit dem Prozessor verbunden sein, oder eine Kombination davon sein. Das System 100 kann als SoC (System-on-a-Chip) oder mit eigenständigen Komponenten implementiert sein.
  • In einer Ausführungsform stellt das System 100 Komponenten eines SoC mit In-Package-Speichervorrichtungen 140 dar. In einer solchen Implementierung werden die Komponenten des Systems 100 auf einem Substrat integriert und in einem gemeinsamen Halbleitergehäuse verpackt.
  • Der Bezug auf Speichervorrichtungen kann auf verschiedene Speichertypen angewendet werden. Speichervorrichtungen betreffen oft flüchtige Speichertechnologien. Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darauf gespeicherten Daten) bei einer Unterbrechung der Stromversorgung der Vorrichtung unbestimmt ist (bzw. sind). Ein nichtflüchtiger Speicher bezeichnet einen Speicher, dessen Zustand auch dann festgelegt ist, wenn die Stromversorgung der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher erfordert eine Aktualisierung der in der Vorrichtung gespeicherten Daten, um den Zustand aufrechtzuerhalten. Ein Beispiel für einen dynamischen flüchtigen Speicher ist ein DRAM (Dynamic Random Access Memory) oder eine Variante wie beispielsweise ein synchrones DRAM (SDRAM). Ein Speichersubsystem, wie es hierin beschrieben ist, kann mit einer Reihe von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (doppelte Datenrate Version 3, Originalversion durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007, derzeit in Version 21), DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 von JEDEC), DDR4E (DDR-Version 4, erweitert, derzeit in Diskussion von JEDEC), LPDDR3 (Low Power DDR-Version 3, JESD209-3B, August 2013 von JEDEC), LPDDR4 (LOW POWER DOUBLE DATA RATE (LPDDR) Version 4, JESD209-4, ursprünglich veröffentlicht von JEDEC im August 2014), WIO2 (Wide I/O 2 (WideIO2), JESD229-2, ursprünglich veröffentlicht von JEDEC im August 2014), HBM (HIGH BANDWIDTH MEMORY DRAM, JESD235, ursprünglich veröffentlicht von JEDEC im Oktober 2013), DDR5 (DDR-Version 5, die derzeit von JEDEC diskutiert wird), LPDDR5 (derzeit von JEDEC diskutiert), HBM2 (HBM-Version 2), derzeit von JEDEC diskutiert) oder andere oder Kombinationen von Speichertechnologien und Technologien, die auf Derivaten oder Erweiterungen solcher Spezifikationen basieren.
  • Zusätzlich zu oder alternativ zu einem flüchtigen Speicher in einer Ausführungsform kann der Bezug auf Speichervorrichtungen eine nichtflüchtige Speichervorrichtung betreffen, deren Zustand auch dann festgelegt ist, wenn die Stromversorgung der Vorrichtung unterbrochen wird. In einer Ausführungsform basiert die nichtflüchtige Speichervorrichtung auf einer blockadressierbaren Speichervorrichtung, wie beispielsweise auf NAND- oder NOR-Technologien. So kann eine Speichervorrichtung auch eine nichtflüchtige Vorrichtung einer zukünftigen Generation beinhalten, wie beispielsweise eine dreidimensionale Kreuzpunktspeichervorrichtung, andere byteadressierbare nichtflüchtige Speichervorrichtungen oder Speichervorrichtungen, die Chalkogenid-Phasenänderungsmaterial verwenden (z.B. Chalkogenid-Glas). In einer Ausführungsform kann die Speichervorrichtung ein mehrstufiger NAND-Flash-Speicher, ein NOR-Flash-Speicher, ein ein- oder mehrstufiger Phasenwechselspeicher (Phase Change Memory, PCM) oder ein Phasenwechselspeicher mit einem Schalter (PCMS), ein resistiver Speicher, ein Nanodrahtspeicher, ein ferroelektrischer Transistor-Random-Access-Speicher (FeTRAMM), ein magnetoresistiver Random-Access-Speicher (MRAM), der die Memristor-Technologie integriert, oder ein Spin-Transfer-Drehmoment(Spin Transfer Torque, STT)-MRAM oder eine Kombination aus einem der oben genannten oder einem anderen Speicher sein oder beinhalten.
  • Die hierin enthaltenen Beschreibungen, die sich auf ein „RAM“ oder „RAM-Laufwerk“ beziehen, können für jedes Speichermedium gelten, das einen zufälligen Zugriff ermöglicht, unabhängig davon, ob es sich um einen flüchtigen oder nichtflüchtigen Zugriff handelt. Beschreibungen, die sich auf ein „DRAM“ oder eine „DRAM-Vorrichtung“ beziehen, können sich auf eine flüchtige Direktzugriffsspeichervorrichtung beziehen. Die Speichervorrichtung oder der DRAM kann sich auf das Halbleiterplättchen selbst, auf ein verpacktes Speicherprodukt, das eine oder mehrere Halbleiterplättchen enthält, oder auf beides beziehen. In einer Ausführungsform kann ein System mit einem flüchtigen Speicher, der aktualisiert werden muss, auch einen nichtflüchtigen Speicher enthalten.
  • Die Speichersteuerung 120 stellt eine oder mehrere Speichersteuerschaltungen oder - Vorrichtungen für das System 100 dar. Die Speichersteuerung 120 stellt eine Steuerlogik dar, die Speicherzugriffsbefehle als Reaktion auf die Ausführung von Operationen durch den Prozessor 110 erzeugt. Die Speichersteuerung 120 greift auf eine oder mehrere Speichervorrichtungen 140 zu. Speichervorrichtungen 140 können DRAM-Vorrichtungen gemäß einer beliebigen oben genannten sein. In einer Ausführungsform sind die Speichervorrichtungen 140 als verschiedene Kanäle organisiert und verwaltet, wobei jeder Kanal mit Bussen und Signalleitungen verbunden ist, die parallel mit mehreren Speichervorrichtungen verbunden sind. Jeder Kanal lässt sich unabhängig betreiben. Somit erfolgt der Zugriff auf jeden Kanal und dessen Steuerung unabhängig, und die Zeitplanung, die Datenübertragung, der Befehls- und Adressaustausch und andere Operationen sind für jeden Kanal getrennt. In dem hier verwendeten Sinne kann sich die Verbindung/Kopplung auf eine elektrische Verbindung, eine kommunikative Verbindung, eine physikalische Verbindung oder eine Kombination davon beziehen. Die physikalische Verbindung kann einen direkten Kontakt beinhalten. Die elektrische Verbindung beinhaltet eine Schnittstelle oder Verbindung, die einen elektrischen Fluss zwischen den Komponenten ermöglicht, oder die Signalisierung zwischen den Komponenten oder beides. Die kommunikative Verbindung umfasst Verbindungen, einschließlich drahtgebundener oder drahtloser Verbindungen, die es Komponenten ermöglichen, Daten auszutauschen.
  • In einer Ausführungsform werden die Einstellungen für jeden Kanal durch separate Modusregister oder andere Registereinstellungen gesteuert. In einer Ausführungsform verwaltet jede Speichersteuerung 120 einen separaten Speicherkanal, wobei das System 100 konfiguriert werden kann, um mehrere Kanäle von einer einzigen Steuerung verwalten zu lassen oder um mehrere Steuerungen auf einem einzigen Kanal zu haben. In einer Ausführungsform ist die Speichersteuerung 120 Teil des Host-Prozessors 110, wie beispielsweise eine Logik, die auf demselben Halbleiterplättchen implementiert ist oder in derselben Packung wie der Prozessor implementiert ist.
  • Die Speichersteuerung 120 enthält eine Schnittstellenlogik 122 zur Verbindung mit einem Speicherbus, wie beispielsweise einen Speicherkanal, wie vorstehend beschrieben, die Schnittstellenlogik 122 (sowie die Schnittstellenlogik 142 der Speichervorrichtung 140) kann Pins, Pads, Stecker/Anschlüsse, Signalleitungen, Leiterbahnen oder Drähte oder andere Hardware zum Verbinden der Vorrichtungen oder eine Kombination davon beinhalten. Die Schnittstellenlogik 122 kann eine Hardware-Schnittstelle beinhalten. Wie dargestellt, enthält die Schnittstellenlogik 122 mindestens Treiber/Transceiver für Signalleitungen. Im Allgemeinen sind Drähte innerhalb einer integrierten Schnittstellenschaltung mit einem Pad, Pin oder Anschluss verbunden, um Signalleitungen oder Leiterbahnen oder andere Drähte zwischen Vorrichtungen zu verbinden. Die Schnittstellenlogik 122 kann Treiber-, Empfänger-, Sende-Empfänger- oder Terminierungs- oder sonstige Schaltungen oder Kombinationen von Schaltungen zum Austausch von Signalen auf den Signalleitungen zwischen den Vorrichtungen beinhalten. Der Austausch von Signalen beinhaltet mindestens eines von Senden oder Empfangen. Während es als ein Verbinden der I/O 122 von der Speichersteuerung 120 mit der I/O 142 der Speichervorrichtung 140 dargestellt ist, ist klar, dass bei einer Implementierung des Systems 100, bei der auf Gruppen von Speichervorrichtungen 140 parallel zugegriffen wird, mehrere Speichervorrichtungen I/O-Schnittstellen zur selben Schnittstelle der Speichersteuerung 120 beinhalten können. In einer Implementierung des Systems 100, das ein oder mehrere Speichermodule 170 enthält, kann die I/O 142 neben der Schnittstellenhardware auf der Speichervorrichtung selbst auch die Schnittstellenhardware des Speichermoduls beinhalten. Andere Speichersteuerungen 120 beinhalten separate Schnittstellen zu anderen Speichervorrichtungen 140.
  • Der Bus zwischen der Speichersteuerung 120 und den Speichervorrichtungen 140 kann in Form mehrerer Signalleitungen realisiert werden, die die Speichersteuerung 120 mit den Speichervorrichtungen 140 verbinden. Der Bus kann typischerweise mindestens Taktgeber(Clock, CLK)- 132, Befehls/Adressen- (Command/Address, CMD)- 134 und Schreibdaten (DQ)- und Lese-DQ- 136 und Null- oder sonstige Signalleitungen 138 aufweisen. In einer Ausführungsform kann ein Bus oder eine Verbindung zwischen der Speichersteuerung 120 und dem Speicher als Speicherbus bezeichnet sein. Die Signalleitungen für CMD können als „C/A-Bus“ (oder ADD/CMD-Bus, oder eine andere Bezeichnung, die die Übertragung von Befehlen (C oder CMD) und Adressinformationen (A oder ADD) anzeigt), und die Signalleitungen für das Schreiben und Lesen von DQ können als „Datenbus“ bezeichnet werden. In einer Ausführungsform haben unabhängige Kanäle unterschiedliche Taktsignale, C/A-Busse, Datenbusse und andere Signalleitungen. Somit kann das System 100 in dem Sinne, dass ein unabhängiger Schnittstellenpfad als separater Bus betrachtet werden kann, als mehrere „Busse“ enthaltend angesehen werden. Es versteht sich, dass ein Bus zusätzlich zu den explizit dargestellten Leitungen mindestens eines von Strobesignalleitungen, Alarmleitungen, Hilfsleitungen oder anderen Signalleitungen oder eine Kombination davon aufweisen kann. Selbstverständlich können für die Verbindung zwischen der Speichersteuerung 120 und den Speichervorrichtungen 140 serielle Bustechnologien verwendet werden. Ein Beispiel für eine serielle Bustechnologie ist die 8B10B-Codierung und Übertragung von Hochgeschwindigkeitsdaten mit eingebettetem Takt über ein einziges differentielles Signalpaar in jede Richtung.
  • Es wird einleuchten, dass in dem Beispiel des Systems 100 der Bus zwischen der Speichersteuerung 120 und den Speichervorrichtungen 140 einen untergeordneten Befehlsbus CMD 134 und einen untergeordneten Bus zur Übertragung der Schreib- und Lesedaten DQ 136 beinhaltet. In einer Ausführungsform kann der Datenbus bidirektionale Leitungen für Lesedaten und für Schreib-/Befehlsdaten aufweisen. In einer weiteren Ausführungsform kann der untergeordnete Bus DQ 136 unidirektionale Schreibsignalleitungen zum Schreiben und Daten von dem Host zu dem Speicher und unidirektionale Leitungen für das Lesen von Daten von dem Speicher zu dem Host beinhalten. In Entsprechung zu der gewählten Speichertechnologie und dem Systemdesign können weitere Signale 138 einen Bus oder Subbus begleiten, wie beispielsweise Strobeleitungen DQS. Basierend auf dem Entwurf des Systems 100 oder einer Implementierung, bei der ein Entwurf mehrere Implementierungen unterstützt, kann der Datenbus mehr oder weniger Bandbreite pro Speichervorrichtung 140 aufweisen. So kann beispielsweise der Datenbus Speichervorrichtungen unterstützen, die entweder eine x32-Schnittstelle, eine x16-Schnittstelle, eine x8-Schnittstelle oder eine andere Schnittstelle aufweisen. Die Konvention „xW“, wobei W eine ganze Zahl ist, die sich auf eine Schnittstellengröße oder -breite der Schnittstelle der Speichervorrichtung 140 bezieht, die eine Anzahl von Signalleitungen zum Datenaustausch mit der Speichersteuerung 120 darstellt. Die Schnittstellengröße der Speichervorrichtungen ist ein Steuerungsfaktor dafür, wie viele Speichervorrichtungen pro Kanal in dem System 100 gleichzeitig verwendet oder parallel mit denselben Signalleitungen verbunden werden können. In einer Ausführungsform können Speichervorrichtungen mit hoher Bandbreite, Breitbandschnittstellenvorrichtungen oder Stapelspeicherkonfigurationen oder -kombinationen breitere Schnittstellen ermöglichen, wie beispielsweise eine x128-Schnittstelle, eine x256-Schnittstelle, eine x512-Schnittstelle, eine x1024-Schnittstelle oder eine andere Datenbusschnittstellenbreite.
  • Speichervorrichtungen 140 stellen Speicherressourcen für das System 100 dar. In einer Ausführungsform ist jede Speichervorrichtung 140 ein separates Speicherhalbleiterplättchen. In einer Ausführungsform kann jede Speichervorrichtung 140 mit mehreren (z.B. 2) Kanälen pro Vorrichtung oder Halbleiterplättchen verbunden werden. Jede Speichervorrichtung 140 enthält eine Schnittstellenlogik 142, die eine durch die Implementierung der Vorrichtung bestimmte Bandbreite aufweist (z.B. x16 oder x8 oder eine andere Schnittstellenbandbreite). Die I/O-Schnittstellenlogik 142 ermöglicht es den Speichervorrichtungen, mit der Speichersteuerung 120 zu kommunizieren. Die I/O-Schnittstellenlogik 142 kann eine Hardwareschnittstelle beinhalten und kann der I/O 122 der Speichersteuerung entsprechen, jedoch auf der Seite der Speichervorrichtung sein. In einer Ausführungsform sind mehrere Speichervorrichtungen 140 parallel an dieselben Befehls- und Datenbusse angeschlossen. In einer weiteren Ausführungsform sind mehrere Speichervorrichtungen 140 parallel an denselben Befehlsbus und an verschiedene Datenbusse angeschlossen. So kann beispielsweise das System 100 mit mehreren parallel verbundenen Speichervorrichtungen 140 konfiguriert werden, wobei jede Speichervorrichtung auf einen Befehl reagiert und auf die jeweils internen Speicherressourcen 160 zugreift. Für einen Schreibvorgang kann eine einzelne Speichervorrichtung 140 einen Teil des gesamten Datenwortes schreiben, und für einen Lesevorgang kann eine einzelne Speichervorrichtung 140 einen Teil des gesamten Datenwortes abrufen. Als nicht einschränkende Beispiele kann eine spezielle Speichervorrichtung 8 Bit eines 128-Bit-Datenworts für eine Lese- oder Schreibtransaktion oder 8 Bit oder 16 Bit (abhängig von einer x8- oder x16-Vorrichtung) eines 256-Bit-Datenworts liefern oder empfangen. Die restlichen Bits des Wortes werden parallel von anderen Speichervorrichtungen geliefert oder empfangen.
  • In einer Ausführungsform sind die Speichervorrichtungen 140 direkt auf einer Hauptplatine oder Host-Systemplattform (z.B. einer Leiterplatte (Printed Circuit Board PCB), auf der der Prozessor 110 angeordnet ist) einer Computervorrichtung angeordnet. In einer Ausführungsform können die Speichervorrichtungen 140 in Speichermodule 170 organisiert werden. In einer Ausführungsform stellen die Speichermodule 170 Doppel-Inline-Speichermodule (Dual Inline Memory Modules, DIMMs) dar. In einer Ausführungsform stellen die Speichermodule 170 eine andere Organisation von mehreren Speichervorrichtungen dar, um mindestens einen Teil der Zugriffs- oder Steuerschaltung gemeinsam zu nutzen, die eine separate Schaltung, eine separate Vorrichtung oder eine separate Platine von der Host-Systemplattform sein kann. Die Speichermodule 170 können mehrere Speichervorrichtungen 140 enthalten, und die Speichermodule können eine Unterstützung für mehrere separate Kanäle für die enthaltenen Speichervorrichtungen einschließen, die sich auf ihnen befinden. In einer weiteren Ausführungsform können Speichervorrichtungen 140, beispielsweise durch Techniken wie Multi-Chip-Modul (MCM), Package-on-Package, Through-Silizium-VIA (TSV) oder andere Techniken oder Kombinationen, in dasselbe Gehäuse wie die Speichersteuerung 120 integriert werden. Ebenso können in einer Ausführungsform mehrere Speichervorrichtungen 140 in Speichermodule 170 integriert werden, die ihrerseits in dasselbe Gehäuse wie die Speichersteuerung 120 integriert werden können. Es ist zu beachten, dass für diese und andere Ausführungsformen die Speichersteuerung 120 Teil des Host-Prozessors 110 sein kann.
  • Die Speichervorrichtungen 140 beinhalten jeweils die Speicherressourcen 160. Die Speicherressourcen 160 stellen einzelne Arrays von Speicherplätzen oder Speicherplätze für Daten dar. Typischerweise werden die Speicherressourcen 160 als Datenzeilen verwaltet, auf die über die Wortleitung (Zeilen) und die Bitleitung (einzelne Bits innerhalb einer Zeile) zugegriffen wird. Die Speicherressourcen 160 können als separate Kanäle, Ränge und Speicherbänke organisiert werden. Kanäle können sich auf unabhängige Steuerpfade zu Speicherplätzen innerhalb der Speichervorrichtungen 140 beziehen, und sämtliche Speicherressourcen 160 einer einzelnen Speichervorrichtung 140 können Teil eines einzelnen Kanals sein, oder Speicherressourcen 160 können Teil eines einzelnen Kanals (mit separater I/O 142 für die verschiedenen Kanäle) sein. Ränge können sich über mehrere Speichervorrichtungen hinweg (z.B. gleiche Zeilenadressen innerhalb verschiedener Vorrichtungen) auf gemeinsame Positionen beziehen. Typischerweise gehört eine einzelne Speichervorrichtung zu einem einzigen Rang, und ein Speichersystem kann mehrere Ränge mit jeweils mehreren Speichervorrichtungen beinhalten. Banken können sich auf Arrays von Speicherplätzen innerhalb einer Speichervorrichtung 140 beziehen. In einer Ausführungsform werden Speicherbänke in Subbanken mit mindestens einem Teil der gemeinsamen Schaltung (z.B. Treiber, Signalleitungen, Steuerlogik) für die Subbanken unterteilt. Es wird davon ausgegangen, dass sich Kanäle, Ränge, Banken, Subbanken, Bankengruppen oder andere Organisationen der Speicherorte und Kombinationen der Organisationen in ihrer Anwendung auf physikalische Ressourcen überschneiden können. So kann beispielsweise über einen speziellen Kanal auf dieselben physischen Speicherplätze wie eine spezielle Bank zugegriffen werden, die auch zu einem Rang gehören kann. So ist die Organisation von Speicherressourcen nicht exklusiv, sondern inklusiv zu verstehen.
  • In einer Ausführungsform beinhalten die Speichervorrichtungen 140 ein oder mehrere Register 144. Das Register 144 stellt eine oder mehrere Speichervorrichtungen oder Speicherplätze dar, die eine Konfiguration oder Einstellungen für den Betrieb der Speichervorrichtung vorsehen. In einer Ausführungsform kann das Register 144 einen Speicherort für die Speichervorrichtung 140 vorsehen, um Daten für den Zugriff durch die Speichersteuerung 120 als Teil eines Steuerungs- oder Verwaltungsvorgangs zu speichern. In einer Ausführungsform beinhaltet das Register 144 ein oder mehrere Modusregister. In einer Ausführungsform beinhaltet das Register 144 ein oder mehrere Mehrzweckregister. Die Konfiguration von Positionen in dem Register 144 kann die Speichervorrichtung 140 so konfigurieren, dass sie in einem anderen „Modus“ arbeitet, in dem Befehlsinformationen je nach Modus unterschiedliche Operationen in der Speichervorrichtung 140 auslösen können. Zusätzlich oder alternativ können verschiedene Modi anhand von Adressdaten oder anderen Signalleitungen in Abhängigkeit von dem Modus einen anderen Betrieb auslösen. Die Einstellungen des Register 144 können eine Konfiguration für I/O-Einstellungen (z.B. Taktung, Terminierung oder ODT (On-Die-Terminierung) 146, Treiberkonfiguration oder andere Einstellungen) anzeigen.
  • In einer Ausführungsform beinhaltet die Speichervorrichtung 140 ODT 146 als einen Teil der mit der I/O 142 verbundenen Schnittstellenhardware. Die ODT 146 kann wie oben beschrieben konfiguriert werden und sieht Einstellungen für die Impedanz vor, die für die Schnittstelle an spezifizierte Signalleitungen angelegt wird. In einer Ausführungsform wird die ODT 146 auf DQ-Signalleitungen angewendet. In einer Ausführungsform wird die ODT 146 auf Befehlssignalleitungen angewendet. In einer Ausführungsform wird die ODT 146 zur Adressierung von Signalleitungen verwendet. In einer Ausführungsform kann die ODT 146 auf jede beliebige Kombination des Vorhergehenden angewendet werden. Die ODT-Einstellungen können je nachdem, ob es sich bei einer Speichervorrichtung um ein ausgewähltes Ziel einer Zugriffsoperation oder um eine Nichtzielvorrichtung handelt, geändert werden. Die ODT 146-Einstellungen können die Taktung und die Reflexionen der Signalisierung auf den terminierten Leitungen beeinflussen. Eine sorgfältige Steuerung der ODT 146 kann einen rascheren Betrieb mit verbesserter Anpassung einer angelegten Impedanz und Belastung ermöglichen. Die ODT 146 kann auf spezielle Signalleitungen der I/O-Schnittstelle 142, 122 angewendet werden und ist nicht unbedingt auf sämtliche Signalleitungen anwendbar.
  • Die Speichervorrichtung 140 enthält die Steuerung 150, die die Steuerlogik innerhalb der Speichervorrichtung darstellt, um interne Operationen innerhalb der Speichervorrichtung zu steuern. So decodiert beispielsweise die Steuerung 150 die von der Speichersteuerung 120 gesendeten Befehle und erzeugt interne Operationen zur Ausführung oder Erfüllung der Befehle. Die Steuerung 150 kann als interne Steuerung bezeichnet werden und ist von der Speichersteuerung 120 des Hosts getrennt. Die Steuerung 150 kann bestimmen, welcher Modus basierend auf dem Register 144 ausgewählt wird, und die interne Ausführung von Operationen für den Zugriff auf Speicherressourcen 160 oder andere Operationen basierend auf dem ausgewählten Modus konfigurieren. Die Steuerung 150 erzeugt Steuersignale, um ein Verzweigen von Bits innerhalb der Speichervorrichtung 140 zu steuern, um eine geeignete Schnittstelle für den ausgewählten Modus vorzusehen und einen Befehl an die richtigen Speicherplätze oder Adressen zu leiten.
  • Unter erneuter Bezugnahme auf die Speichersteuerung 120 beinhaltet die Speichersteuerung 120 den Planer 130, der eine Logik oder eine Schaltung zum Erzeugen und Ordnen von Transaktionen zum Senden an die Speichervorrichtung 140 darstellt. Aus einer Perspektive könnte die primäre Funktion der Speichersteuerung 120 als Planung für einen Speicherzugriff und sonstige Transaktionen an der Speichervorrichtung 140 erachtet werden. Eine solche Planung kann das Erzeugen der Transaktionen selbst beinhalten, um die Datenanforderungen durch den Prozessor 110 zu implementieren und die Integrität der Daten (z.B. mit Befehlen zur Aktualisierung) aufrechtzuerhalten. Transaktionen können einen oder mehrere Befehle beinhalten und zur Übertragung von Befehlen oder Daten oder beidem über einen oder mehrere Zeitzyklen wie Taktzyklen oder Einheitsintervalle führen. Transaktionen können für den Zugriff dienen, wie Lese- oder Schreib- oder zugeordneten Befehlen oder einer Kombination davon, und andere Transaktionen können Speicherverwaltungsbefehle für eine Konfiguration, Einstellungen, Datenintegrität oder für andere Befehle oder eine Kombination davon beinhalten.
  • Die Speichersteuerung 120 enthält typischerweise eine Logik, die die Auswahl und Reihenfolge der Transaktionen ermöglicht, um die Leistung des Systems 100 zu verbessern. Somit kann die Speichersteuerung 120 auswählen, welche der ausstehenden Transaktionen in welcher Reihenfolge an die Speichervorrichtung 140 zu senden sind, was typischerweise mit einer viel komplexeren Logik erreicht wird als ein einfacher First-in-First-out-Algorithmus. Die Speichersteuerung 120 verwaltet die Übertragung der Transaktionen an die Speichervorrichtung 140 und die mit der Transaktion verbundene Taktung. In einer Ausführungsform weisen Transaktionen eine deterministische Taktung auf, die von der Speichersteuerung 120 verwaltet werden kann und zur Bestimmung der Planung der Transaktionen verwendet wird.
  • Unter erneuter Bezugnahme auf die Speichersteuerung 120 beinhaltet die Speichersteuerung 120 die Befehls(CMD)-Logik 124, die eine Logik oder Schaltung zum Erzeugen von Befehlen zum Senden an die Speichervorrichtungen 140 darstellt. Die Generierung der Befehle kann sich auf den Befehl vor der Planung oder die Vorbereitung von Warteschlangenbefehlen beziehen, die zum Senden bereit sind. Im Allgemeinen beinhaltet die Signalisierung in Speichersubsystemen Adressinformationen innerhalb oder in Begleitung des Befehls, um einen oder mehrere Speicherplätze anzuzeigen oder auszuwählen, an denen die Speichervorrichtungen den Befehl ausführen sollen. Als Reaktion auf die Planung von Transaktionen für die Speichervorrichtung 140 kann die Speichersteuerung 120 Befehle über die I/O 122 ausgeben, um die Speichervorrichtung 140 zur Ausführung der Befehle zu veranlassen. In einer Ausführungsform empfängt und decodiert die Steuerung 150 der Speichervorrichtung 140 Befehls- und Adressinformationen, die über die I/O 142 von der Speichersteuerung 120 empfangen werden. Basierend auf den empfangenen Befehls- und Adressinformationen kann die Steuerung 150 den Zeitpunkt der Operationen der Logik und der Schaltung innerhalb der Speichervorrichtung 140 steuern, um die Befehle auszuführen. Die Steuerung 150 ist verantwortlich für die Einhaltung von Normen oder Spezifikationen innerhalb der Speichervorrichtung 140, wie z.B. Taktungs- und Signalisierungsanforderungen. Die Speichersteuerung 120 kann die Einhaltung von Normen oder Spezifikationen durch eine Zugriffsplanung und -steuerung realisieren.
  • In einer Ausführungsform beinhalten die Speichervorrichtungen 140 In-Package-DRAM-Halbleiterplättchen oder einen Speicher, der auf einem gemeinsamen Substrat mit dem Prozessor 110 und der Speichersteuerung 120 angebracht ist, die sich ein Halbleitergehäuse teilen. In einer solchen Konfiguration können die Speichervorrichtungen 140 als On-Chip-Cache-Ressourcen für ein 2LM (zweistufiger Speicher) oder ein anderes mehrstufiges Speichersystem arbeiten. Die Speichervorrichtungen 140 können HBM-Speichervorrichtungen beinhalten, die einen oder mehrere Stapel von Speichervorrichtungen auf dem mit dem Prozessor 110 geteilten Substrat beinhalten können. In einer Ausführungsform ist die Speichersteuerung 120 auf dem Prozessorhalbleiterplättchen integriert, und mehrere Speicherhalbleiterplättchen sind auf dem Substrat angebracht und sind mit den I/O-Anschlüssen des Prozessorhalbleiterplättchens verbunden und sind somit mit der Speichersteuervorrichtung oder - schaltung verbunden.
  • Die I/O 142 kann den I/O-Anschluss der Speichervorrichtung 140 darstellen, um mit dem Prozessor 110 und der Speichersteuerung 120 zu kommunizieren. In einer Ausführungsform enthalten die Speicherressourcen 160 der Speichervorrichtungen 140 in Subarrays unterteilte Bänke. Die Subarrays können alternativ auch einfach als Arrays bezeichnet sein. Die Subarrays beziehen sich auf Abschnitte des Speichers, z.B. eine Gruppe von Zeilen von Speicherzellen. Die Datenpfade 148 stellen die Verzweigung von Drähten und Verbindungsvorrichtungen dar, um Datensignale zwischen den Subarrays und der I/O 142 zu übertragen. Anstatt willkürlich ausgelegt oder nach dem kürzesten physikalischen Weg oder einem anderen Layout ausgelegt zu sein, sind die Datenpfade 148 auf spezielle I/O-Anschlüsse abgebildet, um zusätzliche Fehlerkorrekturinformationen vorzusehen. Im Allgemeinen sieht das spezielle Verzweigen vor, dass die Datenpfade 148 sämtliche Datensignale von einem Subarray auf einen einzelnen I/O-Anschluss (z.B. eine Signalleitung des DQ 136) abbilden, um die Anwendung von ECC-Codes zur Abdeckung der Subarrays und der Daten zu ermöglichen.
  • In einer Ausführungsform beinhaltet die I/O 142 für jede einzelne Speichervorrichtung 140 eine Datenschnittstelle mit einer Anzahl von Signalleitungen, die mit einer ECC-Implementierung vergleichbar sind, wie beispielsweise eine x18-, eine x36-Schnittstelle, eine x72-Schnittstelle oder dergleichen. So kann beispielsweise DQ 136 eine Anzahl von 18, 36 oder 72 oder eine andere Anzahl von Signalleitungen beinhalten. Solche Schnittstellen ahmen die für die ECC verwendeten Bitschemata nach. Beispielsweise verwenden ECC-Implementierungen häufig 18 oder 36 DRAM-Vorrichtungen auf einem Speichermodul. Somit können dieselben ECC-Techniken, die auf Systemebene auf der Grundlage der Anzahl der DRAM-Vorrichtungen verwendet werden, auf der Ebene der Subarrays angewendet werden, indem ähnliche Bitzahlen und Datenpfade 148 verwendet bzw. abgebildet werden, um sicherzustellen, dass ECC-Codes einer ECC-Codematrix, die zur Korrektur interner Fehler dienen, auch Fehler für dieselben Bits korrigieren können. Es versteht sich, dass DQ 136 Schreibdaten (für einen Schreibvorgang oder eine Schreibtransaktion) von der I/O 142 zu den Subarrays und Lesedaten (für einen Lesevorgang oder eine Lesetransaktion) von den Subarrays zu der I/O 142 verzweigt.
  • 2 zeigt ein Blockdiagramm einer Ausführungsform eines Systems auf einem Chip mit integriertem Speicher, der Abbildungen eines speziellen Speicherarrays auf eine I/O aufweist, um die Verwendung von ECC-Codes sowohl für Datenfehler als auch für I/O-Fehler zu ermöglichen. Ein System 200 bietet ein Beispiel für einen SoC und ein Beispiel für eine Implementierung des Systems 100. Eine Packung 202 stellt die SoC-Packung dar und beinhaltet ein Substrat, auf dem die Prozessorhalbleiterplättchen 210 und die Speicherhalbleiterplättchen 230 angebracht sind. Es gibt keine bestimmte Anzahl von Speicherhalbleiterplättchen 230, die in der Packung 202 enthalten sind. Durch die Verwendung der Datenpfadverzweigung kann die Anzahl der Speicherhalbleiterplättchen 230 jedoch geringer sein als die Anzahl, die herkömmlich für den Schutz vor Ausfällen einzelner Vorrichtungen verwendet wird (z.B. 18 oder 36 oder andere), während gleichzeitig ein gleichwertiges Schutzniveau gewährleistet werden kann.
  • Das Prozessorhalbleiterplättchen 210 beinhaltet einen oder mehrere Kerne 212, die die Logikschaltungen darstellen, um die Ausführung von Operationen im Prozessor durchzuführen. In einer Ausführungsform beinhaltet das Prozessorhalbleiterplättchen 210 die Steuerung 222, die eine Speichersteuerung zum Zugriff auf die Speicherhalbleiterplättchen 230 darstellen kann. Aus terminologischer Sicht ist klar, dass eine Speichersteuerung herkömmlich mit dem Hauptsystemspeicher zusammenarbeitet und sich auf die flüchtigen Speicherressourcen bezieht, die Betriebsdaten und Code speichern. Herkömmlich sind diese Ressourcen außerhalb des Chips und außerhalb der Packung von dem Prozessor angeordnet. In Zusammenhang mit dem System 200 kann die Steuerung 222 aus der Perspektive des Zugriffs auf flüchtige Speicherhalbleiterplättchen 230 als Speichersteuerung bezeichnet werden. Die Steuerung 222 könnte alternativ auch als Cache-Controller bezeichnet werden, um auf die On-Chip- oder On-Package-Speicherressourcen zuzugreifen. In einem solchen Fall kann auch eine zusätzliche Steuerung integriert sein, um auf Speicherressourcen außerhalb der Packung 202 zuzugreifen.
  • Das Prozessorhalbleiterplättchen 210 beinhaltet eine I/O 224, die I/O-Hardware darstellt, um auf der Packung 202 mit den Speicherhalbleiterplättchen 230 verbunden zu werden. Eine I/O 224 kann über die Verbindung 204 mit der I/O 232 des Speicherhalbleiterplättchens 230 verbunden sein, das mehrere Signalleitungen und mehrere Busse darstellt. Die Verbindung 204 beinhaltet mindestens einen Datenbus. Innerhalb jedes Speicherhalbleiterplättchens 230 werden die Speicherarrays zu speziellen Anschlüsse einer I/O 232 verzweigt. Die ECC-Maschine 226 des Prozessorhalbleiterplättchens 210 stellt eine Logik dar, um die ECC an den Daten durchzuführen, die mit den Speicherhalbleiterplättchen 230 (z.B. durch Lesen oder Schreiben) ausgetauscht werden. Die ECC-Maschine 226 enthält eine ECC-Logik, wie beispielsweise bekannte ECC-Algorithmen, um ECC-Berechnungen durchzuführen, um Fehler in Daten zu überprüfen und gegebenenfalls zu korrigieren. Als solche tauschen die Steuerung 222 und die Speicherhalbleiterplättchen 230 Daten und Prüfbits aus. Im Falle von Schreiben berechnet die ECC-Maschine 226 die ECC-Prüfbits und sendet die Bits mit den Schreibdaten. Im Falle von Lesen rufen oder holen die Speicherhalbleiterplättchen 230 Daten und gespeicherte Prüfbits ab und senden sie an die Steuerung 222. Die Steuerung 222 kann dann basierend auf den Prüfbits die ECC für die empfangenen Daten berechnen. In einer Ausführungsform beinhalten die Speicherhalbleiterplättchen 230 auch eine interne ECC. So kann das System 200 eine interne ECC an einzelnen Speichervorrichtungen aufweisen, sowie eine systemweite ECC, die von der Steuerung 222 oder dem Prozessor ausgeführt wird, der Berechnungen an Daten durchführen kann, die von mehreren Speicherhalbleiterplättchen 230 empfangen werden, um ECC-Berechnungen durchzuführen.
  • In einer Ausführungsform kann das System 200 ein Client- oder ein Serverprodukt mit DRAM-Vorrichtungen in der Packung mit einer CPU vorsehen. In einer Ausführungsform bieten die Speicherhalbleiterplättchen 230 einen Hochleistungsberechnungs(High Performance Computing, HPC)-Hauptspeicher. In einer Ausführungsform sehen die Speicherhalbleiterplättchen 230 einen Grafikspeicher vor. In einer Ausführungsform sehen die Speicherhalbleiterplättchen 230 einen Speicher der ersten Stufe eines Multi-Level-Speicher-(MLM)-Systems vor. In einer Ausführungsform sehen die Speicherhalbleiterplättchen 230 einen Speicher für eine Kontrollpunktbildung vor. In einer Ausführungsform sehen die Speicherhalbleiterplättchen 230 eine Kombination aus diesen vor. Auf diese Weise lässt sich eine verbesserte Fehlerabdeckung für einen oder sämtliche dieser Kontexte erreichen.
  • Gemäß der vorliegenden Beschreibung beinhalten die Speicherhalbleiterplättchen 230 Schaltungsabbildungen, die Bits konsistent zwischen bestimmten Bereichen des Speichers auf dieselben I/O-Pins oder -anschlüsse übertragen. Das System 200 wendet die Kenntnis über eine ECC-Codierungsimplementierung auf das Layout der Datenpfadschaltung an und weist gegenüber dem, was herkömmlich vorgesehen werden kann, eine zusätzliche Korrekturstufe auf. Somit können In-Package-Speichervorrichtungen in einer Ausführungsform eine Teilmenge des Speicherarrays und der Datenpfade auf einen gemeinsamen I/O-Pin abbilden. Ein solcher Ansatz steht im Gegensatz zu herkömmlichen Abbildungen, bei denen die Daten eines einzelnen Subarrays im Ergebnis auf mehrere I/O-Pins verteilt sein können.
  • 3 zeigt ein Blockdiagramm einer Ausführungsform von Speicherelementen einer Speichervorrichtung, die auf spezielle I/O-Anschlüsse abgebildet sind. Der Speicher 300 veranschaulicht Komponenten einer Speichervorrichtung mit einer speziellen Abbildung einer I/O auf Teile des Speicherarrays gemäß einer hierin beschriebenen Ausführungsform. So kann beispielsweise der Speicher 300 eine Ausführungsform des Speicherhalbleiterplättchens 230 des Systems 200 oder der Speichervorrichtung 140 des Systems 100 darstellen.
  • Der Speicher 300 weist eine Bank 310 auf, die mehrere Zeilen von Speicherzellen 302 beinhaltet. Die vertikalen Rechtecke des Diagramms stellen die Zeilen dar. In einer Ausführungsform ist die Bank 310 als mehrere Subarrays 312 organisiert. Ein Subarray 312 oder ein Array kann sich auf eine Gruppe von Zeilen 302 beziehen. Ein Zugriffsbefehl (entweder ein Lese- oder ein Schreibbefehl) löst Befehlssignalzeilen aus, die von der Zeilendecodierungslogik 320 interpretiert werden, um eine oder mehrere Zeilen für den Vorgang auszuwählen. In einer Ausführungsform beinhaltet die Zeilendecodierungslogik 320 einen Subarray oder eine Arraydecodierungslogik 322, um einen speziellen Subarray 312 der Bank 310 auszuwählen. Der Speicher 300 beinhaltet eine Spaltendecodierungslogik 330 zum Auswählen einer Datenspalte, in der Signalleitungen von speziellen Subarrays an Leseverstärker ausgegeben und mit einer lokalen I/O 340 an eine globale I/O 350 verzweigt werden können. Die lokale I/O 340 bezieht sich auf die Verzweigungsschaltung zum Übertragen von Daten spezieller Subarrays 312. Die globale I/O 350 bezieht sich auf die Verzweigungsschaltung, die die lokale I/O mit den externen I/O-Anschlüssen des Speichers 300 verbindet. In einer Ausführungsform beinhaltet die lokale I/O 340 eine Logik, um spezielle Signalleitungen von den Subarrays 312 auf spezielle I/O-Pfade oder Datenpfade abzubilden, die mit bestimmten globalen I/O-Anschlüssen verbunden sind.
  • In dem Speicher 300 sind die Datenpfade von den Subarrays 312 zu der lokalen I/O 340 oder der globalen I/O 350 oder beiden organisiert, um die Anzahl der Fehler zu maximieren, die ein ECC-Code erkennen und korrigieren kann. Unter der Annahme, dass mechanische Pinausfälle ein häufiger Fehlermechanismus für den In-Package-Speicher sind, wird davon ausgegangen, dass die Abbildung der Datenpfade von Subarrays auf externe I/O-Anschlüsse gemäß einer Anwendung von ECC-Codes für die Daten eine Korrektur des I/O-Ausfalls durch den ECC-Code ermöglichen kann. Weiter ist klar, dass einige Ausfälle in der Speichervorrichtung auf eine Teilmenge des gesamten Speicherarrays beschränkt sind. Wenn die Teilmengen der Speicherarrays und die Datenpfade zu und von diesen Teilmengen auf einen einzelnen I/O-Anschluss abgebildet werden, kann der ECC-Code auch Fehler dieser Speicher-Teilmengen und Datenpfade korrigieren. Der Datenpfad bezieht sich auf die Drähte, Leiterbahnen, Logikgatter und andere Schaltungen für eine Übertragung von Daten zwischen den Subarrays und der I/O.
  • 4 zeigt ein Blockdiagramm einer Ausführungsform einer Abbildung von Subarrays auf I/O-Pins mit einer I/O-Verzweigung, die sicherstellt, dass Daten aus einem Subarray ausschließlich auf einen speziellen I/O-Pin abgebildet werden. Der Speicher 400 stellt ein Beispiel für eine Speichervorrichtung gemäß dem Speicher 300 in 3 dar. Wie dargestellt, weist der Speicher 400 M Subarrays 410[0:(M-I)] auf. In einer Ausführungsform ist die Anzahl der Subarrays ein Vielfaches der Anzahl der Signalleitungen des Datenbusses. So kann beispielsweise ein x18-Speicherhalbleiterplättchen 18, 36, 54 oder eine andere Anzahl von Subarrays 410 aufweisen.
  • Die Leitungen 412 stellen Verbindungen von den Subarrays zur einer I/O-Verzweigungslogik 420 dar. Die I/O-Verzweigungslogik 420 kann Multiplexer, Treiber, Puffer oder andere Komponenten oder eine Kombination davon beinhalten. Die Drähte 422 stellen die Verbindungen von der Verzweigungslogik 420 zu den I/O-Pins 430 dar. Die I/O-Pins 430 stellen die I/O-Anschlüsse des Speichers 400 dar, um Daten mit einer Steuerung auszutauschen. Die ECC wird von der Steuerung auf die Daten angewendet, wie sie auf den I/O-Pins 430 aufscheinen. In einer Ausführungsform beziehen sich die Datenpfade 440 auf den elektrischen Pfad für die Datensignalübertragung zwischen den Subarrays 410 und den I/O-Pins 430.
  • Es versteht sich, dass mindestens M Drähte 412 vorhanden seine werden, um Signale zwischen den Subarrays und der I/O-Verzweigungslogik 420 zu übertragen. Typischerweise werden für die Übertragung von Signalen zwischen der I/O-Verzweigungslogik 420 und den I/O-Pins 430 weniger Drähte 422 vorhanden sein. In einer Ausführungsform werden Daten über mehrere Übertragungszyklen (z.B. ein Bündel), wie z.B. Taktperioden oder UIs, übertragen. Somit können mehrere Signale zeitmultiplexiert auf den Leitungen 422 übertragen werden. Die Datenpfade 440 beinhalten ein spezielles Verzweigen, um sicherzustellen, dass ein Subarray 410 auf einen einzelnen I/O-Pin 430 abgebildet wird. Es kann mehrere Subarrays 410 geben, die auf denselben I/O-Pin abgebildet sind, jedoch kann ein bestimmtes Subarray 410 lediglich auf einen bestimmten Pin abgebildet werden. Wenn es mehrere Drähte 412 von einem Subarray 410 zu einer I/O-Verzweigungslogik 420 gibt, werden sämtliche Pins auf denselben I/O-Pin abgebildet und über die Zeit auf die Drähte 422 gemultiplext.
  • 5A zeigt ein Blockdiagramm einer Ausführungsform der I/O-Verzweigung, um mehrere Datenbits eines Subarrays auf einen einzelnen I/O-Anschluss abzubilden. Die Schaltung 502 veranschaulicht ein Beispiel für einen Datenpfad gemäß den Datenpfaden 440 in 4. Der Subarray 510 stellt eine Teilmenge von Zeilen einer Bank einer Speichervorrichtung dar. In einer Ausführungsform übertragen mehrere Datensignale 512 Daten zu und von dem Subarray 510. Der Datenpfad zwischen dem Subarray 510 und dem I/O-Pin 530 kann eine oder mehrere Signalleitungen zur Übertragung von Datensignalen 512, eine Signalauswahllogik 520 (z.B. eine Multiplexer-/Demultiplexerschaltung) und eine Signalleitung 522 aufweisen. In einer Ausführungsform übertragen mehrere Signalleitungen die Datensignale 512 zwischen dem Subarray 510 und der Signalauswahl 520. In einer Ausführungsform werden über die Zeit mehrere Datensignale gesendet und über die Signalauswahl 520 gepuffert. Es gibt typischerweise eine Signalleitung 522 zwischen der Signalauswahl 520 und dem I/O-Pin 530. Somit bildet der Datenpfad das Subarray 510 auf den speziellen I/O-Pin 530 ab.
  • 5B zeigt ein Blockdiagramm einer Ausführungsform einer I/O-Verzweigung, um mehrere Datenbits mehrerer Subarrays auf einen einzelnen I/O-Anschluss abzubilden. Die Schaltung 504 veranschaulicht ein Beispiel für einen Datenpfad gemäß den Datenpfaden 440 in 4. Die Schaltung 504 kann eine Alternative zur Schaltung 502 in 5A sein. Die Subarrays 540[0:(N-I)] stellen mehrere Teilmengen von Zeilen einer Bank einer Speichervorrichtung dar. In einer Ausführungsform übertragen mehrere Datensignale 542 Daten zu und von jedem Subarray 540, wobei sich „Subarray 540“ kollektiv auf die N Arrays bezieht. Der Datenpfad zwischen jedem Subarray 540 und dem I/O-Pin 560 kann eine oder mehrere Signalleitungen zur Übertragung von Datensignalen 542, eine Signalauswahllogik 550 (z.B. eine Multiplexer-/Demultiplexerschaltung) und eine Signalleitung 552 beinhalten. In einer Ausführungsform übertragen mehrere Signalleitungen die Datensignale 542 zwischen jedem Subarray 540 und der Signalauswahl 550. In einer Ausführungsform werden mehrere Datensignale über die Zeit gesendet und über die Signalauswahl 550 gepuffert. Es gibt typischerweise eine Signalleitung 552 zwischen der Signalauswahl 550 und dem I/O-Pin 560. Somit bildet der Datenpfad mehrere Subarrays 540 auf den speziellen I/O-Pin 560 ab.
  • Wie veranschaulicht, bildet ein Datenpfad in einer Ausführungsform einen Speichersubarray ausschließlich auf einen speziellen I/O-Anschluss ab. In einer Ausführungsform wird ein Anschluss auf einen einzelnen Speichersubarray abgebildet. In einer Ausführungsform werden mehrere Speichersubarrays auf einen gemeinsamen I/O-Anschluss abgebildet. Somit wird jedes Speichersubarray auf einen einzelnen I/O-Anschluss abgebildet, jedoch kann der I/O-Anschluss auf mehrere Speichersubarrays abgebildet werden. Daher kann der Datenpfad eine 1:1-Beziehung zwischen einem Speichersubarray und einem I/O-Anschluss oder eine M:1-Beziehung zwischen einem Speichersubarray und einem Anschluss vorsehen.
  • 6 zeigt ein Blockdiagramm einer Ausführungsform einer Speichervorrichtung mit einer I/O-Verzweigung, um es ECC-Codes zu ermöglichen, sowohl Datenfehler als auch I/O-Fehler abzudecken. Die Speichervorrichtung 600 stellt ein Beispiel einer Speichervorrichtung gemäß den Speichervorrichtungen 140 des Systems 100, dem Speicherhalbleiterplättchen 230 des Systems 200 oder der Speichervorrichtung 300 dar. In einer Ausführungsform ist die Speichervorrichtung 600 eine DRAM-Vorrichtung, die an einem Substrat angebracht ist, um als In-Package-Speicher mit einer CPU verbunden zu werden.
  • Die Steuerlogik 610 empfängt Takt- (CLK), Taktfreigabe- (CKE) und Befehlssignale (CMD) und steuert den Betrieb der Speichervorrichtung 600 in Abhängigkeit von diesen Signalen. Das Adressregister 620 empfängt Zeilenadressen- und Bankadressensignale, um den Teil des Speichers zu identifizieren, der von einem bestimmten Befehl zu beeinflussen ist. Die Adress-, Takt-, Taktfreigabe- und Steuersignale stellen Anschlüsse für einen Befehl und eine Adresse für die Speichervorrichtung 600 dar. In einer Ausführungsform verteilt das Adressregister 620 die Adressinformationen an den Zeilenadressmultiplexer 622, die Banksteuerlogik 624 und den Spaltenadresszähler 626. Der Zeilenadressmultiplexer 622 nimmt die Zeilenadressinformationen und einen Aktualisierungszähler (Refresh Counter, REF 628) als Eingabe an und steuert den Zeilenadress-Latch (Row Address Latch, RAL) und den Decoder (Zeilendecoder 632) für jede Bank der Speichervorrichtung. Die Banksteuerlogik 624 wählt aus, welche Bank für den empfangenen Speicherzugriff (z.B. basierend auf dem Befehl) ausgewählt wird. Der Spaltenadresszähler 626 erzeugt ein Signal, um die Spalte für den Betrieb auszuwählen.
  • Der Zeilendecoder 632 wählt eine Adresse in einer Bank aus, die eine Zeile des Speicherarrays 630 beinhalten kann. In einer Ausführungsform können die Speicherarrays 630 Subarrays sein oder enthalten. Signale von der Banksteuerlogik 624 und dem Spaltenadresszähler 626 können den Spaltendecoder (Column Decoder, col dec) 634 auslösen, um die entsprechenden Abtastverstärker (Sense Amplifiers, SA) 642 für den gewünschten Speicherarray 630 zu aktivieren. Der Spaltendecoder 634 kann eine Gatesteuerung 640 auslösen, die die Hardware einschließlich Signalleitungen oder Drähten sowie die Logik zum Weiterleiten von Daten zu und von den Speicherarrays 630 darstellt. Die I/O-Gatesteuerung 640 kann Daten in die Abtastverstärker 642 für einen Schreibvorgang ablegen und die Daten für einen Lesevorgang auslesen. Der Spaltendecoder 634 führt eine Spaltenauswahl für die I/O-Gatesteuerung 640 durch, die auf der Auswahl der Logik der Banksteuerung und der Auswahl der Spaltenadressenzähler und basiert.
  • In einer Ausführungsform ist ein Leselatch 650 angeschlossen, um Datenbits von der I/O-Gatesteuerung 640 für einen Lesevorgang zu empfangen. Der Leselatch 650 speist die Daten in den Multiplexer 652 ein, der die Anzahl der Bits entsprechend der Vorrichtungsdatenschnittstelle (die N DQ-Bits, die in der Speichervorrichtung 600 dargestellt sind) auswählen kann. Ein Multiplexer 652 kann die Daten an einen Treiber 654 senden, der die Daten an Anschlüssen DQ[0:(N-I)] steuert. Obwohl nicht speziell dargestellt, wird davon ausgegangen, dass der Treiber 654 basierend auf der Taktung eine oder mehrere Daten-Strobeleitungen ansteuern kann. Für einen Schreibvorgang liefert die Steuerung Daten über DQ[0:(N-I)]. In einer Ausführungsform empfängt der Empfänger 660 Schreibdaten von dem Datenbus und gibt sie in das Eingangsregister oder den Eingangspuffer 662 ein. In einer Ausführungsform empfängt der Empfänger 660 ein Datenmaskensignal (DM), das angeben kann, wann die Speichervorrichtung einen Lesevorgang durchführen soll. Das Eingangsregister 662 tastet die Daten gemäß einer Daten-Strobeleitung ab und kann die Daten verriegeln, um den Treiber 664 zu schreiben, der die Daten an die I/O-Gatesteuerung 640 liefert.
  • In einer Ausführungsform enthält die Speichervorrichtung 600 I/O-Pfade 670, um Daten zwischen der Gatesteuerung 640 und den Lese- und Schreibpfaden zu übertragen. So beinhaltet ein Datenpfad in einer Ausführungsform einen Lesepfad und einen Schreibpfad. Die I/O-Pfade 670 können speziell verzweigt sein, um ein oder mehrere Speicherarrays 630 speziellen Anschlüssen zuzuordnen, die sich auf DQ[0:(N-I)] beziehen. Die spezielle Abbildung ermöglicht die Erweiterung der ECC, um sowohl die Datenpfade als auch die Daten abzudecken.
  • 7 zeigt ein Blockdiagramm einer Ausführungsform von Datenpfadabbildungen, um ECC-Codes zur Überprüfung und Korrektur von Fehlern anwenden zu können. Das Diagramm 700 veranschaulicht eine Abbildung von Daten-I/O auf Speichersubarrays. Spezieller stellt die Matrix 710 eine ECC-Code-Matrix dar. Die Matrix 710 weist Y Spalten (C[0:(Y-I)]) von Codes auf, wobei jeder Code X Code-Bits oder Prüfbits (CB[0:(X-I)]) hat. In einer Ausführungsform entsprechen die Y Codes der Matrix 710 Datenbits 720, die D[0:(Y-I)] sind. Die Berechnung der Codes anhand des Codeworts (z.B. ausgewählte der Datenbits) kann die Überprüfung und Korrektur von Fehlern ermöglichen. Ein Syndrom von ungleich Null in einem der Codes (z.B. ein XOR der Codes der Matrix mit entsprechenden Berechnungen anhand der Datenbits und ECC-Bits) kann auf einen Fehler hinweisen.
  • In einer Ausführungsform werden die Datenbits 720 mittels einer auf die I/O-Pins abgebildet. Eine solche Abbildung kann auf einer standardisierten Ausgabe oder einer konfigurierten Implementierung für eine bestimmte Vorrichtung basieren, bei der bestimmte Pins als spezielle I/Os bezeichnet und interpretiert werden. Die kann die Datenbits 720 auf I/O-Pins 740 abbilden. Bei dem Abbilden der bestimmten Pins 740 besteht eine Korrelation zwischen den ECC-Codes der Matrix 710 und den I/O-Pins. Wie dargestellt, weist das System 700 Z Pins 740 (d. h. I/O[0:(Z-1)]) auf. In einem typischen System werden Daten über mehrere Zyklen gebündelt, so dass es eine Gesamtzahl von I/O-Pins in dem System gibt (wobei die Gesamtzahl die Pins auf sämtlichen Speichervorrichtungen beinhaltet), die typischerweise durch Z=Y/BL in Beziehung gesetzt ist, wobei BL die Bündellänge oder die Anzahl der in dem System gesendeten Datenzyklen ist. Für eine einzelne Speichervorrichtung wäre die Anzahl der I/O-Pins pro Vorrichtung typischerweise Z/(# Vorrichtungen) oder die Gesamtzahl der Pins geteilt durch die Anzahl der Vorrichtungen. Unabhängig von der speziellen Implementierung besteht eine Korrelation zwischen den Pins einer speziellen Speichervorrichtung und den Codes der Matrix 710. Eine solche Korrelation kann in vielen ECC-Kontexten implementiert werden.
  • Wie hierin beschrieben, beinhaltet das System 700 ein Abbilden 750 von I/O auf einen Subarray. Das Abbilden 750 stellt ein Abbilden für jede einzelne Speichervorrichtung dar, bei dem ihre durch die Subarrays 760 dargestellten Speicherarray-Ressourcen auf spezielle I/O-Pins 740 für die einzelne Speichervorrichtung abgebildet werden, die die einzigen Pins in dem System 700 oder ein Teil der gesamten I/O-Pins für Daten in dem System 700 sein können. Es sind M Subarrays 760 dargestellt, wobei M in Abhängigkeit von der Implementierung der Speichervorrichtung variieren kann. In einer Ausführungsform bezieht sich M beispielsweise auf die Anzahl der I/O-Pins für eine einzelne Speichervorrichtung, wobei M ein Vielfaches von Z/(# Vorrichtungen) sein könnte. Die ermöglicht ein Verzweigen von Subarrays 760 zu den I/O-Pins 740 gemäß den ECC-Mustern für System 700. In einer Ausführungsform ermöglicht die Abbildung von Subarrays auf I/O-Pins und ECC-Codes, dass ein Code der Matrix 710 einem speziellen I/O-Pin 740 entspricht, der Datenkorruptionsfehler und I/O-Fehler für den zugeordneten Subarray 760 überprüfen und korrigieren kann. Die ermöglicht das exklusive Abbilden eines Subarrays 760 auf einen einzelnen I/O-Pin. Die ermöglicht die Abbildung mehrerer Subarrays ausschließlich auf einen einzigen I/O-Pin.
  • 8 zeigt ein Flussdiagramm einer Ausführungsform eines Verfahrens zur Herstellung einer Speichervorrichtung mit Datenpfaden, die auf spezielle I/Os abgebildet werden. Der Fluss 800 stellt einen Fluss zur Herstellung einer Vorrichtung dar, deren Datenpfade auf spezielle I/Os für RAS abgebildet wird. Um die Speichervorrichtung herzustellen, bestimmt ein Hersteller eine Array/Subarray-Konfiguration, 802. Die Array-Konfiguration bezieht sich auf die Architektur der Speicherressourcen. So werden die Speicherzellen in Zeilen und Bänken organisiert, während die Bänke als Subarrays oder Subbanken organisiert werden.
  • In einer Ausführungsform verzweigt der Hersteller Datenpfade der Speicherarraystruktur zu speziellen I/Os für die Speichervorrichtung, um spezielle Speichersubarrays auf spezielle I/Os abzubilden, 804. Es versteht sich, dass ein Hersteller keinen speziellen ECC-Code identifizieren muss, der für eine ECC-Implementierung zu verwenden ist. Durch ein einfaches Abbilden der Subarrays auf spezielle I/Os kann die Anwendung der ECC auf die Subarrays ermöglicht werden, da sämtliche Daten aus den Subarrays auf einen speziellen I/O-Anschluss abgebildet werden, der wiederum auf einen speziellen ECC-Code in der Matrix abgebildet wird. Somit können die Signalleitungen und die Schaltungslogik, die ein Subarray mit einem I/O-Anschluss verbinden, sämtliche Daten zwischen dem Subarray und dem I/O-Anschluss verzweigen, um sicherzustellen, dass die ECC für den I/O-Anschluss auch für die Datenpfade gilt.
  • Der Hersteller fertigt die Vorrichtung gemäß den Verzweigungen, einschließlich der Erstellung einer Schaltung zum Verzweigen der Datensignale, 806. In einer Ausführungsform wird die Speichervorrichtung in einen SoC (System-on-Chip) mit einem Prozessor integriert, 810. Die Integration des Speicherhalbleiterplättchens auf einer SoC-Plattform kann von demselben Hersteller oder von einem anderen Hersteller durchgeführt werden. Typischerweise erfolgt heute die Integration in einen SoC durch ein anderes Unternehmen als dasjenige, das die Speicherhalbleiterplättchen herstellt.
  • 9 zeigt ein Flussdiagramm einer Ausführungsform eines Verfahrens für den Datenzugriff auf eine Speichervorrichtung mit Datenpfaden, die auf spezielle I/Os abgebildet sind. Das Verfahren 900 veranschaulicht eine Ausführungsform des Zugriffs auf Speichervorrichtungen, bei denen die I/Os auf spezielle I/O-Anschlüsse abgebildet sind. Der Prozessor eines Systems, das den Speicher enthält, führt Operationen aus, die zu Anfragen von den Speichervorrichtungen nach einem Datenzugriff führen, 902. In einer Ausführungsform erzeugt die Speichersteuerung, die den Zugriff auf die Speichervorrichtungen steuert, die Zugriffsbefehle zum Lesen oder Schreiben der Daten gemäß den von dem Prozessor ausgeführten Operationen,904.
  • Im Falle eines Schreibvorgangs, WRITE-Zweig 906, kann die Speichersteuerung die ECC für die in den Speicher zu schreibenden Daten berechnen, 908. Die Steuerung sendet anschließend den Schreibbefehl mit den Daten und den ECC-Bits, 910. In einer Ausführungsform beinhaltet das System einen Speicher als On-Package- oder On-Chip-Speicher. Somit kann die Steuerung das Datenwort an die On-Chip-Speicher-I/O weiterleiten, 912. In einer Ausführungsform empfangen die On-Chip-Speichervorrichtungen die Daten an der I/O und verzweigen die Daten intern zu Subarrays weiter, die auf spezielle I/O-Anschlüsse abgebildet werden, 914. Die I/O wird gemäß einer beliebigen hierin beschriebenen Ausführungsform abgebildet, wobei die I/O auf die interne Anordnung abgebildet wird, damit der ECC-Code für die Daten interne Datenbitfehler sowie den I/O-Datenpfad für die Subarrays aufgrund der speziellen Abbildung überprüfen kann. Die Speichervorrichtungen speichern die Daten in ihren internen Speicherarrays gemäß der Datenpfadabbildung, 916.
  • Im Falle eines Lesevorgangs, READ-Zweig 906, kann die Speichersteuerung den Lesebefehl an den Speicher senden, 918. Als Reaktion auf den Lesebefehl rufen die Speichervorrichtungen die Daten und die zugeordneten ECC-Bits für die Daten ab, 920. In einer Ausführungsform verzweigen die Speichervorrichtungen die Daten aus ihren internen Subarrays zu speziellen I/O-Anschlüsse weiter, 922. Die I/O wird gemäß einer beliebigen der hier beschriebenen Ausführungsformen abgebildet, wobei die I/O auf die interne Anordnung abgebildet wird, damit der ECC-Code für die Daten interne Datenbitfehler sowie den I/O-Datenpfad für die Subarrays aufgrund der speziellen Abbildung überprüfen kann. Die Speichervorrichtungen senden die Daten an die Steuerung, die die Daten und die ECC-Bits empfangen kann, 924. In einer Ausführungsform berechnet die Steuerung die ECC, um Fehler zu überprüfen und möglicherweise zu korrigieren, was sowohl für die Daten als auch für den I/O-Pfad gilt, 926.
  • 10 zeigt ein Blockdiagramm einer Ausführungsform eines Computersystems, in dem eine Speichervorrichtung mit einer Abbildung von Arrays auf eine I/O zur Anwendung der ECC implementiert werden kann. Das System 1000 stellt eine Computervorrichtung gemäß einer beliebigen der hier beschriebenen Ausführungsformen dar und kann ein Laptop-Computer, ein Desktop-Computer, ein Tablet-Computer, ein Server, ein Spiel- oder Unterhaltungssteuerungssystem, ein Scanner, Kopierer, Drucker, eine Verzweigungs- oder Switching-Vorrichtung, eine eingebettete Computervorrichtung, ein Smartphone, eine tragbare Vorrichtung, eine Vorrichtung des Internet-der-Dinge oder eine andere elektronische Vorrichtung sein.
  • Das System 1000 enthält den Prozessor 1010, der die Verarbeitung, das Betriebsmanagement und die Ausführung von Anweisungen für das System 1000 ermöglicht. Der Prozessor 1010 kann einen beliebigen Typ eines Mikroprozessors, einer Zentraleinheit (CPU), eines Grafikprozessors (GPU), eines Verarbeitungskern oder einer sonstigen Verarbeitungshardware, um die Verarbeitung für das System 1000 vorzusehen, oder eine Kombination von Prozessoren beinhalten. Der Prozessor 1010 steuert den gesamten Betrieb des Systems 1000 und kann ein oder mehrere programmierbare Universal- oder Spezialmikroprozessoren, digitale Signalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikbauelemente (PLDs) oder dergleichen, oder eine Kombination dieser Bauelemente sein oder enthalten.
  • In einer Ausführungsform beinhaltet das System 1000 die mit dem Prozessor 1010 verbundene Schnittstelle 1012, die eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten darstellen kann, die Verbindungen mit höherer Bandbreite benötigen, wie beispielsweise das Speichersubsystem 1020 oder die Grafikschnittstellenkomponenten 1040. Die Schnittstelle 1012 kann eine „Nordbrücke“ darstellen, die eine eigenständige Komponente sein kann oder in ein Prozessorhalbleiterplättchen integriert sein kann. Falls vorhanden, ist die Grafikschnittstelle 1040 mit Schnittstellen zu Grafikkomponenten verbunden, um einem Benutzer des Systems 1000 eine visuelle Anzeige zu ermöglichen. In einer Ausführungsform erzeugt die Grafikschnittstelle 1040 eine Anzeige, die auf in dem Speicher 1030 gespeicherten Daten oder auf von dem Prozessor 1010 ausgeführten Operationen, oder auf beidem basiert.
  • Das Speichersubsystem 1020 stellt den Hauptspeicher des Systems 1000 dar und sieht einen Speicher für Code, der von dem Prozessor 1010 auszuführen ist, oder für Datenwerte vor, die bei der Ausführung einer Routine verwendet werden. Das Speichersubsystem 1020 kann eine oder mehrere Speichervorrichtungen 1030 beinhalten, wie z.B. einen Nur-Lese-Speicher (ROM), einen Flash-Speicher, eine oder mehrere Varianten eines Direktzugriffsspeichers (RAM), wie z.B. einen DRAM, oder andere Speichervorrichtungen, oder eine Kombination dieser Vorrichtungen. Der Speicher 1030 speichert und hostet unter anderem das Betriebssystem (Operating System, OS) 1032, um eine Softwareplattform für die Ausführung von Anweisungen in dem System 1000 vorzusehen. Zusätzlich können die Anwendungen 1034 auf der Softwareplattform des OS 1032 von dem Speicher 1030 ausgeführt werden. Die Anwendungen 1034 stellen Programme dar, die eine eigene Betriebslogik haben, um die Ausführung einer oder mehrerer Funktionen durchzuführen. Die Prozesse 1036 stellen Agenten oder Routinen dar, die Hilfsfunktionen für das OS 1032 oder für eine oder mehrere Anwendungen 1034 oder eine Kombination davon vorsehen. Das OS 1032, die Anwendungen 1034 und die Prozesse 1036 bilden eine Softwarelogik, um Funktionen für das System 1000 vorzusehen. In einer Ausführungsform enthält das Speichersubsystem 1020 die Speichersteuerung 1022, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 1030 ist. Es ist klar, dass die Speichersteuerung 1022 ein physischer Teil des Prozessors 1010 oder ein physischer Teil der Schnittstelle 1012 sein könnte. So kann beispielsweise die Speichersteuerung 1022 eine integrierte Speichersteuerung sein, die in eine Schaltung mit dem Prozessor 1010 integriert ist.
  • Obwohl nicht ausdrücklich veranschaulicht, wird davon ausgegangen, dass das System 1000 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen beinhalten kann, wie beispielsweise einen Speicherbus, einen Grafikbus, Interface-Busse oder dergleichen. Die Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander verbinden, oder die Komponenten sowohl kommunikativ als auch elektrisch verbinden. Die Busse können physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Controller oder andere Schaltungen oder eine Kombination davon beinhalten. Die Busse können beispielsweise einen oder mehrere Systembusse, einen PCI-Bus (Peripheral Component Interconnect), einen HyperTransport- oder ISA-Bus (Industry Standard Architecture), einen kleinen SCSI-Bus (Small Computer System Interface), einen universellen seriellen Bus (USB) oder einen (allgemein als „Firewire“ bezeichneten) 1394-Bus des Institute of Electrical and Electronics Engineers (IEEE) beinhalten.
  • In einer Ausführungsform enthält das System 1000 die Schnittstelle 1014, die mit der Schnittstelle 1012 verbunden werden kann. Die Schnittstelle 1014 kann eine Schnittstelle mit geringerer Geschwindigkeit sein als die Schnittstelle 1012. In einer Ausführungsform kann die Schnittstelle 1014 eine „Südbrückenschaltung“ sein, die eigenständige Komponenten und integrierte Schaltungen enthalten kann. In einer Ausführungsform sind mehrere Komponenten der Benutzeroberfläche oder periphere Komponenten oder beides mit der Schnittstelle 1014 verbunden. Die Netzwerkschnittstelle 1050 ermöglicht dem System 1000, mit entfernten Vorrichtungen (z.B. Servern oder anderen Computervorrichtungen) über ein oder mehrere Netzwerke zu kommunizieren. Die Netzwerkschnittstelle 1050 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, Komponenten für die Verbindung von Mobilfunknetzen, USB- (Universal Serial Bus) oder andere drahtgebundene oder drahtlose standardbasierte oder proprietäre Schnittstellen beinhalten. Die Netzwerkschnittstelle 1050 kann Daten mit einer entfernten Vorrichtung austauschen, was das Senden von in dem Speicher gespeicherten Daten oder das Empfangen von in dem Speicher zu speichernden Daten beinhalten kann.
  • In einer Ausführungsform enthält das System 1000 eine oder mehrere Eingabe/Ausgabe (Input/Output, I/O)-Schnittstellen (I/O) 1060. Die I/O-Schnittstelle 1060 kann eine oder mehrere Schnittstellenkomponenten, über die ein Benutzer mit dem System 1000 interagiert (z.B. Audio-, alphanumerische, taktile/Berührungs- oder sonstige Schnittstellen) enthalten. Eine Peripherieschnittstelle 1070 kann eine beliebige oben nicht ausdrücklich erwähnte Hardware-Schnittstelle beinhalten. Peripheriegeräte beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig von dem System 1000 verbunden werden. Eine abhängige Verbindung ist eine Verbindung, bei der das System 1000 die Softwareplattform oder Hardwareplattform oder beides vorsieht, auf der ein Vorgang ausgeführt wird und mit der ein Benutzer interagiert.
  • In einer Ausführungsform enthält das System 1000 das Speichersubsystem 1080, um Daten nichtflüchtig zu speichern. In einer Ausführungsform können sich in einigen Systemimplementierungen mindestens einige Komponenten des Speichers 1080 mit Komponenten des Speichersubsystems 1020 überschneiden. Das Speichersubsystem 1080 enthält eine (oder mehrere) Speichervorrichtung(en) 1084, die ein herkömmliches Medium zum nichtflüchtigen Speichern großer Datenmengen sein oder enthalten kann, wie beispielsweise eine oder mehrere magnetische, feste oder optische Platten oder eine Kombination davon. Der Speicher 1084 enthält Code oder Anweisungen und Daten 1086 in einem dauerhaften Zustand (d. h. der Wert bleibt trotz einer Unterbrechung der Stromversorgung des Systems 1000 erhalten). Der Speicher 1084 kann allgemein als ein „Memory (Arbeitsspeicher)“ betrachtet werden, obwohl der Speicher 1030 typischerweise der Ausführungs- oder Betriebsspeicher ist, um dem Prozessor 1010 Anweisungen zu geben. Während der Speicher 1084 nichtflüchtig ist, kann der Speicher 1030 einen flüchtigen Speicher beinhalten (d. h. der Wert oder Zustand der Daten ist unbestimmt, wenn die Stromversorgung des Systems 1000 unterbrochen wird). In einer Ausführungsform beinhaltet das Speichersubsystem 1080 die Steuerung 1082 zur Verbindung mit dem Speicher 1084. In einer Ausführungsform ist die Steuerung 1082 ein physischer Teil der Schnittstelle 1014 oder des Prozessors 1010 oder kann Schaltungen oder Logik sowohl im Prozessor 1010 als auch in der Schnittstelle 1014 beinhalten.
  • Eine Stromquelle 1002 versorgt die Komponenten des Systems 1000 mit Strom. Spezieller ist die Stromquelle 1002 typischerweise mit einer oder mehreren Stromversorgungen 1004 in dem System 1002 verbunden, um die Komponenten des Systems 1000 mit Strom zu versorgen. In einer Ausführungsform beinhaltet das Netzteil 1004 einen Wechselstrom-Gleichstrom(Alternating Current to Direct Current, AC to DC)-Adapter zum Anschluss an eine Steckdose. Diese Wechselstromleistung kann auf einer erneuerbaren Energiequelle (z.B. Solarenergie) 1002 basieren. In einer Ausführungsform beinhaltet die Stromquelle 1002 eine Gleichstromquelle, wie beispielsweise einen externen AC/DC-Wandler. In einer Ausführungsform beinhaltet die Stromquelle 1002 oder die Stromversorgung 1004 eine Drahtlosladehardware zum Laden über die Nähe zu einem Ladefeld. In einer Ausführungsform kann die Stromquelle 1002 eine interne Batterie oder Brennstoffzellenquelle beinhalten.
  • In einer Ausführungsform enthält das Speichersubsystem 1020 des Systems 1000 die ECC-Maschine 1092, die eine Logik zur Durchführung der ECC an Daten darstellt, die in dem Speicher 1030 gespeichert sind. In einer Ausführungsform umfasst der Speicher 1030 ein I/O-Abbilden 1090, das ein Abbilden von Speicherarrays auf spezielle I/O-Anschlüsse gemäß einer hierin beschriebenen Ausführungsform darstellt. Die I/O wird gemäß einer beliebigen der hier beschriebenen Ausführungsformen abgebildet, wobei die I/O auf die interne Anordnung abgebildet wird, damit der ECC-Code für die Daten interne Datenbitfehler sowie den I/O-Datenpfad für die Subarrays aufgrund der speziellen Abbildung überprüfen kann. Wenn die ECC-Maschine 1092 ECC-Berechnungen durchführt, deckt die ECC aufgrund der speziellen Abbildung der I/O-Datenpfade sowohl die Daten als auch die I/O-Pfade ab.
  • 11 zeigt ein Blockdiagramm einer Ausführungsform einer mobilen Vorrichtung, in der eine Speichervorrichtung mit einer Abbildung von Arrays auf eine I/O zur Anwendung der ECC implementiert werden kann. Die Vorrichtung 1100 stellt eine mobile Computervorrichtung dar, wie beispielsweise ein Computertablet, ein Mobiltelefon oder Smartphone, einen drahtlosen E-Reader, eine tragbare Computervorrichtung, eine Vorrichtung des Internets der Dinge oder eine andere mobile Vorrichtung oder eine eingebettete Computervorrichtung. Es versteht sich, dass einige der Komponenten allgemein dargestellt sind und nicht sämtliche Komponenten einer solchen Vorrichtung in der Vorrichtung 1100 dargestellt sind.
  • Die Vorrichtung 1100 enthält den Prozessor 1110, der die primären Verarbeitungsvorgänge der Vorrichtung 1100 ausführt. Der Prozessor 1110 kann eine oder mehrere physische Vorrichtungen beinhalten, wie beispielsweise Mikroprozessoren, Anwendungsprozessoren, Mikrocontroller, programmierbare Logikvorrichtungen oder andere Verarbeitungsmittel. Die von dem Prozessor 1110 ausgeführten Verarbeitungsvorgänge beinhalten die Ausführung einer Betriebssystemplattform oder eines Betriebssystems, auf dem Anwendungen und Funktionen von Vorrichtungen ausgeführt werden. Die Verarbeitungsvorgänge umfassen Vorgänge im Zusammenhang mit der I/O (Input/Output) im Zusammenhang mit einem menschlichen Benutzer oder mit sonstigen Vorrichtungen, Vorgänge im Zusammenhang mit der Energieverwaltung, Vorgänge im Zusammenhang mit der Verbindung der Vorrichtung 1100 mit einer anderen Vorrichtung oder einer Kombination davon. Die Verarbeitungsvorgänge können auch Vorgänge im Zusammenhang mit einer Audio-I/O, einer Display-I/O oder sonstigen Schnittstellen oder einer Kombination davon beinhalten. Der Prozessor 1110 kann Daten, die in dem Speicher gespeichert sind, ausführen. Der Prozessor 1110 kann Daten, die in dem Speicher gespeichert sind, schreiben oder bearbeiten.
  • In einer Ausführungsform enthält das System 1100 einen oder mehrere Sensoren 1112. Die Sensoren 1112 stellen eingebettete Sensoren oder Schnittstellen zu externen Sensoren oder eine Kombination davon dar. Die Sensoren 1112 ermöglichen es dem System 1100, einen oder mehrere Zustände einer Umgebung oder einer Vorrichtung zu überwachen oder zu erkennen, in der das System 1100 implementiert ist. Die Sensoren 1112 können Umgebungssensoren (wie Temperatursensoren, Bewegungsmelder, Lichtmelder, Kameras, chemische Sensoren (z.B. Kohlenmonoxid-, Kohlendioxid- oder sonstige chemische Sensoren)), Drucksensoren, Beschleunigungssensoren, Gyroskope, medizinische oder physiologische Sensoren (z.B. Biosensoren, Herzfrequenzmesser oder andere Sensoren zur Erkennung physiologischer Eigenschaften) oder sonstige Sensoren oder eine Kombination davon beinhalten. Die Sensoren 1112 können auch Sensoren für biometrische Systeme wie Fingerabdruckerkennungssysteme, Gesichtserfassungs- oder -erkennungssysteme oder andere Systeme beinhalten, die Merkmale eines Benutzer erfassen oder erkennen. Die Sensoren 1112 sollten in einem weiten Sinne verstanden werden und nicht auf die vielen verschiedenen Arten von Sensoren beschränkt werden, die im Zusammenhang mit dem System 1100 implementiert werden können. In einer Ausführungsform sind ein oder mehrere Sensoren 1112 über eine mit dem Prozessor 1110 integrierte Frontend-Schaltung mit dem Prozessor 1110 verbunden. In einer Ausführungsform sind ein oder mehrere Sensoren 1112 über eine andere Komponente des Systems 1100 mit dem Prozessor 1110 verbunden.
  • In einer Ausführungsform enthält die Vorrichtung 1100 das Audiosubsystem 1120, das Hardware (z.B. Audio-Hardware und Audio-Schaltungen) und Software(z.B. Treiber, Codecs)-Komponenten darstellt, die der Bereitstellung von Audiofunktionen für die Computervorrichtung zugeordnet sind. Audiofunktionen können den Lautsprecher- oder Kopfhörerausgang sowie den Mikrofoneingang beinhalten. Vorrichtungen für solche Funktionen können in die Vorrichtung 1100 integriert sein oder mit dem Gerät 1100 verbunden werden. In einer Ausführungsform interagiert ein Benutzer mit der Vorrichtung 1100, indem er akustische Befehle erteilt, die von dem Prozessor 1110 empfangen und verarbeitet werden.
  • Das Anzeigesubsystem 1130 stellt Hardware (z.B. Anzeigegeräte) und Softwarekomponenten (z.B. Treiber) dar, die eine visuelle Anzeige zur Präsentation für einen Benutzer vorsehen. In einer Ausführungsform weist die Anzeige taktile Komponenten oder Touchscreen-Elemente auf, die ein Benutzer zur Interaktion mit der Computervorrichtung verwenden kann. Das Anzeigesubsystem 1130 beinhaltet die Anzeigeschnittstelle 1132, die die jeweilige Bildschirm- oder Hardwarevorrichtung beinhaltet, die verwendet wird, um einem Benutzer eine Anzeige zur Verfügung zu stellen. In einer Ausführungsform beinhaltet die Anzeigeschnittstelle 1132 eine von dem Prozessor 1110 getrennte Logik (z.B. einen Grafikprozessor), um mindestens eine Verarbeitung im Zusammenhang mit der Anzeige durchzuführen. In einer Ausführungsform beinhaltet das Anzeigesubsystem 1130 eine Touchscreen-Vorrichtung, die einem Benutzer sowohl eine Ausgabe als auch eine Eingabe ermöglicht. In einer Ausführungsform beinhaltet das Anzeigesubsystem 1130 eine hochauflösende (High Definition, HD-) Anzeige, die einem Benutzer eine Ausgabe liefert. „High Definition“ kann sich auf eine Anzeige mit einer Pixeldichte von ca. 100 PPI (Pixel pro Zoll) oder mehr beziehen und kann Formate wie Full HD (z.B. 1080p), Retina-Displays, 4K (Ultra High Definition oder UHD) oder dergleichen beinhalten. In einer Ausführungsform erzeugt das Anzeigesubsystem 1130 Anzeigeinformationen auf der Grundlage der in dem Speicher gespeicherten Daten und der von dem Prozessor 1110 ausgeführten Operationen.
  • Die Steuerung 1140 stellt Hardwaregeräte und Softwarekomponenten dar, die sich auf eine Interaktion mit einem Benutzer beziehen. Die I/O-Steuerung 1140 kann zur Verwaltung von Hardware, die Teil des Audio-Subsystems 1120 ist, oder zur Anzeige des Subsystems 1130 oder für beides verwendet werden. Zusätzlich veranschaulicht die I/O-Steuerung 1140 einen Verbindungspunkt für zusätzliche Vorrichtungen, die mit der Vorrichtung 1100 verbunden sind, über den ein Benutzer mit dem System interagieren kann. Vorrichtungen, die an die Vorrichtung 1100 angeschlossen werden können, können beispielsweise Mikrofonvorrichtungen, Lautsprecher- oder Stereosysteme, Videosysteme oder andere Anzeigevorrichtungen, Tastatur- oder Tastaturvorrichtungen oder andere I/O-Vorrichtungen zur Verwendung mit speziellen Anwendungen wie Kartenlesern oder anderen Vorrichtungen sein.
  • Wie vorstehend erwähnt, kann die Steuerung 1140 mit dem Audio-Subsystem 1120 oder dem Anzeigesubsystem 1130 oder mit beidem interagieren. So kann beispielsweise die Eingabe über ein Mikrofon oder eine andere Audiovorrichtung Eingaben oder Befehle für eine oder mehrere Anwendungen oder Funktionen der Vorrichtung 1100 vorsehen. Zusätzlich kann anstelle oder zusätzlich zu dem Display-Ausgang ein Audioausgang vorgesehen werden. In einem weiteren Beispiel, wenn das Anzeigesubsystem einen Touchscreen beinhaltet, wirkt die Anzeigevorrichtung auch als ein Eingabegerät, das zumindest teilweise von der Steuerung 1140 verwaltet werden kann. Es können auch zusätzliche Tasten oder Schalter für eine Vorrichtung 1100 vorhanden sein, um I/O-Funktionen vorzusehen, die von der I/O-Steuerung 1140 verwaltet werden.
  • In einer Ausführungsform verwaltet die Steuerung 1140 Vorrichtungen wie Beschleunigungssensoren, Kameras, Lichtsensoren oder andere Umgebungssensoren, Gyroskope, Global Positioning System (GPS) oder eine andere Hardware, die in die Vorrichtung 1100 integriert werden kann, oder Sensoren 1112. Die Eingabe kann Teil einer unmittelbaren Benutzerinteraktion sowie eine Bereitstellung von Umgebungseinflüssen für das System sein, um dessen Funktionen zu beeinflussen (wie z.B. eine Filterung hinsichtlich Rauschens, ein Anpassen der Anzeigen zur Helligkeitserkennung, ein Anwenden eines Blitzes für eine Kamera oder andere Funktionen).
  • In einer Ausführungsform beinhaltet die Vorrichtung 1100 ein Energiemanagement 1150, das den Stromverbrauch der Batterie, das Laden der Batterie und Funktionen im Zusammenhang mit dem Energiesparbetrieb verwaltet. Das Energiemanagement 1150 verwaltet die Energie aus der Stromquelle 1152, die die Komponenten des Systems 1100 mit Strom versorgt. In einer Ausführungsform beinhaltet die Stromquelle 1152 einen Wechselstrom-Gleichstrom(Alternating Current to Direct Current, AC to DC)-Adapter für den Anschluss an eine Steckdose. Diese Wechselstromleistung kann auf erneuerbarer Energie (z.B. Solarenergie, Bewegungsenergie) basieren. In einer Ausführungsform beinhaltet die Stromquelle 1152 nur Gleichstrom, der von einer Gleichstromquelle, wie beispielsweise einem externen AC/DC-Wandler, vorgesehen werden kann. In einer Ausführungsform beinhaltet die Stromquelle 1152 eine drahtlose Ladehardware zum Laden über die Nähe eines Ladefeldes. In einer Ausführungsform kann die Stromquelle 1152 eine interne Batterie oder Brennstoffzellenquelle beinhalten.
  • Das Speichersubsystem 1160 beinhaltet die Speichervorrichtung(en) 1162 zum Speichern von Informationen in der Vorrichtung 1100. Das Speichersubsystem 1160 kann nichtflüchtige (d. h. der Zustand ändert sich nicht, wenn die Stromversorgung der Speichervorrichtung unterbrochen wird) oder flüchtige (d. h. der Zustand ist unbestimmt, wenn die Stromversorgung der Speichervorrichtung unterbrochen wird) Speichervorrichtungen oder eine Kombination davon beinhalten. Der Speicher 1160 kann Anwendungsdaten, Benutzerdaten, Musik, Fotos, Dokumente oder andere Daten sowie Systemdaten (ob langfristig oder temporär) im Zusammenhang mit der Ausführung der Anwendungen und Funktionen des Systems 1100 speichern. In einer Ausführungsform beinhaltet das Speichersubsystem 1160 die Speichersteuerung 1164 (die auch als Teil der Steuerung des Systems 1100 und gegebenenfalls als Teil des Prozessors 1110 betrachtet werden könnte). Die Speichersteuerung 1164 beinhaltet einen Planer zum Erzeugen und Ausgeben von Befehlen, um den Zugriff auf die Speichervorrichtung 1162 zu steuern.
  • Die Konnektivität 1170 umfasst Hardwaregeräte (z.B. drahtlose oder drahtgebundene Anschlüsse und Kommunikationshardware oder eine Kombination aus drahtgebundener und drahtloser Hardware) und Softwarekomponenten (z.B. Treiber, Protokollstapel), um der Vorrichtung 1100 eine Kommunikation mit externen Vorrichtungen zu ermöglichen. Die externe Vorrichtung kann auf separaten Vorrichtungen, wie beispielsweise anderen Computervorrichtungen, drahtlosen Zugangspunkten oder Basisstationen, sowie Peripheriegeräten wie Headsets, Druckern oder sonstigen Vorrichtungen basieren. In einer Ausführungsform tauscht das System 1100 Daten mit einer externen Vorrichtung zur Speicherung in dem Speicher oder zur Anzeige auf einer Anzeigevorrichtung aus. Die ausgetauschten Daten können Daten beinhalten, die in dem Speicher zu speichern sind, oder Daten, die bereits in dem Speicher gespeichert sind, um Daten zu lesen, zu schreiben oder zu bearbeiten.
  • Die Konnektivität 1170 kann mehrere verschiedene Arten von Konnektivität beinhalten. Zur Verallgemeinerung wird die Vorrichtung 1100 mit einer Mobilfunkverbindung 1172 und einer Mobilfunkverbindung 1174 dargestellt. Die Mobilfunkverbindung 1172 bezieht sich im Allgemeinen auf eine Mobilfunkverbindung, die von Mobilfunkbetreibern vorgesehen wird, wie beispielsweise über GSM (globales System für die mobile Kommunikation) oder Variationen oder Derivate, CDMA (Code Division Multiple Access) oder Variationen oder Derivate, TDM (Time Division Multiplexing) oder Variationen oder Derivate, LTE (Long Term Evolution - auch als „4G“ bezeichnet) oder sonstige Mobilfunkstandards. Die drahtlose Konnektivität 1174 bezieht sich auf eine drahtlose Konnektivität, die nicht zellular ist, und kann persönliche Netzwerke (wie Bluetooth), lokale Netzwerke (wie WiFi) oder Weitverkehrsnetzwerke (wie WiMax), oder eine andere drahtlose Kommunikation oder eine Kombination davon beinhalten. Eine drahtlose Kommunikation bezieht sich auf die Übertragung von Daten unter Verwendung von modulierter elektromagnetischer Strahlung durch ein nichtfestes Medium. Die drahtgebundene Kommunikation erfolgt über ein festes Kommunikationsmedium.
  • Periphere Verbindungen 1180 beinhalten Hardwareschnittstellen und Anschlüsse sowie Softwarekomponenten (z.B. Treiber, Protokollstapel) zum Herstellen von Peripherieverbindungen. Es versteht sich, dass die Vorrichtung 1100 sowohl eine Peripherievorrichtung („zu“ 1182) für andere Computergeräte sein könnte, als auch Peripherievorrichtungen („von“ 1184) aufweisen könnte, die mit ihr verbunden sind. Die Vorrichtung 1100 verfügt üblicherweise über einen „Docking“-Anschluss, um sich mit anderen Computergeräten verbinden zu lassen, z.B. um Inhalte auf der Vorrichtung 1100 zu verwalten (z.B. herunterzuladen, hochzuladen, zu ändern, zu synchronisieren). Darüber hinaus kann ein Docking-Anschluss es ermöglichen, die Vorrichtung 1100, mit speziellen Peripheriegeräten zu verbinden, so dass die Vorrichtung 1100 die Ausgabe von Inhalten, z.B. an audiovisuelle oder andere Systeme, steuern kann.
  • Zusätzlich zu einem proprietären Docking-Anschluss oder einer anderen proprietären Verbindungshardware kann die Vorrichtung 1100 periphere Verbindungen 1180 über gängige oder standardbasierte Anschlüsse herstellen. Gängige Typen können einen Universal Serial Bus (USB)-Anschluss (der eine Vielzahl von verschiedenen Hardwareschnittstellen beinhalten kann), einen DisplayPort einschließlich MiniDisplayPort (MDP), eine High Definition Multimedia-Schnittstelle (HDMI), Firewire oder einen anderen Typ beinhalten.
  • In einer Ausführungsform beinhaltet das Speichersubsystem 1160 des Systems 1100 die ECC-Maschine 1192, die eine Logik zur Durchführung der ECC an in dem Speicher 1162 gespeicherten Daten darstellt. In einer Ausführungsform umfasst der Speicher 1162 ein I/O-Abbilden 1190, das ein Abbilden von Speicherarrays auf spezielle I/O-Anschlüsse darstellt, gemäß einer hierin beschriebenen Ausführungsform. Die I/O wird gemäß einer beliebigen der hier beschriebenen Ausführungsformen abgebildet, wobei die I/O auf die interne Anordnung abgebildet wird, damit der ECC-Code für die Daten interne Datenbitfehler sowie den I/O-Datenpfad für die Subarrays aufgrund der speziellen Abbildung überprüfen kann. Wenn die ECC-Maschine 1192 ECC-Berechnungen durchführt, deckt die ECC aufgrund der speziellen Abbildung der I/O-Datenpfade sowohl die Daten als auch die I/O-Pfade ab.
  • In einem Aspekt enthält eine Speichervorrichtung: mehrere Eingabe/Ausgabe(Input/Output, I/O)-Anschlüsse, um die Speichervorrichtung mit einer externen Vorrichtung zu verbinden; einen Speicherarray, der mehrere Subarrays enthält, die jeweils mehrere Zeilen von Speicherzellen enthalten; und einen Datenpfad, der eine oder mehrere Signalleitungen aufweist, um den Speicherarray mit den I/O-Anschlüssen zu verbinden, wobei der Datenpfad dazu dient, sämtliche Daten zwischen einem Speichersubarray und einem speziellen I/O-Anschluss gemäß einer Fehlerprüfungs- und Korrektur(Error Checking and Correcting, ECC)-Codematrix zu verzweigen, wobei ein Code der ECC-Codematrix, der dem speziellen I/O-Anschluss entspricht, dazu dient, Datenkorruptionsfehler und I/O-Fehler für den Speichersubarray zu überprüfen und zu korrigieren.
  • In einer Ausführungsform weist die Speichervorrichtung eine In-Package-Speichervorrichtung eines System-on-a-Chip mit einem Prozessorhalbleiterplättchen auf. In einer Ausführungsform weist die Speichervorrichtung ein dynamisches Direktzugriffsspeicher(Dynamic Random Access Memory, DRAM)-Halbleiterplättchen auf. In einer Ausführungsform beinhalten die mehreren I/O-Anschlüsse eine 18-Bit-Datenschnittstelle. In einer Ausführungsform beinhalten die mehreren I/O-Anschlüsse eine 36-Bit-Datenschnittstelle. In einer Ausführungsform weist der Speichersubarray einen Subarray einer Bank der Speichervorrichtung auf. In einer Ausführungsform dient der Datenpfad dazu einen einzelnen Speichersubarray auf einen speziellen I/O-Anschluss abzubilden. In einer Ausführungsform dient der Datenpfad dazu, mehrere Speichersubarrays auf einen speziellen I/O-Anschluss abzubilden. In einer Ausführungsform, ferner aufweisend: einen Multiplexer zum Multiplexen mehrerer Datensignalleitungen zwischen dem Speichersubarray und dem speziellen Anschluss. In einer Ausführungsform werden sämtliche Datensignalleitungen des Speichersubarrays zu einem einzigen Multiplexer verzweigt. In einer Ausführungsform dient der Datenpfad dazu, ein Bündel von Datenbits über mehrere Übertragungszyklen von dem Speichersubarray zu dem speziellen Anschluss zu verzweigen. In einer Ausführungsform dient der Datenpfad dazu, Daten von dem speziellen I/O-Anschluss für einen Schreibvorgang zu dem Speichersubarray zu verzweigen. In einer Ausführungsform dient der Datenpfad dazu, Daten von dem Speichersubarray für einen Lesevorgang zu dem speziellen I/O-Anschluss zu verzweigen.
  • In einem Aspekt enthält ein System auf einem Chip: ein Prozessorhalbleiterplättchen auf einem Substrat; und eine In-Package-Dynamic Random Access Memory (DRAM)-Vorrichtung, die über das Substrat mit dem Prozessorhalbleiterplättchen verbunden ist, wobei die DRAM-Vorrichtung mehrere Eingabe/Ausgabe(Input/Output, I/O)-Anschlüsse zum Verbinden der DRAM-Vorrichtung mit dem Prozessorhalbleiterplättchen enthält; eine Speicherbank, die mehrere Subarrays mit mehreren Zeilen von Speicherzellen enthält; und mehrere Datenpfade, die eine oder mehrere Signalleitungen zum Verbinden der Subarrays mit den I/O-Anschlüssen beinhalten, wobei ein Datenpfad zum Verzweigen sämtlicher Daten zwischen einem speziellen Subarray und einem speziellen I/O-Anschluss gemäß einer Fehlerprüfungs- und Korrektur(Error Checking and Correcting, ECC)-Codematrix vorgesehen ist, wobei ein Code der ECC-Codematrix, der dem speziellen I/O-Anschluss entspricht, zum Prüfen und Korrigieren von Datenkorruptionsfehlern und I/O-Fehlern für den speziellen Subarray dient.
  • In einer Ausführungsform beinhalten die mehreren I/O-Anschlüsse eine 18-Bit- oder eine 36-Bit-Datenschnittstelle. In einer Ausführungsform dient der Datenpfad dazu, ein einzelnes Subarray ausschließlich auf den speziellen I/O-Anschluss abzubilden. In einer Ausführungsform dient der Datenpfad dazu, mehrere Subarrays ausschließlich auf den jeweiligen I/O-Anschluss abzubilden. In einer Ausführungsform weist die DRAM-Vorrichtung ferner auf: einen Multiplexer zum Multiplexen mehrerer Datensignalleitungen zwischen dem Speichersubarray und dem speziellen I/O-Anschluss. In einer Ausführungsform werden sämtliche Datensignalleitungen des Speichersubarrays zu einem einzigen Multiplexer verzweigt. In einer Ausführungsform dienen die Datenpfade dazu, ein Bündel von Datenbits über mehrere Übertragungszyklen von dem speziellen Subarray zu dem speziellen I/O-Anschluss zu verzweigen. In einer Ausführungsform dient der Datenpfad dazu, Daten von dem speziellen I/O-Anschluss zu dem Speichersubarray für einen Schreibvorgang zu verzweigen. In einer Ausführungsform dient der Datenpfad dazu, Daten von dem Speichersubarray zu dem speziellen I/O-Anschluss für einen Lesevorgang zu verzweigen. In einer Ausführungsform, ferner eines oder mehreres von Folgendem aufweisend: eine Speichersteuerung auf dem Prozessorhalbleiterplättchen; eine Anzeige, die kommunikativ mit dem Prozessorhalbleiterplättchen verbunden ist; eine Batterie zur Stromversorgung des Systems; oder eine Netzwerkschnittstelle, die kommunikativ mit dem Prozessorhalbleiterplättchen verbunden ist.
  • In einem Aspekt umfasst ein Verfahren zur Eingabe/Ausgabe (Input/Output, I/O) im Zusammenhang mit einer Speichervorrichtung: Zuordnen eines Speichersubarrays der Speichervorrichtung zu einem speziellen von mehreren I/O-Anschlüssen der Speichervorrichtung, wobei ein Bit eines ECC-Codes, der dem speziellen I/O-Anschluss entspricht, dazu dient, Datenkorruptionsfehler und I/O-Fehler für den zugeordneten Speichersubarray zu überprüfen und zu korrigieren; und Verzweigen sämtlicher I/O-Datensignalleitungen zwischen dem speziellen I/O-Anschluss und dem Speichersubarray.
  • In einer Ausführungsform weist die Speichervorrichtung eine In-Package-Speichervorrichtung eines System-on-a-Chip mit einem Prozessorhalbleiterplättchen auf. In einer Ausführungsform weist der Speichersubarray einen Subarray einer Bank eines dynamischen Direktzugriffsspeicher(Dynamic Random Access Memory, DRAM)-Halbleiterplättchens auf. In einer Ausführungsform beinhalten die mehreren I/O-Anschlüsse eine 18-Bit-Datenschnittstelle. In einer Ausführungsform beinhalten die mehreren I/O-Anschlüsse eine 36-Bit-Datenschnittstelle. In einer Ausführungsform beinhaltet der Speichersubarray einen Subarray einer Bank der Speichervorrichtung. In einer Ausführungsform dient der Datenpfad dazu, einen einzelnen Speichersubarray auf einen speziellen I/O-Anschluss abzubilden. In einer Ausführungsform dient der Datenpfad dazu, mehrere Speichersubarrays auf einen speziellen I/O-Anschluss abzubilden. In einer Ausführungsform umfasst das Verzweigen der I/O-Datensignalleitungen zwischen dem speziellen I/O-Anschluss und dem Speichersubarray ein Verzweigen der I/O-Datensignalleitungen durch einen Multiplexer, um sämtliche I/O-Datensignalleitungen auf den speziellen I/O-Anschluss abzubilden. In einer Ausführungsform umfasst das Verzweigen der I/O-Datensignalleitungen durch den Multiplexer ein Verzweigen der I/O-Datensignalleitungen mehrerer Speichersubarrays durch den Multiplexer zu dem speziellen I/O-Anschluss. In einer Ausführungsform umfasst das Verzweigen der I/O-Datensignalleitungen durch den Multiplexer ein Verzweigen sämtlicher Datensignalleitungen des Subarrays zu einem einzigen Multiplexer. In einer Ausführungsform umfasst das Verzweigen der I/O-Datensignalleitungen zwischen dem speziellen Anschluss und dem Speichersubarray ein Verzweigen der I/O-Daten als ein Bündel von Datenbits über mehrere Übertragungszyklen von dem Speichersubarray zu dem speziellen I/O-Anschluss. In einer Ausführungsform umfasst das Verzweigen der I/O-Datensignalleitungen zwischen dem speziellen I/O-Anschluss und dem Speichersubarray ein Verzweigen von Daten von dem speziellen Anschluss zu dem Speichersubarray für einen Schreibvorgang. In einer Ausführungsform umfasst das Verzweigen der I/O-Datensignalleitungen zwischen dem speziellen I/O-Anschluss und dem Speichersubarray ein Verzweigen von Daten zu dem speziellen I/O-Anschluss von dem Speichersubarray für einen Lesevorgang.
  • In einem Aspekt weist eine Vorrichtung Mittel zur Durchführung von Operationen auf, um ein Verfahren zur Eingabe/Ausgabe (Input/Output, I/O) im Zusammenhang mit einer Speichervorrichtung auszuführen, gemäß einer Ausführungsform des vorhergehenden Verfahrens. In einem Aspekt weist ein Industrieartikel ein computerlesbares Speichermedium mit einem darauf gespeicherten Inhalt auf, der bei einem Zugriff darauf veranlasst, dass eine Maschine Operationen durchführt, um ein Verfahren zur Eingabe/Ausgabe (Input/Output, I/O) im Zusammenhang mit einer Speichervorrichtung auszuführen, gemäß einer Ausführungsform des vorhergehenden Verfahrens.
  • Die hierin dargestellten Flussdiagramme zeigen exemplarisch Sequenzen verschiedener Verfahrensvorgänge. Die Flussdiagramme können sowohl Vorgänge, die von einer Software- oder Firmware-Routine auszuführen sind, als auch physikalische Vorgänge anzeigen. In einer Ausführungsform kann ein Flussdiagramm den Zustand eines endlichen Automaten (Finite State Machine, FSM) veranschaulichen, der in Hardware, Software oder einer Kombination davon implementiert werden kann. Obwohl in einer speziellen Abfolge oder Sequenz dargestellt, kann die Reihenfolge der Vorgänge, sofern nicht anderslautend angegeben, geändert werden. Daher sind die veranschaulichten Ausführungsformen nur als Beispiel zu verstehen, und das Verfahren kann in einer anderen Reihenfolge durchgeführt werden, und einige Vorgänge können parallel ausgeführt werden. Zusätzlich können eine oder mehrere Vorgänge in verschiedenen Ausführungsformen weggelassen werden, so dass nicht sämtliche Vorgänge in jeder Ausführungsform erforderlich sind. Es sind auch andere Verfahrensflüsse möglich.
  • Soweit hierin verschiedene Operationen oder Funktionen beschrieben sind, können sie als Softwarecode, Anweisungen, Konfiguration, Daten oder eine Kombination davon beschrieben oder definiert werden. Der Inhalt kann als ein unmittelbar ausführbarer („Objekt-“ oder in Form eines „ausführbaren“) Codes, als Quellcode oder Differenzcode („Delta-“ oder „Patch-“ Code) vorliegen. Der Softwareinhalt der hierin beschriebenen Ausführungsformen kann über einen Industrieartikel mit dem darauf gespeicherten Inhalt oder über ein Verfahren zum Betreiben einer Kommunikationsschnittstelle zum Senden von Daten über die Kommunikationsschnittstelle vorgesehen werden. Ein maschinenlesbares Speichermedium kann eine Maschine veranlassen, die beschriebenen Funktionen oder Operationen auszuführen, und beinhaltet jeden Mechanismus, der Informationen in einer für eine Maschine zugänglichen Form speichert (z.B. eine Computervorrichtung, ein elektronisches System oder dergleichen), wie z.B. beschreibbare/nicht beschreibbare Medien (z.B. Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen und dergleichen). Eine Kommunikationsschnittstelle beinhaltet jeden Mechanismus, der mit einem fest verdrahteten, drahtlosen, optischen oder sonstigen Medium verbunden ist, um mit einer anderen Vorrichtung zu kommunizieren, wie beispielsweise eine Speicherbusschnittstelle, eine Prozessorbusschnittstelle, eine Internetverbindung, eine Festplattensteuerung und dergleichen. Die Kommunikationsschnittstelle kann durch ein Vorsehen von Konfigurationsparametern und/oder ein Senden von Signalen konfiguriert werden, um die Kommunikationsschnittstelle dafür vorzubereiten, ein Datensignals vorzusehen, das den Softwareinhalt beschreibt. Auf die Kommunikationsschnittstelle kann über einen oder mehrere Befehle oder Signale zugegriffen werden, die an die Kommunikationsschnittstelle gesendet werden.
  • Verschiedene hierin beschriebene Komponenten können ein Mittel zur Durchführung der beschriebenen Operationen oder Funktionen sein. Jede hierin beschriebene Komponente beinhaltet eine Software, Hardware oder eine Kombination davon. Die Komponenten können als Softwaremodule, Hardwaremodule, Spezialhardware (z.B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASICs), digitale Signalprozessoren (DSPs) usw.), Embedded Controller, fest verdrahtete Schaltungen usw. implementiert werden.
  • Zusätzlich zu dem hierin Beschriebenen können verschiedene Modifikationen an den offenbarten Ausführungsformen und Implementierungen der Erfindung vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen. Daher sollten die Darstellungen und Beispiele hierin in einem veranschaulichenden und nicht in einem beschränkenden Sinne ausgelegt werden. Der Schutzumfang der Erfindung sollte ausschließlich anhand der folgenden Ansprüche gemessen werden.
  • 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 15282793 [0001]

Claims (25)

  1. System zum Zugriff auf eine Speichervorrichtung, aufweisend: einen Prozessor; und eine Speichervorrichtung, enthaltend: mehrere Eingabe/Ausgabe(Input/Output, I/O)-Anschlüsse, um die Speichervorrichtung mit einer externen Vorrichtung zu verbinden; einen Speicherarray, der mehrere Subarrays enthält, die jeweils mehrere Zeilen von Speicherzellen enthalten; und einen Datenpfad, der eine oder mehrere Signalleitungen aufweist, um den Speicherarray mit den I/O-Anschlüssen zu verbinden, wobei der Datenpfad dazu dient, sämtliche Daten zwischen einem Speichersubarray und einem speziellen I/O-Anschluss gemäß einer Fehlerprüfungs- und Korrektur(Error Checking and Correcting, ECC)-Codematrix zu verzweigen, wobei ein Code der ECC-Codematrix, der dem speziellen I/O-Anschluss entspricht, dazu dient, Datenkorruptionsfehler und I/O-Fehler für den Speichersubarray zu überprüfen und zu korrigieren.
  2. System nach Anspruch 1, wobei der Prozessor ein Prozessorhalbleiterplättchen auf einem Substrat aufweist, und wobei die Speichervorrichtung eine In-Package-Speichervorrichtung in einem System auf einem Chip umfasst, die über das Substrat mit dem Prozessorhalbleiterplättchen verbunden ist.
  3. System nach Anspruch 2, wobei die Speichervorrichtung ein dynamisches Direktzugriffsspeicher(Dynamic Random Access Memory, DRAM)-Halbleiterplättchen aufweist.
  4. System nach Anspruch 1, wobei die mehreren I/O-Anschlüsse eine 18-Bit-Datenschnittstelle aufweisen.
  5. System nach Anspruch 1, wobei die mehreren I/O-Anschlüsse eine 36-Bit-Datenschnittstelle aufweisen.
  6. System nach Anspruch 1, wobei der Speichersubarray einen Subarray einer Bank der Speichervorrichtung aufweist.
  7. System nach Anspruch 1, wobei der Datenpfad dazu dient, einen einzelnen Speichersubarray auf einen speziellen I/O-Anschluss abzubilden.
  8. System nach Anspruch 1, wobei der Datenpfad dazu dient, mehrere Speichersubarrays auf einen speziellen I/O-Anschluss abzubilden.
  9. System nach Anspruch 1, ferner aufweisend: einen Multiplexer zum Multiplexen mehrerer Datensignalleitungen zwischen dem Speichersubarray und dem speziellen I/O-Anschluss.
  10. System nach Anspruch 9, wobei sämtliche Datensignalleitungen des Speichersubarrays zu einem einzelnen Multiplexer verzweigen.
  11. System nach Anspruch 1, wobei der Datenpfad dazu bestimmt ist, ein Bündel von Datenbits über mehrere Übertragungszyklen von dem Speichersubarray zu dem speziellen I/O-Anschluss zu verzweigen.
  12. System nach Anspruch 1, wobei der Datenpfad dazu dient, Daten von dem speziellen I/O-Anschluss zu dem Speichersubarray für einen Schreibvorgang zu verzweigen.
  13. System nach Anspruch 1, wobei der Datenpfad dazu dient, Daten von dem Speichersubarray zu dem speziellen I/O-Anschluss für einen Lesevorgang zu verzweigen.
  14. System nach Anspruch 1, ferner eines oder mehreres von Folgendem aufweisend: eine Speichersteuerung auf dem Prozessorhalbleiterplättchen; eine Anzeige, die kommunikativ mit dem Prozessorhalbleiterplättchen verbunden ist; eine Batterie zur Stromversorgung des Systems; oder eine Netzwerkschnittstelle, die kommunikativ mit dem Prozessorhalbleiterplättchen verbunden ist.
  15. Verfahren zur Eingabe/Ausgabe (Input/Output, I/O) mit einer Speichervorrichtung, umfassend: Zuordnen eines Speichersubarrays der Speichervorrichtung zu einem speziellen von mehreren I/O-Anschlüssen der Speichervorrichtung, wobei ein Bit eines ECC-Codes, der dem speziellen I/O-Anschluss entspricht, dazu dient, Datenkorruptionsfehler und I/O-Fehler für den zugeordneten Speichersubarray zu überprüfen und zu korrigieren; und Verzweigen sämtlicher I/O-Datensignalleitungen zwischen dem speziellen I/O-Anschluss und dem Speichersubarray.
  16. Verfahren nach Anspruch 24, wobei die Speichervorrichtung eine In-Package-Speichervorrichtung eines Systems auf einem Chip mit einem Prozessorhalbleiterplättchen aufweist.
  17. Verfahren nach Anspruch 24, wobei der Speichersubarray einen Subarray einer Bank eines dynamischen Direktzugriffsspeicher(Dynamic Random Access Memory, DRAM)-Halbleiterplättchens aufweist.
  18. Verfahren nach Anspruch 24, wobei die mehreren I/O-Anschlüsse eine 18-Bit-Datenschnittstelle oder eine 36-Bit-Datenschnittstelle beinhalten.
  19. Verfahren nach Anspruch 24, wobei der Datenpfad dazu dient, einen einzelnen Speichersubarray auf einen speziellen I/O-Anschluss abzubilden.
  20. Verfahren nach Anspruch 24, wobei der Datenpfad dazu dient, mehrere Speichersubarrays auf einen speziellen I/O-Anschluss abzubilden.
  21. Verfahren nach Anspruch 15, wobei das Verzweigen der I/O-Datensignalleitungen zwischen dem speziellen I/O-Anschluss und dem Speichersubarray ein Verzweigen der I/O-Datensignalleitungen durch einen Multiplexer umfasst, um sämtliche I/O-Datensignalleitungen auf den speziellen I/O-Anschluss abzubilden.
  22. Verfahren nach Anspruch 15, wobei das Verzweigen der I/O-Datensignalleitungen zwischen dem speziellen I/O-Anschluss und dem Speichersubarray ein Verzweigen der I/O-Daten als ein Bündel von Datenbits über mehrere Übertragungszyklen von dem Speichersubarray zu dem speziellen I/O-Anschluss umfasst.
  23. Verfahren nach Anspruch 15, wobei das Verzweigen der I/O-Datensignalleitungen zwischen dem speziellen I/O-Anschluss und dem Speichersubarray ein Verzweigen von Daten von dem speziellen I/O-Anschluss zu dem Speichersubarray für einen Schreibvorgang oder ein Verzweigen von Daten zu dem speziellen I/O-Anschluss von dem Speichersubarray für einen Lesevorgang umfasst.
  24. Vorrichtung mit Mitteln zum Ausführen von Operationen zum Ausführen eines Verfahrens zur Eingabe/Ausgabe (Input/Output, I/O) mit einer Speichervorrichtung gemäß einem der Ansprüche 15 bis 24.
  25. Industrieartikel, der ein computerlesbares Speichermedium mit einem darauf gespeicherten Inhalt aufweist, der bei einem Zugriff darauf veranlasst, dass eine Maschine Operationen ausführt, um ein Verfahren zur Eingabe/Ausgabe (Input/Output, I/O) mit einer Speichervorrichtung nach einem der Ansprüche 15 bis 24 auszuführen.
DE112017004966.0T 2016-09-30 2017-08-30 Erweiterte anwendung eines fehlerprüfungs- und korrekturcodes in einem speicher Pending DE112017004966T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/282,793 2016-09-30
US15/282,793 US10120749B2 (en) 2016-09-30 2016-09-30 Extended application of error checking and correction code in memory
PCT/US2017/049318 WO2018063698A1 (en) 2016-09-30 2017-08-30 Extended application of error checking and correction code in memory

Publications (1)

Publication Number Publication Date
DE112017004966T5 true DE112017004966T5 (de) 2019-06-19

Family

ID=61758224

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017004966.0T Pending DE112017004966T5 (de) 2016-09-30 2017-08-30 Erweiterte anwendung eines fehlerprüfungs- und korrekturcodes in einem speicher

Country Status (5)

Country Link
US (1) US10120749B2 (de)
KR (1) KR102501147B1 (de)
CN (1) CN109661654B (de)
DE (1) DE112017004966T5 (de)
WO (1) WO2018063698A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3370152B1 (de) 2017-03-02 2019-12-25 INTEL Corporation Integrierte fehlerprüfung und -korrektur in speichervorrichtungen mit festen bandbreitenschnittstellen
WO2019123216A1 (en) * 2017-12-21 2019-06-27 King Abdullah University Of Science And Technology Silicon nanotube, field effect transistor-based memory cell, memory array and method of production
US11474897B2 (en) * 2019-03-15 2022-10-18 Nvidia Corporation Techniques for storing data to enhance recovery and detection of data corruption errors
US11366772B2 (en) 2020-03-16 2022-06-21 Micron Technology, Inc. Separate inter-die connectors for data and error correction information and related systems, methods, and apparatuses
US20220300370A1 (en) * 2021-03-17 2022-09-22 Micron Technology, Inc. Configurable Error Correction Code (ECC) Circuitry and Schemes
US11789649B2 (en) * 2021-04-22 2023-10-17 Nvidia Corporation Combined on-package and off-package memory system
CN113342569B (zh) * 2021-06-17 2022-02-11 哈尔滨工业大学 一种用于闪存胞元不可靠状态消除的等长编解码方法
WO2023106434A1 (ko) * 2021-12-06 2023-06-15 주식회사 딥아이 Ddr sdram 인터페이스를 이용한 dram 지원 에러 정정 방법

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4584681A (en) 1983-09-02 1986-04-22 International Business Machines Corporation Memory correction scheme using spare arrays
US5454093A (en) * 1991-02-25 1995-09-26 International Business Machines Corporation Buffer bypass for quick data access
US5754753A (en) * 1992-06-11 1998-05-19 Digital Equipment Corporation Multiple-bit error correction in computer main memory
GB2289779B (en) * 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
AU1634600A (en) 1998-12-30 2000-07-24 Intel Corporation Memory array organization
US6701480B1 (en) * 2000-03-08 2004-03-02 Rockwell Automation Technologies, Inc. System and method for providing error check and correction in memory systems
JP2002056671A (ja) 2000-08-14 2002-02-22 Hitachi Ltd ダイナミック型ramのデータ保持方法と半導体集積回路装置
US6661730B1 (en) * 2000-12-22 2003-12-09 Matrix Semiconductor, Inc. Partial selection of passive element memory cell sub-arrays for write operation
US7263097B1 (en) 2001-11-26 2007-08-28 Integrated Device Technology, Inc. Programmably sliceable switch-fabric unit and methods of use
US6625066B1 (en) 2002-03-18 2003-09-23 United Memories, Inc. Data path decoding technique for an embedded memory array
US6888731B2 (en) 2002-11-29 2005-05-03 Mosaid Technologies Incorporated Method and apparatus for replacing defective rows in a semiconductor memory array
US7069494B2 (en) * 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
US7272773B2 (en) * 2003-04-17 2007-09-18 International Business Machines Corporation Cache directory array recovery mechanism to support special ECC stuck bit matrix
US7051166B2 (en) 2003-04-21 2006-05-23 Hewlett-Packard Development Company, L.P. Directory-based cache coherency scheme for reducing memory bandwidth loss
TWI252397B (en) 2004-09-17 2006-04-01 Ind Tech Res Inst Method and apparatus of built-in self-diagnosis and repair in a memory with syndrome identification
US7581154B2 (en) 2005-06-30 2009-08-25 Intel Corporation Method and apparatus to lower operating voltages for memory arrays using error correcting codes
US8253751B2 (en) 2005-06-30 2012-08-28 Intel Corporation Memory controller interface for micro-tiled memory access
US7779334B2 (en) * 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US7945840B2 (en) * 2007-02-12 2011-05-17 Micron Technology, Inc. Memory array error correction apparatus, systems, and methods
US7477547B2 (en) 2007-03-28 2009-01-13 Sandisk Corporation Flash memory refresh techniques triggered by controlled scrub data reads
JP5137179B2 (ja) 2007-03-30 2013-02-06 ルネサスエレクトロニクス株式会社 半導体装置
US7450454B1 (en) 2007-05-09 2008-11-11 Freescale Semiconductor, Inc. Low voltage data path in memory array
US7613060B2 (en) * 2007-05-21 2009-11-03 Micron Technology, Inc. Methods, circuits, and systems to select memory regions
US20100169729A1 (en) 2008-12-30 2010-07-01 Datta Shamanna M Enabling an integrated memory controller to transparently work with defective memory devices
WO2010076835A1 (en) 2008-12-31 2010-07-08 Christophe Laurent Error correction code for unidirectional memory
US8358548B2 (en) 2009-10-19 2013-01-22 Avago Technologies Enterprise IP (Singapore) Pte. Ltd. Methods for efficiently repairing embedded dynamic random-access memory having marginally failing cells
WO2012040649A2 (en) * 2010-09-24 2012-03-29 Texas Memory Systems, Inc. High-speed memory system
TWI439857B (zh) 2010-11-29 2014-06-01 Univ Nat Changhua Education 記憶體位址重新映射裝置與修復方法
US8788922B2 (en) * 2011-02-28 2014-07-22 Apple Inc Error correction codes for incremental redundancy
WO2013015805A1 (en) 2011-07-27 2013-01-31 Hewlett-Packard Development Company, L.P. Efficient data-storage devices that include memory elements characterized by potentially large switching latencies
US9195551B2 (en) 2012-03-29 2015-11-24 Intel Corporation Enhanced storage of metadata utilizing improved error detection and correction in computer memory
US9236110B2 (en) * 2012-06-30 2016-01-12 Intel Corporation Row hammer refresh command
US8990670B2 (en) * 2012-09-28 2015-03-24 Intel Corporation Endurance aware error-correcting code (ECC) protection for non-volatile memories
CN104704572A (zh) 2012-10-31 2015-06-10 惠普发展公司,有限责任合伙企业 修复内存装置
JP6018508B2 (ja) * 2013-01-09 2016-11-02 エスアイアイ・セミコンダクタ株式会社 不揮発性半導体記憶装置及びそのテスト方法
US10198314B2 (en) 2013-05-23 2019-02-05 Rambus Inc. Memory device with in-system repair capability
US9748002B2 (en) 2013-10-23 2017-08-29 Etron Technology, Inc. System-in-package module with memory
US9454422B2 (en) * 2014-01-30 2016-09-27 International Business Machines Corporation Error feedback and logging with memory on-chip error checking and correcting (ECC)
US20150234726A1 (en) * 2014-02-19 2015-08-20 Brian P. Moran Apparatus, system and method to provide platform support for multiple memory technologies
US20160092383A1 (en) * 2014-09-26 2016-03-31 Kuljit S. Bains Common die implementation for memory devices
US9811420B2 (en) * 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
US9817714B2 (en) * 2015-08-28 2017-11-14 Intel Corporation Memory device on-die error checking and correcting code

Also Published As

Publication number Publication date
US10120749B2 (en) 2018-11-06
CN109661654B (zh) 2023-09-19
WO2018063698A1 (en) 2018-04-05
US20180095821A1 (en) 2018-04-05
CN109661654A (zh) 2019-04-19
KR102501147B1 (ko) 2023-02-20
KR20190049710A (ko) 2019-05-09

Similar Documents

Publication Publication Date Title
DE112017004966T5 (de) Erweiterte anwendung eines fehlerprüfungs- und korrekturcodes in einem speicher
DE102020104367A1 (de) Refresh-befehlssteuerung für eine hostunterstützung einer rowhammer-mitigation
DE112016004243T5 (de) Hybrides Auffrischen mit verborgenen Auffrischungen und externen Auffrischungen
DE112017006599T5 (de) Programmierbare datenstruktur zum wiederholten schreiben in einen speicher
DE112017004268T5 (de) Befehlsbus mit doppelter datenrate
EP2324431B1 (de) Eingangs-ausgangs-modul, verarbeitungsplattform und verfahren zur erweiterung einer speicherschnittstelle für eingangs-ausgangs-operationen
DE112015003397T5 (de) Vorrichtung, System und Verfahren zur Bestimmung von Vergleichsinformationen basierend auf Speicherdaten
DE102017104448A1 (de) Datenspeichervorrichtung
DE112017003334T5 (de) Lastreduzierte nichtflüchtige speicherschnittstelle
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE112016004314T5 (de) Programmierbare zeitgebung von chipinterner terminierung in einem mehrrangigen system
DE102018122491A1 (de) Halbleiterspeichervorrichtung und verfahren zum betreiben derselben
DE112017001020T5 (de) Unterstützung einer vielzahl von speichertypen in einem speichersteckplatz
TW201638966A (zh) 自晶粒上動態隨機存取記憶體(ram)錯誤校正碼(ecc)擷取選擇性資訊的技術
DE112012006161T5 (de) Integrierter Selbsttest für Stapelspeicherarchitektur
DE112022000580T5 (de) Reduzierung der Latenzauswirkungen von Fehlerprüfung und Korrektur auf dem Chip (ECC)
DE112006000644T5 (de) Speichereinrichtungskommunikation unter Verwendung eines Systemspeicherbusses
US10599206B2 (en) Techniques to change a mode of operation for a memory device
DE112016006203T5 (de) Verfahren zum zugreifen auf ein dual in-line memory-modul über mehrere datenkanäle oder betreiben desselben
DE102012104474A1 (de) Speichervorrichtung
DE112012005617T5 (de) Speicherung von Daten in Speichermodulpuffern
DE102020133664A1 (de) Initialisierung und Leistungsausfallisolation eines Speichermoduls in einem System
CN107533349A (zh) 具有中央化存储装置的电力受保护存储器
CN107402901A (zh) 由两个或更多处理器共享的存储设备和包括其的系统
DE102021122170A1 (de) Adaptive fehlerbereinigung und fehlerbehandlung für internen speicher