DE102022130683A1 - Kalibrierung einer digitalen verzögerungsleitung mit tastgradkorrektur für eine speicherschnittstelle mit hoher bandbreite - Google Patents

Kalibrierung einer digitalen verzögerungsleitung mit tastgradkorrektur für eine speicherschnittstelle mit hoher bandbreite Download PDF

Info

Publication number
DE102022130683A1
DE102022130683A1 DE102022130683.6A DE102022130683A DE102022130683A1 DE 102022130683 A1 DE102022130683 A1 DE 102022130683A1 DE 102022130683 A DE102022130683 A DE 102022130683A DE 102022130683 A1 DE102022130683 A1 DE 102022130683A1
Authority
DE
Germany
Prior art keywords
clock signal
phase
reference clock
calibration
delay
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
DE102022130683.6A
Other languages
English (en)
Inventor
Ish CHADHA
Virendra Kumar
Abhijith Kashyap
Vipul KATYAL
Hao-Yi Wei
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102022130683A1 publication Critical patent/DE102022130683A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/06Arrangements for interconnecting storage elements electrically, e.g. by wiring
    • G11C5/063Voltage and signal distribution in integrated semi-conductor memory access lines, e.g. word-line, bit-line, cross-over resistance, propagation delay
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/003Modifications for increasing the reliability for protection
    • H03K19/00323Delay compensation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • H03K19/1774Structural details of routing resources for global signals, e.g. clock, reset
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/1778Structural details for adapting physical parameters
    • H03K19/17784Structural details for adapting physical parameters for supply voltage

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Pulse Circuits (AREA)

Abstract

Ausführungsbeispiele umfassen ein Speichergerät mit einer verbesserten Kalibrierungsschaltung. Die Eingabe-/Ausgabepins des Speichergeräts enthalten Verzögerungsleitungen zum Anpassen der Verzögerung in jedem Pfad des Eingangs-/Ausgangssignals des Speichers. Die Schaltung zur Einstellung der Verzögerung umfasst digitale Verzögerungsleitungen zum Anpassen dieser Verzögerung. Weiter wird jede digitale Verzögerungsleitung über einen digitale Verzögerungsleitungs-Locked-Loop kalibriert, der eine Anpassung der Verzögerung durch die digitale Verzögerungsleitung in Bruchteilen eines Einheitsintervalls über Variationen hinweg ermöglicht, die durch Unterschiede in Herstellungsprozessen, der Betriebsspannung und der Betriebstemperatur verursacht werden. Die offenbarten Techniken kalibrieren die digitalen Verzögerungsleitungen durch Messung sowohl der Hochphase als auch der Tiefphase des Taktsignals. Folglich kompensieren die offenbarten Techniken die Tastgraddistortion durch Kombination der Kalibrierungsergebnisse beider Phasen des Taktsignals. Die offenbarten Techniken führen dadurch zu einem geringeren Kalibrierungsfehler im Vergleich zu Ansätzen, die nur eine Phase des Taktsignals messen.

Description

  • HINTERGRUND
  • Gebiet der verschiedenen Ausführungsbeispiele
  • Verschiedene Ausführungsbeispiele beziehen sich allgemein auf Rechnersysteme und insbesondere auf eine Kalibrierung digitaler Verzögerungsleitungen mit Tastgradkorrektur für Speicherschnittstellen mit hoher Bandbreite.
  • Beschreibung des Standes der Technik
  • Ein Rechnersystem umfasst im Allgemeinen unter anderem eine oder mehrere Recheneinheiten, wie zentrale Recheneinheiten (CPUs) und/oder Grafikverarbeitungseinheiten (GPUs), und ein oder mehrere Speichersysteme. Eine Art von Speichersystem wird als Systemspeicher bezeichnet, auf den sowohl die CPU(s) als auch die GPU(s) zugreifen können. Eine andere Art von Speichersystem ist der Grafikspeicher, auf den in der Regel nur die GPU(s) zugreifen können. Diese Speichersysteme umfassen mehrere Speichergeräte. Speichersysteme für leistungsstarke Rechnersysteme umfassen häufig Speichersysteme mit hoher Bandbreite (High Bandwidth Memory, HBM) für zumindest einen Teil des Speichers, auf den ein oder mehrere Prozessoren, wie die CPU(s), die GPU(s) und/oder dergleichen, Zugriff haben. Die in HBM-Systemen verwendeten Speichergeräte werden hier als HBM Dynamic Random Access Memory (DRAM) Geräte bezeichnet. Aufeinanderfolgende Generationen von HBM-Speichersystemen werden im Allgemeinen schneller und leistungsfähiger. So operiert beispielsweise die HBM3-Schnittstelle mit etwa der doppelten Frequenz von HBM-Systemen früherer Generationen. Bei höheren Betriebsfrequenzen, wie bei HBM3-Systemen, werden die Schnittstellen zwischen HBM-DRAM und dem/den Prozessor(en) einem Schnittstellentraining unterzogen. Dieses Schnittstellentraining wird durchgeführt, um die strengeren zeitlichen Anforderungen zu erfüllen, die mit höheren Betriebsfrequenzen des Kommunikationskanals zwischen HBM-DRAM und dem/den Prozessor(en) assoziiert sind. Das Schnittstellentraining berücksichtigt auch zeitliche Variationen, die sich aus Prozess-, Spannungs- und/oder Temperaturschwankungen (process voltage temperature, PVT) ergeben. Dieses Schnittstellentraining stellt sicher, dass jedes E/A-Datensignal vom Speichergerät auf der gleichen Flanke des Taktsignals erfasst wird.
  • Das Schnittstellentraining umfasst ein Training der Leseschnittstelle und der Schreibschnittstelle und beinhaltet die Änderung des Timings (Zeitablauf, Zeitsteuerung) der Lese- oder Schreibdaten, so dass sie zum Zeitpunkt des Taktsignals, das die Lesedaten oder Schreibdaten sampelt (abtastet), stabil sind. Dieser stabile Teil der Lese- oder Schreibdaten hat das Aussehen eines Augenmusters auf einem Signalanalysegerät. Daher wird das Ändern des Timings von Lese- oder Schreibdaten, um zum Zeitpunkt des Taktsignals stabil zu sein, hier als Augenzentrierung bezeichnet. Zur Vermeidung von Flächen- und Stromverbrauch auf dem Die von HBM-DRAM-Geräten wird die Augenzentrierung von der GPU oder einem anderen Prozessor durchgeführt. Die Augenzentrierung umfasst das Anpassen einer Verzögerung im Pfad für die Eingabe/Ausgabe (E/A) des Speichers. Die Schaltung zur Anpassung der Verzögerung umfasst digitale Verzögerungsleitungen zur Anpassung der Verzögerung, die kleiner oder gleich einem Einheitsintervall (UI) ist, und Barrel Shifter zur Anpassung der Verzögerung, die mehr als ein Einheitsintervall (in Einheitsintervallschritten) beträgt. In einigen Beispielen entspricht ein Einheitsintervall der Hälfte der Periode des Referenztaktsignals des Systems.
  • Bei HBM-Systemen hat jedes HBM-DRAM-Gerät eine große Anzahl von Daten-E/A-Pins, beispielsweise 1024 Daten-E/A-Pins, und jeder Daten-E/A-Pin hat ein separates, unabhängig steuerbares Verzögerungselement, wobei jedes Verzögerungselement eine digitale Verzögerungsleitung umfasst. In einigen Beispielen haben HBM-DRAM-Geräte die 16-fache Anzahl von Daten-E/A-Pins im Vergleich zu GDDR-Speichergeräten und/oder LPDDR-Speichergeräten.
  • Digitale Verzögerungsleitungen ermöglichen einen geringeren Stromverbrauch im Vergleich zu anderen Implementierungen, wie z. B. analogen Verzögerungsleitungen. Diese digitalen Verzögerungsleitungen werden kalibriert, um PVT-Variationen anzupassen. Diese Kalibrierung wird über eine digitale Verzögerungsleitungs-Locked-Loop (digital delay line locked loop, DDLL) erreicht, die eine Anpassung der Verzögerung durch eine entsprechende digitale Verzögerungsleitung in Bruchteilen eines Einheitsintervalls über PVT-Variationen ermöglicht. Diese PVT-Variationen können eine Abweichung der Periode oder Dauer des Taktzyklus verursachen. Daher kann der DDLL so konfiguriert werden, dass sie die Hochphase des Taktzyklus misst. Die Verzögerung durch die digitale Verzögerungsleitung wird basierend auf der Messung der Hochphase des Taktzyklus angepasst. Alternativ dazu kann der DDLL so konfiguriert werden, dass sie die Tiefphase des Taktzyklus misst. Die Verzögerung durch die digitale Verzögerungsleitung wird basierend auf der Messung der niedrigen Phase des Taktzyklus angepasst.
  • Ein Problem bei diesem Ansatz ist, dass die Kalibrierung einer digitalen Verzögerungsleitung für nur eine Phase des Taktsignals ungenau ist, wenn der Tastgrad (Tastverhältnis) des Taktsignals nicht 50% beträgt. Der Tastgrad des Taktsignals kann aufgrund von Fehlern wie Tastgraddistortion (duty cycle distortion, DCD) von 50% abweichen. Systemische Tastgraddistortion in Taktsignalen kann unter Umständen zu Ungenauigkeiten beim nachführen (engl. lock) der DDLL führen. Beispielsweise kann das Referenztaktsignal eine Hochphase haben, die 40% der Taktsignalperiode beträgt, und eine Tiefphase, die 60% der Taktsignalperiode beträgt. Wenn der DDLL so konfiguriert ist, dass sie die Hochphase des Taktsignals misst, kann der DDLL bestimmen, dass das Einheitsintervall 40% der Taktsignalperiode und nicht 50% beträgt. Wenn der DDLL so konfiguriert ist, dass sie die Tiefphase des Taktzyklus misst, kann der DDLL bestimmen, dass das Einheitsintervall 60% der Taktzyklusperiode beträgt und nicht 50%. In beiden Fällen führt dieser Fehler beim Bestimmen des Einheitsintervalls zu Ungenauigkeiten bei der Kalibrierung. Diese Kalibrierungsungenauigkeiten können die Timing-Margen (timing margin, dt. auch Timing-Margen, Zeitfenster, Taktbegrenzungen) des gesamten Signalkanals der Daten-E/A-Pins verringern. Da die Timing-Margen mit zunehmender Frequenz des Signalkanals kritischer werden, führen diese Ungenauigkeiten zu reduzierten Betriebsgeschwindigkeiten für leistungsstarke HBM-DRAM-Speichergeräte, um zuverlässige Speicherlese- und Schreibvorgänge zu gewährleisten.
  • Es gibt vergleichbare Techniken zur Korrektur der Tastgraddistortion, die analoge Verzögerungsleitungs-Locked-Loops verwenden, die analoge Verzögerungsleitungen, analoge Ladungspumpen und/oder Ähnliches umfassen. Solche analogen Systeme verbrauchen jedoch im Allgemeinen mehr Chipfläche und Leistung im Vergleich zu digitalen Ansätzen. Angesichts der großen Anzahl von Signalen zur Unterstützung der Daten-IO-Pins in HBM-DRAM-Geräten verbrauchen analoge Verzögerungsleitungs-Locked-Loops eine nicht realisierbare Menge an Chipfläche und Energie.
  • Wie die vorangegangenen Ausführungen zeigen, werden in der Technik effektivere Techniken zur Kompensation von Tastgraddistortion in Speichergeräten benötigt.
  • ZUSAMMENFASSUNG
  • In verschiedenen Ausführungsbeispielen der vorliegenden Offenbarung wird ein computer-implementiertes Verfahren zum Kalibrieren einer Verzögerungsleitung für ein Speichergerät beschrieben. Das Verfahren umfasst ein Auswählen einer ersten Phase eines Referenztaktsignals. Das Verfahren enthält weiterhin ein Bestimmen eines ersten Kalibrierungswertes, über die Verzögerungsleitung, basierend auf der ersten Phase des Referenztaktes. Das Verfahren enthält weiter ein Auswählen einer zweiten Phase des Referenztaktsignals. Das Verfahren enthält weiter ein Bestimmen eines zweiten Kalibrierungswertes, über die Verzögerungsleitung, basierend auf der zweiten Phase des Referenztaktes. Das Verfahren enthält weiter ein Kombinieren des ersten Kalibrierungswertes und des zweiten Kalibrierungswertes, um einen dritten Kalibrierungswert für die digitale Verzögerungsleitung zu generieren.
  • Andere Ausführungsbeispiele umfassen, ohne Einschränkung, ein System, das einen oder mehrere Aspekte der offenbarten Techniken implementiert, und ein oder mehrere computerlesbare Medien, die Anweisungen zur Durchführung eines oder mehrerer Aspekte der offenbarten Techniken enthalten, sowie ein Verfahren zur Durchführung eines oder mehrerer Aspekte der offenbarten Techniken.
  • Zumindest ein technischer Vorteil der offenbarten Techniken gegenüber dem herkömmlichen Stand der Technik besteht darin, dass bei den offenbarten Techniken beide Phasen des Taktsignals gemessen werden, wenn die Verzögerungsleitungen für die E/As des Speichergeräts angepasst werden. Infolgedessen basiert die Kalibrierung der Verzögerungsleitungen auf einer genaueren Messung der vollen Taktzyklusperiode im Vergleich zu früheren Techniken, selbst wenn der Taktzyklus einer Tastgraddistortion unterliegt. Da die Kalibrierung des Speichergeräts genauer ist, kann das Speichergerät mit höheren Geschwindigkeiten operieren, was zu einer verbesserten Speicherleistung im Vergleich zu früheren Techniken führt. Ein weiterer technischer Vorteil der offenbarten Technik besteht darin, dass digitale Verzögerungsleitungen, die sich über ein Einheitsintervall erstrecken, verwendet werden können, um das Taktsignal über zwei Einheitsintervalle zu verfolgen. Dadurch werden die Chipfläche und der Stromverbrauch im Vergleich zu Implementierungen mit digitalen Verzögerungsleitungen, die zwei Einheitsintervalle umfassen, reduziert. Diese Vorteile repräsentieren eine oder mehrere technologische Verbesserungen gegenüber den Ansätzen der herkömmlichen Technik.
  • Figurenliste
  • Damit die Art und Weise, in der die oben genannten Merkmale der verschiedenen Ausführungsformen im Detail verstanden werden können, kann eine detailliertere Beschreibung der erfinderischen Konzepte, die oben kurz zusammengefasst wurden, durch Bezugnahme auf verschiedene Ausführungsbeispiele erfolgen, von denen einige in den beigefügten Zeichnungen dargestellt sind. Es ist jedoch zu beachten, dass die beigefügten Zeichnungen nur typische Ausführungsbeispiele der erfindungsgemäßen Konzepte darstellen und daher in keiner Weise als Einschränkung des Umfangs zu betrachten sind, und dass es andere, ebenso geeignete Ausführungsbeispiele gibt.
    • 1 zeigt ein Blockdiagramm eines Rechnersystems, das zum Implementieren eines oder mehrerer Aspekte der verschiedenen Ausführungsbeispiele konfiguriert ist;
    • 2 zeigt ein Blockdiagramm einer Kalibrierungsschaltung für ein Rechengerät, das im Systemspeicher und/oder im Parallelverarbeitungsspeicher des Rechnersystems von 1 enthalten ist, gemäß verschiedenen Ausführungsbeispielen;
    • 3 zeigt ein Timing-Diagramm, das ein Referenztaktsignal mit Tastgraddistortion darstellt, gemäß verschiedenen Ausführungsbeispielen;
    • 4 zeigt ein Timing-Diagramm, das Taktsignale darstellt, die gemäß verschiedenen Ausführungsbeispielen durch die Kalibrierungsschaltung von 2 kalibriert wurden; und
    • 5 zeigt ein Flußdiagramm mit Verfahrensschritten zum Kalibrieren einer Verzögerungsleitung für ein Speichergerät, das im Systemspeicher und/oder im Parallelverarbeitungsspeicher des Rechnersystems von 1 enthalten ist, gemäß verschiedenen Ausführungsbeispielen.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, um ein gründlicheres Verständnis der verschiedenen Ausführungsbeispiele bereitzustellen. Dem Fachmann wird jedoch klar sein, dass die erfindungsgemäßen Konzepte auch ohne eines oder mehrere dieser spezifischen Details ausgeführt werden können.
  • Systemübersicht
  • 1 ist ein Blockdiagramm eines Rechnersystems 100, das zur Implementierung eines oder mehrerer Aspekte der verschiedenen Ausführungsbeispiele konfiguriert ist. Wie gezeigt, umfasst das Rechnersystem 100 ohne Einschränkung eine Zentraleinheit (CPU) 102 und einen Systemspeicher 104, der über eine Speicherbrücke 105 und einen Kommunikationspfad 113 mit einem Beschleunigerverarbeitungssubsystem 112 gekoppelt ist. Die Speicherbrücke 105 ist mit dem Systemspeicher 104 über einen Systemspeicher-Controller 130 gekoppelt. Die Speicherbrücke 105 ist weiter mit einer E/A-Brücke (Eingabe/Ausgabe) 107 über einen Pfad 106 gekoppelt, und die E/A-Brücke 107 ist wiederum mit einem Switch 116 gekoppelt. Das Beschleunigerverarbeitungssubsystem 112 ist über einen Beschleunigerverarbeitungssubsystem (APS)-Speicher-Controller 132 mit dem Parallelverarbeitungsspeicher 134 gekoppelt.
  • Im Betrieb ist die E/A-Brücke 107 so konfiguriert, dass sie Benutzereingabeinformationen von Eingabegeräten 108, wie z. B. einer Tastatur oder einer Maus, empfängt und die Eingabeinformationen über den Kommunikationspfad 106 und die Speicherbrücke 105 an die CPU 102 zur Verarbeitung weiterleitet. Der Switch 116 ist so konfiguriert, dass er Verbindungen zwischen der E/A-Brücke 107 und anderen Komponenten des Rechnersystems 100 bereitstellt, wie z. B. einem Netzwerkadapter 118 und verschiedenen Erweiterungskarten 120 und 121.
  • Wie ebenfalls gezeigt, ist die E/A-Brücke 107 mit einer Systemplatte 114 gekoppelt, die so konfiguriert sein kann, dass sie Inhalte, Applikationen und Daten zur Verwendung durch die CPU 102 und das Beschleunigerverarbeitungssubsystem 112 speichert. Im Allgemeinen stellt die Systemplatte 114 einen nichtflüchtigen Speicher für Applikationen und Daten bereit und kann feste oder entfernbare Festplattenlaufwerke, Flash-Speichergeräte und CD-ROM (Compact Disc Read-Only-Memory), DVD-ROM (Digital Versatile Disc-ROM), Blu-ray, HD-DVD (High-Definition DVD) oder andere magnetische, optische oder Festkörperspeichergeräte umfassen. Schließlich, obwohl nicht explizit dargestellt, können auch andere Komponenten, wie z.B. Universal Serial Bus- oder andere Port-Verbindungen, Compact-Disc-Laufwerke, Digital Versatile Disc-Laufwerke, Filmaufzeichnungsgeräte und dergleichen, an die E/A-Brücke 107 angeschlossen werden.
  • In verschiedenen Ausführungsbeispielen kann die Speicherbrücke 105 ein Northbridge-Chip und die I/O-Brücke 107 ein Southbridge-Chip sein. Darüber hinaus können die Kommunikationspfade 106 und 113 sowie andere Kommunikationspfade innerhalb des Rechnersystems 100 unter Verwendung beliebiger technisch geeigneter Protokolle implementiert werden, einschließlich, ohne Einschränkung, Peripheral Component Interconnect Express (PCIe), AGP (Accelerated Graphics Port), HyperTransport oder jedes andere Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll, das in der Technik bekannt ist.
  • In einigen Ausführungsbeispielen umfasst das Beschleunigerverarbeitungssubsystem 112 ein Grafik-Subsystem, das Pixel an ein Anzeigegerät 110 liefert, bei dem es sich um eine herkömmliche Kathodenstrahlröhre, Flüssigkristallanzeige, Leuchtdiodenanzeige und/oder Ähnliches handeln kann. In solchen Ausführungsbeispielen enthält das Beschleunigerverarbeitungssubsystem 112 Schaltungen, die für die Grafik- und Videoverarbeitung optimiert sind, z. B. Schaltungen für die Videoausgabe. Solche Schaltkreise können in einem oder mehreren Beschleunigern innerhalb des Beschleunigerverarbeitungssubsystems 112 enthalten sein. Ein Beschleuniger umfasst eine oder mehrere Verarbeitungseinheiten, die Anweisungen ausführen können, wie z. B. eine Zentraleinheit (CPU), eine Parallelverarbeitungseinheit (PPU), eine Grafikverarbeitungseinheit (GPU), eine Intelligenzverarbeitungseinheit (IPU), eine neuronale Verarbeitungseinheit (NAU), eine Tensorverarbeitungseinheit (TPU), einen neuronalen Netzwerkprozessor (NNP), eine Datenverarbeitungseinheit (DPU), eine Bildverarbeitungseinheit (VPU), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) und/oder dergleichen.
  • In einigen Ausführungsbeispielen enthält das Beschleunigerverarbeitungssubsystem 112 Schaltungen, die für allgemeine Zwecke und/oder Verfahren zum Berechnen optimiert sind. Auch hier kann eine solche Schaltung in einem oder mehreren Beschleunigern enthalten sein, die im Beschleunigerverarbeitungssubsystem 112 enthalten sind und so konfiguriert sind, dass sie solche Allzweck- und/oder Rechenverfahren durchführen. In weiteren Ausführungsbeispielen können der eine oder die mehreren Beschleuniger, die im Beschleunigerverarbeitungssubsystem 112 enthalten sind, so konfiguriert sein, dass sie Grafikverarbeitungs-, generelle Verarbeitungs- und Rechenverarbeitungsvorgänge durchführen. Der Systemspeicher 104 enthält zumindest einen Gerätetreiber 103, der so konfiguriert ist, dass er die Verarbeitungen des einen oder der mehreren Beschleuniger innerhalb des Beschleunigerverarbeitungssubsystems 112 verwaltet.
  • In verschiedenen Ausführungsbeispielen kann das Beschleunigerverarbeitungssubsystem 112 mit einem oder mehreren anderen Elementen der 1 integriert werden, um ein einziges System zu bilden. Beispielsweise kann das Beschleunigerverarbeitungssubsystem 112 mit der CPU 102 und anderen Verbindungsschaltungen auf einem einzigen Chip integriert werden, um ein System on Chip (SoC) zu bilden.
  • Im Betrieb ist die CPU 102 der Hauptprozessor des Rechnersystems 100, der die Operationen der anderen Systemkomponenten steuert und koordiniert. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb von Beschleunigern innerhalb des Beschleunigerverarbeitungssubsystems 112 steuern. In einigen Ausführungsbeispielen schreibt die CPU 102 einen Stream von Befehlen für Beschleuniger innerhalb des Beschleunigerverarbeitungssubsystems 112 in eine Datenstruktur (in 1 nicht explizit dargestellt), die sich im Systemspeicher 104, im PP-Speicher 134 oder einem anderen Ort befinden kann, auf den sowohl die CPU 102 als auch die Beschleuniger zugreifen können. Ein Zeiger auf die Datenstruktur wird in einen Pushbuffer geschrieben, um das Verfahren zum Verarbeiten des Streams von Befehlen in der Datenstruktur zu initiieren. Der Beschleuniger liest Befehlsströme aus dem Pushbuffer und führt die Befehle dann asynchron zum Betrieb der CPU 102 aus. In Ausführungsbeispielen, in denen mehrere Pushbuffer generiert werden, können die Ausführungsprioritäten für jeden Pushbuffer von einem Anwendungsprogramm über den Gerätetreiber 103 festgelegt werden, um die Planung der verschiedenen Pushbuffer zu steuern.
  • Jeder Beschleuniger enthält eine E/A-Einheit (Eingabe/Ausgabe), die über den Kommunikationspfad 113 und die Speicherbrücke 105 mit dem übrigen Rechnersystem 100 kommuniziert. Diese E/A-Einheit generiert Pakete (oder andere Signale) für die Übertragung auf dem Kommunikationspfad 113 und empfängt auch alle eingehenden Pakete (oder andere Signale) vom Kommunikationspfad 113, wobei sie die eingehenden Pakete zu den entsprechenden Komponenten des Beschleunigers leitet. Die Verbindung der Beschleuniger mit dem übrigen Rechnersystem 100 kann unterschiedlich sein. In einigen Ausführungsbeispielen ist das Beschleunigerverarbeitungssubsystems 112, das mindestens einen Beschleuniger enthält, als Erweiterungskarte implementiert, die in einen Erweiterungssteckplatz des Rechnersystems 100 eingesetzt werden kann. In anderen Ausführungsbeispielen können die Beschleuniger auf einem einzigen Chip mit einer Busbrücke, wie der Speicherbrücke 105 oder der E/A-Brücke 107, integriert sein. Wiederum in anderen Ausführungsbeispielen können einige oder alle Elemente der Beschleuniger zusammen mit der CPU 102 in einem einzigen integrierten Schaltkreis oder System of Chip (SoC) enthalten sein.
  • Die CPU 102 und die Beschleuniger innerhalb des Beschleunigerverarbeitungssubsystems 112 greifen über einen Systemspeicher-Controller 130 auf den Systemspeicher zu. Der Systemspeicher-Controller 130 überträgt Signale an die im Systemspeicher 104 enthaltenen Speichergeräte, um die Speichergeräte zu initialisieren, Befehle an die Speichergeräte zu übertragen, Daten in die Speichergeräte zu schreiben, Daten aus den Speichergeräten zu lesen und/oder Ähnliches. Ein Beispiel für ein im Systemspeicher 104 verwendetes Speichergerät ist ein SDRAM mit doppelter Datenrate (DDR SDRAM oder kurz: DDR). DDR-Speichergeräte führen Speicherschreib- und Leseoperationen mit der doppelten Datenrate der früheren Generation von SDR-Speichergeräten (Single Data Rate) durch. In einigen Beispielen können HBM-DDR-Speichergeräte im Systemspeicher und/oder anderen Speichersystemen eingesetzt werden, auf die die CPU 102 zugreifen kann.
  • Darüber hinaus greifen Beschleuniger und/oder andere Komponenten innerhalb des Beschleunigerverarbeitungssubsystems 112 über einen Beschleunigerverarbeitungssubsystem (APS)-Speicher-Controller 132 auf den PP-Speicher 134 zu. Die APS-Speichersteuerung 132 überträgt Signale an die im PP-Speicher 134 enthaltenen Speichergeräte, um die Speichergeräte zu initialisieren, Befehle an die Speichergeräte zu übertragen, Daten in die Speichergeräte zu schreiben, Daten aus den Speichergeräten zu lesen und/oder Ähnliches. Ein Beispiel für ein im PP-Speicher 134 verwendetes Speichergerät ist HBM-DRAM. Im Vergleich zu DDR-Speichergeräten sind HBM-DRAM-Speichergeräte mit einer schnelleren E/A-Schnittstelle und einem breiteren Datenbus ausgestattet, um bei jedem Schreib- und Lesevorgang mehr Datenbits übertragen zu können. Durch den Einsatz einer Hochgeschwindigkeitsschnittstelle und eines breiteren Datenbusses sind HBM-DRAM-Speichergeräte in der Lage, die hohen Datenübertragungsraten zu erreichen, die normalerweise von Beschleunigern benötigt werden.
  • Es wird deutlich, dass das hier dargestellte System nur ein Beispiel ist und dass Variationen und Änderungen möglich sind. Die Verbindungstopologie, einschließlich der Anzahl und Anordnung der Brücken, der Anzahl der CPUs 102 und der Anzahl der Beschleunigerverarbeitungssubsysteme 112, kann nach Belieben geändert werden. In einigen Ausführungsbeispielen könnte z. B. der Systemspeicher 104 direkt an die CPU 102 angeschlossen werden, anstatt über die Speicherbrücke 105, und andere Geräte würden mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102 kommunizieren. In anderen alternativen Topologien kann das Beschleunigerverarbeitungssubsystem 112 an die E/A-Brücke 107 oder direkt an die CPU 102 angeschlossen werden, anstatt an die Speicherbrücke 105. In weiteren Ausführungsbeispielen können die E/A-Brücke 107 und die Speicherbrücke 105 in einen einzigen Chip integriert werden, anstatt als ein oder mehrere diskrete Geräte zu existieren. Schließlich können in bestimmten Ausführungsbeispielen eine oder mehrere der in 1 gezeigten Komponenten nicht vorhanden sein. So könnte beispielsweise der Switch 116 entfallen, und der Netzwerkadapter 118 und die Erweiterungskarten 120, 121 würden direkt an die E/A-Brücke 107 angeschlossen.
  • Es wird deutlich, dass die hier beschriebene Kernarchitektur nur ein Beispiel darstellt und dass Variationen und Änderungen möglich sind. Unter anderem kann das Rechnersystem 100 der 1 im Rahmen der offenbarten Ausführungsbeispiele eine beliebige Anzahl von CPUs 102, Beschleunigerverarbeitungssubsystemen 112 oder Speichersystemen, wie Systemspeicher 104 und Parallelverarbeitungsspeicher 134, enthalten. Weiter kann, wie hierin verwendet, die Bezugnahme auf gemeinsam genutzte Speicher einen oder mehrere technisch mögliche Speicher enthalten, einschließlich, ohne Einschränkung, eines lokalen Speichers, der von einem oder mehreren Beschleunigern innerhalb des Beschleunigerverarbeitungssubsystems 112 gemeinsam genutzt wird, eines Speichers, der von mehreren Beschleunigerverarbeitungssubsystemen 112 gemeinsam genutzt wird, eines Cache-Speichers, eines Parallel-Verarbeitungsspeichers 134 und/oder eines Systemspeichers 104. Bitte beachten Sie auch, dass Verweise auf Cache-Speicher, wie sie hier verwendet werden, einen oder mehrere technisch mögliche Speicher umfassen können, einschließlich, ohne Einschränkung, einen L1-Cache, einen L1.5-Cache und L2-Caches. In Anbetracht der vorstehenden Ausführungen werden Fachleute verstehen, dass die in 1 beschriebene Architektur den Umfang der verschiedenen Ausführungsbeispiele der vorliegenden Offenbarung in keiner Weise einschränkt.
  • Kalibrieren einer digitalen Verzögerungsleitung für ein Speichergerät
  • Verschiedene Ausführungsbeispiele umfassen eine verbesserte Kalibrierungsschaltung für ein Speichergerät, wie z. B. ein HBM-DRAM-Gerät. E/As von Speichergeräten enthalten Verzögerungsleitungen zum Anpassen der Verzögerung im Pfad der Speicher-E/A-Signale. Die Verzögerungsanpassungsschaltung umfasst digitale Verzögerungsleitungen zum Anpassen dieser Verzögerung. Weiter wird jede digitale Verzögerungsleitung über einen digitale Verzögerungsleitungs-Locked-Loop (digital delay line locked loop, DDLL) kalibriert, die eine Anpassung der Verzögerung durch die digitale Verzögerungsleitung in Bruchteilen eines Einheitsintervalls über PVT-Variationen ermöglicht. Die offenbarten Techniken kalibrieren die digitalen Verzögerungsleitungen durch Messung sowohl der Hochphase als auch der Tiefphase des Taktsignals. Infolgedessen kompensieren die offenbarten Techniken die Tastgraddistortion durch Kombination der Kalibrierungsergebnisse beider Phasen des Taktsignals.
  • 2 ist ein Blockdiagramm einer Kalibrierungsschaltung 200 für ein Speichergerät, das im Systemspeicher und/oder im Parallelverarbeitungsspeicher des Rechnersystems 100 von 1 enthalten ist, gemäß verschiedenen Ausführungsbeispielen. Wie gezeigt, umfasst die Kalibrierungsschaltung 200 ohne Einschränkung einen Multiplexer 202, eine Verzögerungsleitung 212, ein Einfügungsverzögerungselement 214, ein D-Flip-Flop 220, einen Phasenfilter 224, eine Zustandsmaschine (engl. state machine) 226, eine Fehleranpassungslogik 228 und speicherzugeordnete Register 230.
  • Im Betrieb wählt der Multiplexer 202 das Eingangstaktsignal CLKP 204 oder das invertierte Eingangstaktsignal CLKN 206 basierend auf dem Phasenauswahlsignal 240 aus. In einigen Beispielen sind das Eingangstaktsignal CLKP 204 und das invertierte Eingangstaktsignal CLKN 206 zwei Phasen eines Systemtaktsignals, das von einem Phasenregelkreis (PLL) und/oder einem anderen geeigneten Taktsignalgenerator generiert wird. Das invertierte Eingangstaktsignal CLKN 206 ist eine logische Inversion des Eingangstaktsignals CLKP 204. Die Zustandsmaschine 226 überträgt das Phasenauswahlsignal 240 an den Multiplexer 202 mit einem Logikpegel, der darauf basiert, welche Phase des Taktsignals die Kalibrierschaltung 200 gerade misst. Wenn die Kalibrierungsschaltung 200 gerade die High-Phase des Taktsignals misst, überträgt die Zustandsmaschine 226 das Phasenauswahlsignal 240 mit einem Logikpegel, der das Eingangstaktsignal CLKP 204 auswählt. Misst die Kalibrierungsschaltung 200 dagegen gerade die Tiefphase des Taktsignals, so überträgt die Zustandsmaschine 226 das Phasenauswahlsignal 240 mit einem Logikpegel, der das invertierte Eingangstaktsignal CLKN 206 auswählt. Der Multiplexer 202 überträgt das ausgewählte Taktsignal als Referenztaktsignal 210.
  • Die Verzögerungsleitung 212 verzögert das vom Multiplexer 202 empfangene Referenztaktsignal 210. Der Betrag der Verzögerung durch die Verzögerungsleitung 212 basiert auf einem Abgriffsauswahlsignal (engl. tap select signal) 242, das von der Zustandsmaschine 226 an die Verzögerungsleitung 212 übertragen wird. Das Abgriffsauswahlsignal 242 kann ein digitaler Wert sein, der eine Anzahl von N Abgriffen repräsentiert, wobei jeder Abgriff das 1/Nfache des Einheitsintervalls darstellt. In einigen Beispielen kann das Abgriffsauswahlsignal 242 ein 6-Bit-Digitalwert sein, der von 0 bis 63 variiert, wobei das Abgriffsauswahlsignal 242 die Anzahl der Abzweigungen der Verzögerung durch die Verzögerungsleitung 212 angibt. Ein Abgriffsauswahlsignal von 1 zeigt eine Verzögerung von 1 Tap an, ein Abgriffsauswahlsignal von 2 zeigt eine Verzögerung von 2 Tap an, ein Abgriffsauswahlsignal von 3 zeigt eine Verzögerung von 3 Tap an usw. Wenn das Abgriffsauswahlsignal 242 0 ist, gibt es keine Verzögerungsstufen. Stattdessen ist die einzige Verzögerung die Einfügungsverzögerung der Leitung 212. Diese Einfügungsverzögerung der Verzögerungsleitung 212 wird als ID bezeichnet. Die Verzögerungsleitung 212 generiert ein verzögertes Taktsignal 216, das das Referenztaktsignal 210 repräsentiert, das um die Anzahl der durch das Abgriffsauswahlsignal 242 und die Einfügungsverzögerung der Verzögerungsleitung 212 ausgewählten Abgriffe verzögert ist.
  • Das Einfügungsverzögerungselement 214 repräsentiert die Einfügungsverzögerung auf dem unverzögerten Pfad. Diese Einfügungsverzögerung wird als IN bezeichnet. Das Einfügungsverzögerungselement 214 generiert ein unverzögertes Taktsignal 218, das das Referenztaktsignal 210 repräsentiert, wie es durch die Einfügungsverzögerung auf dem unverzögerten Pfad verzögert ist.
  • Das D-Flipflop 220 dient als Phasendetektor für die Kalibrierungsschaltung 200. Die Daten (D)-Eingabe des D-Flipflops 220 ist das verzögerte Taktsignal 216, das von der Verzögerungsleitung 212 generiert wird. Die Takteingabe des D-Flipflops 220 ist das nicht verzögerte Taktsignal 218, das durch das Einfügungsverzögerungselement 214 generiert wird. Das D-Flipflop 220 generiert ein Signal zum Detektieren der Phase 222, indem es das verzögerte Taktsignal 216 bei einem Übergang des unverzögerten Taktsignals 218 sampled (abtastet). Der Übergang kann die steigende Flanke des unverzögerten Taktsignals 218 oder die fallende Flanke des unverzögerten Taktsignals 218 sein. Die Zustandsmaschine 226 modifiziert das Abgriffsauswahlsignal 242 während der Kalibrierung, um das verzögerte Taktsignal 216 mit verschiedenen Abgriffsverzögerungen über die Verzögerungsleitung 212 auszuwählen.
  • Der Phasenfilter 224 tastet das Phasendetektionssignal 222 mehrfach ab. In einigen Beispielen ist die Anzahl der Samples (Abtastungen) und die Filterfunktion über die Software-Schnittstelle 232 programmierbar. Der Phasenfilter 224 generiert ein gefiltertes Phasendetektionssignal 244 durch Anwendung einer Filterfunktion auf einen Satz von Samples des Phasendetektionssignals 222, wobei das Phasendetektionssignal 222 ein Sample des verzögerten Taktsignals 216 ist. Die Funktion kann eine arithmetische Durchschnittsfunktion, eine gewichtete Durchschnittsfunktion, eine geometrische Durchschnittsfunktion und/oder andere Filterfunktionen auf die Samples des Phasendetektionssignals 222 sein. Der Phasenfilter 224 generiert das gefilterte Phasendetektionssignal 244, um die Auswirkungen von Störsignalen, Rauschen und/oder Ähnlichem im Phasendetektionssignal 222 zu reduzieren. Der Phasenfilter 224 überträgt das gefilterte Phasendetektionssignal 244 an die Zustandsmaschine 226.
  • Die Zustandsmaschine 226 steuert die Komponenten der Kalibrierungsschaltung 200 durch zwei Iterationen, um die Verzögerungsleitung 212 zu kalibrieren, eine Iteration für jede Phase des Referenztaktsignals 210. In einer ersten Iteration sendet die Zustandsmaschine 226 das Phasenauswahlsignal 240 mit einem Logikpegel, der das Eingangstaktsignal CLKP 204 auswählt. In einer zweiten Iteration überträgt die Zustandsmaschine 226 das Phasenauswahlsignal 240 mit einem Logikpegel, der das invertierte Eingangstaktsignal CLKN 206 auswählt.
  • Während jeder Iteration ändert die Zustandsmaschine 226 das Abgriffsauswahlsignal 242 über eine Anzahl von Zyklen des Referenztaktsignals 210, um eine unterschiedliche Anzahl von Abgriffen (engl. tap) für die Verzögerungsleitung 212 auszuwählen. Für jede unterschiedliche Anzahl von Abgriffen bestimmt die Zustandsmaschine 226 den Wert des Abgriffsauswahlsignals 242, wenn das gefilterte Phasendetektionssignal 244 von einem niedrigen Pegel zu einem hohen Pegel übergeht. Ebenso bestimmt die Zustandsmaschine 226 den Wert des Abgriffsauswahlsignals 242, wenn das gefilterte Phasendetektionssignal 244 von einem hohen Pegel zu einem niedrigen Pegel übergeht. Die Zustandsmaschine 226 bestimmt basierend auf diesen beiden Werten des Abgriffsauswahlsignals 242 einen Kalibrierungswert in Form einer Trimmcodeverzögerung der in der aktuellen Iteration getesteten Taktphase. Nachdem die Zustandsmaschine 226 die beiden Iterationen abgeschlossen hat, bestimmt sie einen zusammengesetzten Kalibrierungswert in Form einer zusammengesetzten Trimmcode-Verzögerung, indem sie eine Funktion auf die aus den beiden Iterationen bestimmten Trimmcode-Verzögerungen anwendet. Die Funktion zur Bestimmung der zusammengesetzten Trimmcode-Verzögerung kann auf einem einfachen Durchschnitt der Trimmcode-Verzögerungen für die beiden Phasen, einem gewichteten Durchschnitt der Trimmcode-Verzögerungen, einem geometrischen Mittelwert der Trimmcode-Verzögerungen und/oder Ähnlichem basieren. In einigen Beispielen ist die Funktion über die Software-Schnittstelle 232 programmierbar. Da die zusammengesetzte Trimmcode-Verzögerung auf Trimmcode-Verzögerungen für beide Phasen des Taktsignals basiert, wird der durch die Tastgraddistortion verursachte Fehlerterm im Vergleich zu Techniken, die nur für eine Phase des Taktzyklus kalibrieren, reduziert.
  • Die Fehleranpassungslogik 228 unterstützt die Zustandsmaschine 226 bei dem Kalibrierungsverfahren, einschließlich, aber nicht beschränkt auf das Ändern des Abgriffsauswahlsignals 242 über eine Anzahl von Zyklen des Referenztaktsignals 210, das Bestimmen des Wertes des Abgriffsauswahlsignals 242, wenn das gefilterte Phasendetektionssignal 244 von einem niedrigen Pegel auf einen hohen Pegel oder von einem hohen Pegel auf einen niedrigen Pegel übergeht, das Bestimmen der zusammengesetzten Trimmcodeverzögerung aus den individuellen Trimmcodeverzögerungen, die aus den beiden Iterationen bestimmt wurden, das Bestimmen der Funktion, die auf die Trimmcodeverzögerungen anzuwenden ist, und/oder dergleichen. Dabei ist die Fehleranpassungslogik 228 mit der Zustandsmaschine 226 und speicherzugeordneten Registern 230 gekoppelt und kommuniziert mit ihnen.
  • Speicherzugeordnete Register 230 sind mit der Zustandsmaschine 226 und der Fehleranpassungslogik 228 gekoppelt und kommunizieren mit diesen. Ein oder mehrere Prozessoren 234 schreiben über die Softwareschnittstelle 232 Datenwerte in speicherzugeordnete Register 230 und lesen Datenwerte daraus. Die Softwareschnittstelle 232 ist über einen Kommunikationsbus implementiert. Der eine oder die mehreren Prozessoren 234 können die CPU 102, einen Beschleuniger, einen in der CPU 102 oder einem Beschleuniger enthaltenen Mikrocontroller und/oder dergleichen umfassen.
  • Speicherzugeordnete Register 230 speichern Parameter, die eine benutzerdefinierte Steuerung zur Feinabstimmung der Kalibrierungsschaltung 200 basierend auf den Ergebnissen der Siliziumherstellung und/oder den Ergebnissen des Verfahrens für eine bestimmte Charge von gleichzeitig hergestellten Geräten bereitstellen. Im Allgemeinen haben alle Geräte in einer bestimmten Charge von Geräten ähnliche Charakteristiken in Bezug auf die Variation des Verfahrens. Die Charakteristiken einer Charge von Geräten können sich jedoch von den Charakteristiken einer anderen Charge von Geräten unterscheiden. Darüber hinaus stellt die Software-Schnittstelle einen konfigurierbaren Algorithmus bereit, der basierend auf den Ergebnissen des Trainings der HBM-Schnittstelle in Silizium geändert werden kann.
  • Insbesondere speichern ein oder mehrere Prozessoren 234 über die Software-Schnittstelle 232 Parameter in speicherzugeordneten Registern 230, die verschiedene Aspekte der Kalibrierungsschaltung 200 steuern. In einem Beispiel steuern ein oder mehrere Parameter in den speicherzugeordneten Registern 230 Aspekte des Phasenfilters 224. Der eine oder die mehreren Parameter können die Anzahl der Samples des Phasendetektionssignals 222, die vom Phasenfilter 224 genommen werden, und die vom Phasenfilter 224 verwendete Filterfunktion angeben. In einem anderen Beispiel steuern ein oder mehrere Parameter in speicherzugeordneten Registern 230 Aspekte der Zustandsmaschine 226. Der eine oder die mehreren Parameter können angeben, ob die Zustandsmaschine zuerst die Hochphase des Taktsignals kalibriert oder ob die Zustandsmaschine zuerst die Tiefphase des Taktsignals kalibriert. Der eine oder die mehreren Parameter können die Funktion angeben, die die Zustandsmaschine 226 auf die aus den beiden Iterationen bestimmten Trimmcode-Verzögerungen anwendet, um die zusammengesetzte Trimmcode-Verzögerung zu bestimmen. Die Funktion kann ein einfacher Durchschnitt sein, der durch Addition der beiden Trimmcode-Verzögerungen und Division der Summe durch zwei bestimmt wird. Zusätzlich oder alternativ kann die Funktion ein gewichteter Durchschnitt der beiden Trimmcode-Verzögerungen sein, z. B. 1/3 der Hochphasen-Trimmcode-Verzögerung plus 2/3 der Tiefphasen-Trimmcode-Verzögerung. Zusätzlich oder alternativ kann die Funktion ein geometrischer Mittelwert sein, der durch Multiplikation der beiden Trimmcode-Verzögerungen und Bestimmen der Quadratwurzel des Ergebnisses bestimmt wird, und so weiter.
  • In einigen Beispielen ist die Tastgraddistortion systemisch und statisch. Solche Beispiele umfassen Systeme, bei denen die Auswirkungen von Variationen im Verfahren der dominierende Faktor sind, der die Tastgraddistortion bestimmt, und die Auswirkungen von Spannung und Temperatur relativ gering sind. In solchen Beispielen können die offenbarten Techniken einmal beim Einschalten des Systems, beim Verlassen eines Ruhezustands und/oder ähnlichem durchgeführt werden. Die Zustandsmaschine 226 führt zwei Kalibrierungszyklen für die beiden Phasen des Taktzyklus durch. Die Zustandsmaschine 226 generiert die zusammengesetzte Trimmcode-Verzögerung basierend auf den aus den beiden Iterationen bestimmten Trimmcode-Verzögerungen. Die zusammengesetzte Trimmcode-Verzögerung bleibt während der Zeit, in der das System eingeschaltet und aktiv ist, fest.
  • In einigen Beispielen ist die Tastgraddistortion dynamisch und variiert über die Zeit. Solche Beispiele umfassen Systeme, bei denen die Auswirkungen von Spannungs- und Temperaturvariationen anstelle von oder zusätzlich zu den Auswirkungen von Verfahrensvariationen signifikant sind. In solchen Beispielen können die offenbarten Techniken, wie oben beschrieben, einmal beim Einschalten des Systems, beim Verlassen eines Leerlaufzustands und/oder ähnlichem durchgeführt werden. Darüber hinaus können die offenbarten Techniken periodisch durchgeführt werden, um die zusammengesetzte Trimmcode-Verzögerung als Antwort auf Änderungen der Tastgraddistortion im Laufe der Zeit anzupassen. Die offenbarten Techniken können in regelmäßigen Abständen in einem festgelegten Zeitintervall durchgeführt werden, z. B. in einer festen Anzahl von Mikrosekunden, einer festen Anzahl von Millisekunden und/oder ähnlichem. Zusätzlich oder alternativ können die offenbarten Techniken kontinuierlich durchgeführt werden, indem sich Iterationen der Hochphasen-Kalibrierung mit Iterationen der Tiefphasen-Kalibrierung abwechseln. Auf diese Weise werden Änderungen sowohl der Hochphase des Taktsignals als auch der Tiefphase des Taktsignals über ein rollierendes Fenster gesampelt, und die periodische Variation des Taktsignals wird über den Zeitraum verfolgt. Der Modus der Kalibrierungsschaltung 200, wie z. B. einmalige Kalibrierung, periodische Kalibrierung in einem bestimmten Zeitraum oder kontinuierliche Kalibrierung, kann über die Softwareschnittstelle 232 programmiert werden, so dass das Zeitintervall in den speicherzugeordneten Registern 230 gespeichert werden kann. Weiter kann der Zeitraum für die periodische Kalibrierung über die Softwareschnittstelle 232 programmiert werden, so dass das Zeitintervall in speicherzugeordneten Registern 230 gespeichert werden kann.
  • 3 zeigt ein Timing-Diagramm 300, das ein Referenztaktsignal 210 mit Tastgraddistortion darstellt, gemäß verschiedenen Ausführungsbeispielen. Wie dargestellt, ist das Referenztaktsignal 210 in zwei Nennphasen unterteilt, wobei jede dieser beiden Nennphasen eine Dauer von einem Einheitsintervall (UI) hat und jedes Ul 50% der Periode des Referenztaktsignals 210 beträgt. Eine Phase des Taktsignals 210 ist eine Hochphase, und die entsprechende Ul wird als Ul hoch 302 dargestellt. Die andere Phase des Taktsignals 210 ist eine Tiefphase, und die entsprechende Ul ist als Ul tief 304 dargestellt. Wenn das Taktsignal 210 einer Tastgraddistortion unterliegt, ist die Dauer der Hochphase des Taktsignals 306 kürzer oder länger als die Dauer von Ul hoch 302. Dementsprechend ist die Dauer der Tiefphase 308 des Taktsignals länger oder kürzer als die Dauer von Ul tief 304.
  • Wie gezeigt, ist die Dauer der Hochphase 306 des Taktsignals kürzer als die Dauer von Ul hoch 302. Die Differenz zwischen der Dauer von Ul hoch 302 und der Dauer der Taktsignal-Hochphase 306 repräsentiert einen Margenverlust 310. Wenn die Kalibrierungsschaltung 200 nur während der Hochphase des Taktsignals 306 kalibriert, dann kann die resultierende Trimmcode-Verzögerung einen Kalibrierungsfehler aufweisen, der dem Margenverlust 310 entspricht. Dementsprechend ist die Dauer der Tiefphase 308 des Taktsignals länger als die Dauer von UI tief 304. Die Differenz zwischen der Tiefphase des Taktsignals 308 und der Dauer von UI tief 304 repräsentiert einen Margenverlust 310. Wenn die Kalibrierungsschaltung 200 nur während der Tiefphase des Taktsignals 308 kalibriert, dann kann die resultierende Trimmcode-Verzögerung einen Kalibrierungsfehler aufweisen, der dem Margenverlust 310 entspricht. Bei den offenbarten Techniken kalibriert die Kalibrierungsschaltung 200 stattdessen sowohl während der Hochphase 306 des Taktsignals als auch während der Tiefphase 308 des Taktsignals und bestimmt daraus eine zusammengesetzte Trimmcode-Verzögerung. Infolgedessen kalibriert die Kalibrierungsschaltung 200 über eine Dauer, die effektiv sowohl die Dauer von UI hoch 302 als auch die Dauer von UI tief 304 umfasst, wodurch der durch den Margenverlust 310 verursachte Kalibrierungsfehler reduziert oder beseitigt wird.
  • 4 zeigt ein Timing-Diagramm 400, das Taktsignale darstellt, die gemäß verschiedenen Ausführungsbeispielen durch die Kalibrierungsschaltung 200 von 2 kalibriert wurden. Wie dargestellt, enthält das Timing-Diagramm 400 ein unverzögertes Taktsignal 402 und ein verzögertes Taktsignal 404. Das unverzögerte Taktsignal 402 repräsentiert das unverzögerte Taktsignal 218 der 2, wenn das Phasenauswahlsignal 240 den Multiplexer 202 veranlasst, das Eingabe-Taktsignal CLKP 204 auszuwählen. In ähnlicher Weise repräsentiert das verzögerte Taktsignal 404 das verzögerte Taktsignal 216 der 2, wenn das Phasenauswahlsignal 240 den Multiplexer 202 veranlasst, das Eingangstaktsignal CLKP 204 auszuwählen. Weiter enthält das Timing-Diagramm 400 ein invertiertes unverzögertes Taktsignal 406 und ein invertiertes verzögertes Taktsignal 408. Das invertierte, unverzögerte Taktsignal 406 repräsentiert das unverzögerte Taktsignal 218 der 2, wenn das Phasenauswahlsignal 240 den Multiplexer 202 veranlasst, das invertierte Eingangstaktsignal CLKN 206 auszuwählen. In ähnlicher Weise repräsentiert das invertierte verzögerte Taktsignal 408 das verzögerte Taktsignal 216 der 2, wenn das Phasenauswahlsignal 240 den Multiplexer 202 veranlasst, das invertierte Eingangstaktsignal CLKN 206 auszuwählen.
  • Für das nicht verzögerte Taktsignal 402, das verzögerte Taktsignal 404, das invertierte nicht verzögerte Taktsignal 406 und das invertierte verzögerte Taktsignal 408 repräsentiert L 416 die Pulsbreite der Tiefphase und H 418 die Pulsbreite der Hochphase. Bei der Kalibrierung der Verzögerungsleitung 212 bestimmt die Kalibrierungsschaltung 200 die Trimmcode-Verzögerungen während einer Iteration der Tiefphase und einer Iteration der Hochphase. CL 412 repräsentiert die Trimmcode-Verzögerung, die während der Iteration der Tiefphasen-Kalibrierung bestimmt wurde. CH 414 repräsentiert die Trimmcode-Verzögerung, die während der Iteration der Hochphasen-Kalibrierung bestimmt wurde.
  • Bei der Kalibrierung der Verzögerungsleitung 212 berücksichtigt die Kalibrierungsschaltung 200 weiter die Einfügungsverzögerungen. In dieser Hinsicht repräsentiert ID (nicht dargestellt) die Einfügungsverzögerung der Verzögerungsleitung 212, wenn das Abgriffsauswahlsignal 242 0 ist und die Verzögerungsleitung 212 keine Verzögerungsstufen auswählt. Weiter repräsentiert IN (nicht dargestellt) die Einfügungsverzögerung durch das Einfügungsverzögerungselement 214 auf dem unverzögerten Pfad.
  • Mit diesen Definitionen, kann L 416 über die Gleichung L = ID + CL - IN bestimmt werden. In ähnlicher Weise kann H 418 über die Gleichung H = ID + CH - IN bestimmt werden. In einigen Beispielen ist die Einfügungsverzögerung der Verzögerungsleitung 212, wenn das Abgriffsauswahlsignal 242 0 ist, nominell gleich der Einfügungsverzögerung auf dem unverzögerten Pfad, repräsentiert durch das Element Einfügungsverzögerung 214. Diese Beziehung lässt sich durch die Gleichung ID = IN repräsentieren. In solchen Beispielen kann L 416 über die vereinfachte Gleichung L = CL bestimmt werden, und H 418 kann über die vereinfachte Gleichung H = CH bestimmt werden.
  • Die Kalibrierungsschaltung 200 bestimmt eine zusammengesetzte Kalibrierungs-Trimmcode-Verzögerung CCAL basierend auf CL 412, der Trimmcode-Verzögerung, die während der Tiefphasen-Kalibrierungsiteration bestimmt wurde, und CH 414, der Trimmcode-Verzögerung, die während der Hochphasen-Kalibrierungsiteration bestimmt wurde. In einigen Beispielen bestimmt die Kalibrierungsschaltung 200 eine zusammengesetzte Kalibrierungs-Trimmcode-Verzögerung CCAL basierend auf einem einfachen Durchschnitt von CL 412 und CH 414. In solchen Beispielen kann die zusammengesetzte Kalibrierungs-Trimmcode-Verzögerung über die Gleichung CCAL = (CL +CH)/2 bestimmt werden. Zusätzlich oder alternativ bestimmt die Kalibrierungsschaltung 200 eine zusammengesetzte Kalibrierungs-Trimmcode-Verzögerung CCAL basierend auf einem gewichteten Durchschnitt von CL 412 und CH 414, einem geometrischen Durchschnitt von CL 412 und CH 414 und/oder dergleichen.
  • Die Dauer des Einheitsintervalls (UI) basiert ebenfalls auf der Iteration der Tiefphasen-Kalibrierung und der Hochphasen-Kalibrierung. Die Dauer des UI kann über die Gleichung 1 UI = (L + H)/2 = [(CL +CH)/2] + ID - IN bestimmt werden. In Beispielen, in denen ID = IN ist, kann die Dauer der UI über die vereinfachte Gleichung 1 UI = (L + H)/2 = (CL +CH)/2 bestimmt werden.
  • 5 zeigt ein Flussdiagramm mit Verfahrensschritten zur Kalibrierung einer Verzögerungsleitung für ein Speichergerät, das im Systemspeicher 104 und/oder im Parallelverarbeitungsspeicher 134 des Rechnersystems 100 von 1 enthalten ist, gemäß verschiedenen Ausführungsbeispielen. Obwohl die Verfahrensschritte in Verbindung mit den Systemen der 1-4 beschrieben werden, werden Fachleute verstehen, dass jedes System, das so konfiguriert ist, dass es die Verfahrensschritte in beliebiger Reihenfolge durchführt, in den Anwendungsbereich der vorliegenden Offenbarung fällt.
  • Wie gezeigt, beginnt ein Verfahren 500 bei Schritt 502, bei dem eine Zustandsmaschine 226, die in einer Kalibrierungsschaltung 200 enthalten ist, eine Phase des Taktsignals 210 für die Kalibrierung auswählt. Die Zustandsmaschine 226 überträgt ein Phasenauswahlsignal 240 an einen Multiplexer 202 mit einem Logikpegel, der darauf basiert, welche Phase des Taktsignals die Kalibrierschaltung 200 gerade misst. Der Multiplexer 202 wählt basierend auf dem Phasenauswahlsignal 240 ein Eingabe-Taktsignal CLKP 204 oder ein invertiertes Eingabe-Taktsignal CLKN 206 aus.
  • In Schritt 504 initialisiert die Zustandsmaschine 226 eine Verzögerungsleitung 212 und initiiert einen Sample-Zähler (Sample-Zählung) für einen Phasenfilter 224. Die Zustandsmaschine 226 initialisiert die Verzögerungsleitung 212 durch Auswählen eines Startwertes für ein Abgriffsauswahlsignal 242. Der Startwert für das Abgriffsauswahlsignal 242 kann ein Standardwert, ein während eines vorherigen Kalibrierungsvorgangs ausgewählter Wert und/oder dergleichen sein. Die Zustandsmaschine 226 überträgt das Abgriffsauswahlsignal 242 an die Verzögerungsleitung 212. Die Verzögerungsleitung 212 wiederum verzögert das Taktsignal 210 basierend auf der durch das Abgriffsauswahlsignal 242 festgelegten Anzahl von Abgriffen (Taps).
  • Weiter initialisiert die Zustandsmaschine 226 den Sample-Zähler für einen Phasenfilter 224. Das Phasenfilter 224 tastet das Phasendetektionssignal 222 mehrfach ab. Der Phasenfilter 224 generiert ein gefiltertes Phasendetektionssignal 244 durch Anwendung einer arithmetischen Durchschnittsfunktion, einer gewichteten Durchschnittsfunktion, einer geometrischen Durchschnittsfunktion und/oder anderer Filterfunktionen auf die Samples des Phasendetektionssignals 222. Der Phasenfilter 224 generiert das gefilterte Phasendetektionssignal 244, um die Auswirkungen von Störsignalen, Rauschen und/oder Ähnlichem zu reduzieren, die im Phasendetektionssignal 222 vorhanden sein können. Die Anzahl der Samples und die Filterfunktion können über eine Software-Schnittstelle 232 programmiert werden. In einigen Beispielen initialisiert die Zustandsmaschine 226 den Sample-Zähler für den Phasenfilter 224 auf Null und erhöht den Sample-Zähler über eine Anzahl von Sample-Zyklen bis zu einem maximalen Sample-Zähler (maximale Sample-Anzahl). Alternativ dazu initiiert die Zustandsmaschine 226 den Sample-Zähler für den Phasenfilter 224 auf einen maximalen Sample-Zähler und dekrementiert den Sample-Zähler über die Anzahl der Sample-Zyklen auf Null.
  • In Schritt 506 wartet die Zustandsmaschine 226 auf die Einschwingzeit der Verzögerungsleitung 212. Wenn die Zustandsmaschine 226 die Verzögerungsleitung 212 in Schritt 504 initialisiert, ändert die Verzögerungsleitung 212 den Betrag, um den das Referenztaktsignal 210 verzögert wird. Insbesondere geht die Verzögerungsleitung 212 von der Verzögerung des Referenztaktsignals 210 basierend auf dem vorherigen Wert des Abgriffsauswahlsignals 242 zur Verzögerung des Referenztaktsignals 210 basierend auf dem aktuellen Wert des Abgriffsauswahlsignals 242 über. Während des Übergangs kann das von der Verzögerungsleitung 212 übertragene verzögerte Taktsignal 216 instabil sein. Die Zustandsmaschine 226 wartet die Einschwingzeit der Verzögerungsleitung 212 ab, um sicherzustellen, dass der Übergang abgeschlossen ist und das verzögerte Taktsignal 216 stabil ist.
  • In Schritt 508 tastet die Zustandsmaschine 226 die Phase des verzögerten Taktsignals 216 ab. Ein D-Flipflop 220 tastet die Phase des verzögerten Taktsignals 216 bei einem Übergang des unverzögerten Taktsignals 218 ab. Der Übergang kann die steigende Flanke des unverzögerten Taktsignals 218 oder die fallende Flanke des unverzögerten Taktsignals 218 sein. Flipflop 220 generiert ein Phasendetektionssignal 222, das die gesampelte Phase des verzögerten Taktsignals 216 repräsentiert. Flipflop 220 überträgt das Phasendetektionssignal 222 an den Phasenfilter 224. Der Phasenfilter 224 speichert den gesampelten Zustand des Phasendetektionssignals 222.
  • In Schritt 510 passt die Zustandsmaschine 226 den Wert des Sample-Zählers an. Wenn die Zustandsmaschine 226 den Sample-Zähler in Schritt 504 auf Null initialisiert hat, dann erhöht die Zustandsmaschine 226 den Sample-Zähler. Wenn die Zustandsmaschine 226 den Sample-Zähler in Schritt 504 auf den maximalen Sample-Zähler initialisiert hat, dann dekrementiert die Zustandsmaschine 226 den Sample-Zähler.
  • In Schritt 510 bestimmt die Zustandsmaschine 226, ob der Sample-Zähler die Sample-Grenze erreicht hat. Wenn die Zustandsmaschine 226 in Schritt 504 den Sample-Zähler auf Null initialisiert hat, bestimmt die Zustandsmaschine 226, ob der Sample-Zähler den maximalen Sample-Zähler erreicht hat. Wenn die Zustandsmaschine 226 in Schritt 504 den Sample-Zähler auf den maximalen Sample-Zähler initiiert hat, dann bestimmt die Zustandsmaschine 226, ob der Sample-Zähler Null erreicht hat. Hat der Sample-Zähler den Sample-Grenzwert nicht erreicht, so fährt das Verfahren mit dem oben beschriebenen Schritt 508 fort.
  • Wenn andererseits der Sample-Zähler die Sample-Grenze erreicht hat, fährt das Verfahren 500 mit Schritt 512 fort, wo die Zustandsmaschine 226 die Verzögerungsleitung basierend auf den gefilterten Phasen-Samples anpasst, die von dem Phasenfilter 224 gespeichert werden. Der Phasenfilter 224 sendet basierend auf den gespeicherten gefilterten Phasen-Samples ein gefiltertes Phasendetektionssignal 244 an die Zustandsmaschine 226. Das Phasenfilter 224 generiert das gefilterte Phasendetektionssignal 244 durch Anwendung einer Filterfunktion auf einen Satz von Samples des Phasendetektionssignals 222, wobei das Phasendetektionssignal 222 ein Sample des verzögerten Taktsignals 216 ist. Die Funktion kann eine arithmetische Durchschnittsfunktion, eine gewichtete Durchschnittsfunktion, eine geometrische Durchschnittsfunktion und/oder andere Filterfunktionen auf die Samples des Phasendetektionssignals 222 sein. Die Zustandsmaschine 226 ändert das Abgriffsauswahlsignal 242 über eine Anzahl von Zyklen des Taktsignals 210, um eine andere Anzahl von Abgriffen für die Verzögerungsleitung 212 auszuwählen.
  • In Schritt 514 bestimmt die Zustandsmaschine 226, ob der Kalibrierungsvorgang für die in Schritt 502 ausgewählte Taktphase abgeschlossen ist. Für jede unterschiedliche Anzahl von Abgriffen für die Verzögerungsleitung 212 bestimmt die Zustandsmaschine 226 den Wert des Abgriffsauswahlsignals 242, wenn das gefilterte Phasendetektionssignal 244 von einem Tiefpegel auf einen Hochpegel übergeht. Ebenso bestimmt die Zustandsmaschine 226 den Wert des Abgriffsauswahlsignals 242, wenn das gefilterte Phasendetektionssignal 244 von einem hohen Pegel zu einem niedrigen Pegel übergeht. Die Zustandsmaschine 226 bestimmt basierend auf diesen beiden Einsätzen des Abgriffsauswahlsignals 242 die Trimmcodeverzögerung der in Schritt 502 ausgewählten Taktphase. Der Kalibrierungsvorgang für die in Schritt 502 ausgewählte Taktphase ist abgeschlossen, wenn die Zustandsmaschine 226 die Schritte 506 bis 516 ausreichend iteriert hat, um die Trimmcode-Verzögerung zu bestimmen.
  • Wenn in Schritt 514 der Kalibrierungsvorgang für das in Schritt 502 ausgewählte Taktsignal nicht abgeschlossen ist, fährt das Verfahren 500 mit Schritt 516 fort, wo die Zustandsmaschine 226 den Sample-Zähler für den Phasenfilter 224 initialisiert, wie in Verbindung mit Schritt 504 beschrieben. Das Verfahren fährt dann mit dem oben beschriebenen Schritt 506 fort.
  • Ist hingegen der Kalibrierungsvorgang für die in Schritt 502 ausgewählte Taktphase abgeschlossen, fährt das Verfahren mit Schritt 502 fort, wo die Zustandsmaschine 226 eine andere Phase des Taktsignals für die Kalibrierung auswählt. Dabei sendet die Zustandsmaschine 226 ein Phasenauswahlsignal 240 an einen Multiplexer 202 mit einem Logikpegel, der darauf basiert, welche Phase des Taktsignals die Kalibrierschaltung 200 gerade misst. Wenn der Multiplexer 202 während der vorherigen Kalibrierung das Eingangs-Taktsignal CLKP 204 für die Kalibrierung ausgewählt hat, sendet die Zustandsmaschine 226 ein Phasenauswahlsignal 240, um den Multiplexer 202 zu veranlassen, das invertierte Eingangs-Taktsignal CLKN 206 auszuwählen. Wenn der Multiplexer 202 während der vorherigen Kalibrierung das invertierte Taktsignal CLKN 206 für die Kalibrierung ausgewählt hat, sendet die Zustandsmaschine 226 ein Phasenauswahlsignal 240, um den Multiplexer 202 zu veranlassen, das Taktsignal CLKP 204 auszuwählen.
  • Die Zustandsmaschine 226 schließt die beiden Iterationen des Kalibrierungsbetriebs der Schritte 502 bis 516 ab, um für beide Phasen des Referenztaktsignals 210 zu kalibrieren. Die Zustandsmaschine 226 bestimmt eine zusammengesetzte Trimmcode-Verzögerung durch Anwendung einer Funktion auf die aus den beiden Iterationen des Kalibrierungsvorgangs bestimmten Trimmcode-Verzögerungen. Die Funktion zur Bestimmung der zusammengesetzten Trimmcode-Verzögerung kann auf einem einfachen Durchschnitt der Trimmcode-Verzögerungen für die beiden Phasen, einem gewichteten Durchschnitt der Trimmcode-Verzögerungen, einem geometrischen Mittelwert der Trimmcode-Verzögerungen und/oder Ähnlichem basieren. In einigen Beispielen ist die Funktion über die Software-Schnittstelle 232 programmierbar. Da die zusammengesetzte Trimmcode-Verzögerung auf Trimmcode-Verzögerungen für beide Phasen des Taktsignals basiert, wird der durch die Tastgraddistortion verursachte Fehlerterm im Vergleich zu Techniken, die nur für eine Phase des Taktsignals kalibrieren, reduziert.
  • In einigen Beispielen können die Schritte 502 bis 516 einmal für jede Phase des Taktsignals 210 durchgeführt werden, wenn das System eingeschaltet wird, wenn das System einen Leerlaufzustand verlässt und/oder dergleichen. Die zusammengesetzte Trimmcode-Verzögerung bleibt während der Zeit, in der das System eingeschaltet und aktiv bleibt, fest. Zusätzlich oder alternativ können die Schritte 502 bis 516 periodisch durchgeführt werden, um die zusammengesetzte Trimmcode-Verzögerung in Reaktion auf Änderungen der Tastgraddistortion im Laufe des Zeitraums anzupassen. Zusätzlich oder alternativ können die Schritte 502 bis 516 kontinuierlich durchgeführt werden, indem Iterationen der Hochphasen-Kalibrierung mit Iterationen der Tiefphasen-Kalibrierung abgewechselt werden. Auf diese Weise werden Änderungen sowohl der Hochphase des Taktsignals als auch der Tiefphase des Taktsignals über ein rollierendes Fenster gesampelt, und die periodische Variation wird im Laufe der Zeit verfolgt.
  • Zusammenfassend lässt sich sagen, dass verschiedene Ausführungsbeispiele eine verbesserte Kalibrierungsschaltung für ein Speichergerät, wie z. B. ein HBM-DRAM-Gerät, umfassen. Die E/As eines Speichergeräts enthalten Verzögerungsleitungen zum Anpassen der Verzögerung im Pfad des Eingangs-/Ausgangs-E/A-Signals des Speichers. Die Schaltung zur Einstellung der Verzögerung umfasst digitale Verzögerungsleitungen zum Anpassen dieser Verzögerung. Weiter wird jede digitale Verzögerungsleitung über eine digitale Verzögerungsleitungs-Locked-Loop (DDLL) kalibriert, die eine Anpassung der Verzögerung durch die digitale Verzögerungsleitung in Bruchteilen eines Einheitsintervalls über PVT-Variationen ermöglicht. Die offenbart Technik kalibriert die digitalen Verzögerungsleitungen durch Messung sowohl der Hochphase als auch der Tiefphase des Taktsignals. Infolgedessen kompensieren die offenbarten Techniken die Tastgraddistortion durch Kombination der Kalibrierungsergebnisse beider Phasen des Taktsignals.
  • Zumindest ein technischer Vorteil der offenbarten Techniken gegenüber dem herkömmlichen Stand der Technik besteht darin, dass bei den offenbarten Techniken beide Phasen des Taktsignals gemessen werden, wenn die Verzögerungsleitungen für die E/As des Speichergeräts angepasst werden. Infolgedessen basiert die Kalibrierung der Verzögerungsleitungen auf einer genaueren Messung der vollen Taktsignalperiode im Vergleich zu früheren Techniken, selbst wenn der Taktsignalzyklus einer Tastgraddistortion unterliegt. Da die Kalibrierung des Speichergeräts genauer ist, kann das Speichergerät mit höheren Geschwindigkeiten operieren, was zu einer verbesserten Speicherleistung im Vergleich zu früheren Techniken führt. Ein weiterer technischer Vorteil der offenbarten Technik besteht darin, dass digitale Verzögerungsleitungen, die sich über ein Einheitsintervall erstrecken, verwendet werden können, um das Taktsignal über zwei Einheitsintervalle zu verfolgen. Dadurch werden die Chipfläche und der Stromverbrauch im Vergleich zu Implementierungen mit digitalen Verzögerungsleitungen, die zwei Einheitsintervalle umfassen, reduziert. Diese Vorteile repräsentieren eine oder mehrere technologische Verbesserungen gegenüber den Ansätzen des herkömmlichen Standes der Technik.
  • Alle Kombinationen der in den Ansprüchen genannten Elemente und/oder der in dieser Applikation beschriebenen Elemente fallen in beliebiger Weise in den vorgesehenen Anwendungsbereich der vorliegenden Offenbarung und des Schutzes.
  • Die Beschreibungen der verschiedenen Ausführungsbeispiele wurden zur Veranschaulichung dargestellt, erheben jedoch nicht den Anspruch auf Vollständigkeit oder Beschränkung auf die offenbarten Ausführungsbeispiele. Viele Modifikationen und Variationen werden für den Fachmann ersichtlich sein, ohne dass der Umfang und der Geist der beschriebenen Ausführungsbeispiele beeinträchtigt werden.
  • Ausführungsbeispiele der vorliegenden Ausführungsformen können als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Offenbarung die Form einer reinen Hardware-Variante, einer reinen Software-Variante (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Kombination von Software- und Hardware-Aspekten annehmen, die hier allgemein als „Modul“ oder „System“ bezeichnet werden können. Weiterhin können Aspekte der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medium(en) mit darauf verkörpertem computerlesbarem Programmcode verkörpert ist.
  • Es kann jede Kombination von einem oder mehreren computerlesbaren Medium(en) verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, aber nicht ausschließlich, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine Vorrichtung oder ein Gerät oder eine geeignete Kombination der vorgenannten sein. Zu den spezifischeren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium gehören: eine elektrische Verbindung mit einem oder mehreren Drähten, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), eine optische Faser, ein tragbarer Compact-Disc-Festwertspeicher (CD-ROM), ein optisches Speichergerät, ein magnetisches Speichergerät oder jede geeignete Kombination der vorgenannten. Im Zusammenhang mit diesem Dokument kann ein computerlesbares Speichermedium jedes greifbare Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, einer Vorrichtung oder einem Gerät enthalten oder speichern kann.
  • Aspekte der vorliegenden Offenbarung sind oben unter Bezugnahme auf Flussdiagrammabbildungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsbeispielen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der Flussdiagramm-Darstellungen und/oder Blockdiagramme sowie Kombinationen von Blöcken in den Flussdiagramm-Darstellungen und/oder Blockdiagrammen durch Computerprogramm-Anweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Allzweckrechners, eines Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zum Erzeugen einer Maschine bereitgestellt werden, so dass die Anweisungen, die über den Prozessor des Rechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, die Implementierung der im Flussdiagramm und/oder im Blockdiagramm angegebenen Funktionen/Aktionen ermöglichen, Block oder Blöcke. Bei solchen Prozessoren kann es sich ohne Einschränkung um Allzweckprozessoren, Spezialprozessoren, anwendungsspezifische Prozessoren oder feldprogrammierbare Arrays handeln.
  • Das Flussdiagramm und die Blockdiagramme in den Figuren zeigen die Architektur, die Funktionalität und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß den verschiedenen Ausführungsbeispielen der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block im Flussdiagramm oder in den Blockdiagrammen ein Modul, ein Segment oder einen Teil des Codes repräsentieren, der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) umfasst. Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in den Blöcken aufgeführten Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. So können beispielsweise zwei nacheinander gezeigte Blöcke in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach der betreffenden Funktionalität. Es wird auch darauf hingewiesen, dass jeder Block in den Blockdiagrammen und/oder der Flussdiagramm-Darstellung sowie Kombinationen von Blöcken in den Blockdiagrammen und/oder der Flussdiagramm-Darstellung durch spezielle, auf Hardware basierende Systeme implementiert werden können, die die angegebenen Funktionen oder Handlungen durchführen, oder durch Kombinationen von spezieller Hardware und Computer-Anweisungen.
  • Während das Vorangegangene auf Ausführungsbeispiele der vorliegenden Offenbarung gerichtet ist, können andere und weitere Ausführungsformen der Offenbarung entwickelt werden, ohne vom grundlegenden Umfang derselben abzuweichen, und der Umfang derselben wird durch die folgenden Ansprüche bestimmt.

Claims (20)

  1. Verfahren zum Kalibrieren einer Verzögerungsleitung für ein Speichergerät, wobei das Verfahren folgende Schritte umfasst: Auswählen einer ersten Phase eines Referenztaktsignals; Bestimmen eines ersten Kalibrierungswertes für die Verzögerungsleitung basierend auf der ersten Phase des Referenztaktsignals; Auswählen einer zweiten Phase des Referenztaktsignals; Bestimmen eines zweiten Kalibrierungswerts für die Verzögerungsleitung basierend auf der zweiten Phase des Referenztaktsignals; und Generieren eines dritten Kalibrierungswertes für die Verzögerungsleitung basierend auf dem ersten Kalibrierungswert und dem zweiten Kalibrierungswert.
  2. Verfahren nach Anspruch 1, wobei das Auswählen der ersten Phase des Referenztaktsignals ein Übertragen eines Auswahlsignals an einen Multiplexer umfasst, um eine nicht-invertierte Version des Referenztaktsignals auszuwählen.
  3. Verfahren nach Anspruch 1 oder 2, wobei das Auswählen der zweiten Phase des Referenztaktsignals ein Übertragen eines Auswahlsignals an einen Multiplexer umfasst, um eine invertierte Version des Referenztaktsignals auszuwählen.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Bestimmen des ersten Kalibrierungswertes ein Sampling einer verzögerten Version des Referenztaktsignals bei einem Übergang einer nicht verzögerten Version des Referenztaktsignals umfasst.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Bestimmen des ersten Kalibrierungswerts ein Anwenden einer Filterfunktion auf eine Vielzahl von Samples einer verzögerten Version des Referenztaktsignals umfasst.
  6. Verfahren nach Anspruch 5, wobei die Filterfunktion zumindest eine der folgenden Funktionen umfasst: eine arithmetische Durchschnittsfunktion, eine gewichtete Durchschnittsfunktion oder eine geometrische Durchschnittsfunktion.
  7. Verfahren nach Anspruch 5 oder 6, wobei zumindest eines von einer Anzahl von Samples, die in der Vielzahl von Samples enthalten sind, und der Filterfunktion über eine Softwareschnittstelle programmiert wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Generieren des dritten Kalibrierwertes ein Anwenden zumindest eines von einer arithmetischen Durchschnittsfunktion, einer gewichteten Durchschnittsfunktion oder einer geometrischen Durchschnittsfunktion auf den ersten Kalibrierwert und den zweiten Kalibrierwert umfasst.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei der dritte Kalibrierungswert zumindest auf einer ersten Einfügungsverzögerung basiert, die mit einer verzögerten Version des Referenztaktsignals assoziiert ist, oder auf einer zweiten Einfügungsverzögerung, die mit einer nicht verzögerten Version des Referenztaktsignals assoziiert ist.
  10. Verfahren nach Anspruch 9, wobei der dritte Kalibrierungswert auf einer Differenz aus der ersten Einfügungsverzögerung und der zweiten Einfügungsverzögerung basiert.
  11. Verfahren nach Anspruch 9 oder 10, wobei die erste Einfügungsverzögerung gleich der zweiten Einfügungsverzögerung ist.
  12. System, umfassend: einen Prozessor; eine Verzögerungsleitung; und eine Kalibrierungsschaltung, die: eine erste Phase eines Referenztaktsignals auswählt einen ersten Kalibrierungswert für die Verzögerungsleitung basierend auf der ersten Phase des Referenztaktsignals bestimmt; eine zweite Phase des Referenztaktsignals auswählt; einen zweiten Kalibrierungswert für die Verzögerungsleitung basierend auf der zweiten Phase des Referenztaktsignals bestimmt; und einen dritten Kalibrierungswert für die Verzögerungsleitung basierend auf dem ersten Kalibrierungswert und dem zweiten Kalibrierungswert generiert.
  13. System nach Anspruch 12, wobei die Kalibrierungsschaltung zum Auswählen der ersten Phase des Referenztaktsignals ein Auswahlsignal an einen Multiplexer überträgt, um eine nicht-invertierte Version des Referenztaktsignals auszuwählen.
  14. System nach Anspruch 12 oder 13, wobei die Kalibrierungsschaltung zum Auswählen der zweiten Phase des Taktsignals ein Auswahlsignal an einen Multiplexer überträgt, um eine invertierte Version des Referenztaktsignals auszuwählen.
  15. System nach einem der Ansprüche 12 bis 14, wobei die Kalibrierungsschaltung zum Bestimmen des ersten Kalibrierungswertes eine verzögerte Version des Taktsignals bei einem Übergang einer nicht verzögerten Version des Referenztaktsignals sampelt.
  16. System nach einem der Ansprüche 12 bis 15, wobei die Kalibrierungsschaltung zum Bestimmen des ersten Kalibrierungswerts eine Filterfunktion auf eine Vielzahl von Samples einer verzögerten Version des Referenztaktsignals anwendet.
  17. System nach Anspruch 16, wobei die Filterfunktion zumindest eine der folgenden Funktionen umfasst: eine arithmetische Durchschnittsfunktion, eine gewichtete Durchschnittsfunktion oder eine geometrische Durchschnittsfunktion.
  18. System nach Anspruch 16 oder 17, wobei zumindest eines von einer Anzahl von Samples, die in der Vielzahl von Samples enthalten sind, und der Filterfunktion über eine Softwareschnittstelle programmiert wird.
  19. System nach einem der Ansprüche 12 bis 18, wobei zum Generieren des dritten Kalibrierungswertes die Kalibrierungsschaltung zumindest eine von einer arithmetischen Durchschnittsfunktion, einer gewichteten Durchschnittsfunktion oder einer geometrischen Durchschnittsfunktion auf den ersten Kalibrierungswert und den zweiten Kalibrierungswert anwendet.
  20. System nach einem der Ansprüche 12 bis 19, wobei der dritte Kalibrierungswert zumindest auf einem von einer ersten Einfügungsverzögerung, die mit einer verzögerten Version des Referenztaktsignals assoziiert ist, und einer zweiten Einfügungsverzögerung, die mit einer nicht verzögerten Version des Referenztaktsignals assoziiert ist, basiert.
DE102022130683.6A 2021-11-22 2022-11-21 Kalibrierung einer digitalen verzögerungsleitung mit tastgradkorrektur für eine speicherschnittstelle mit hoher bandbreite Pending DE102022130683A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163281935P 2021-11-22 2021-11-22
US63/281,935 2021-11-22
US17/841,504 2022-06-15
US17/841,504 US11936379B2 (en) 2021-11-22 2022-06-15 Digital delay line calibration with duty cycle correction for high bandwidth memory interface

Publications (1)

Publication Number Publication Date
DE102022130683A1 true DE102022130683A1 (de) 2023-05-25

Family

ID=86227140

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022130683.6A Pending DE102022130683A1 (de) 2021-11-22 2022-11-21 Kalibrierung einer digitalen verzögerungsleitung mit tastgradkorrektur für eine speicherschnittstelle mit hoher bandbreite

Country Status (3)

Country Link
US (1) US11936379B2 (de)
CN (1) CN116153349A (de)
DE (1) DE102022130683A1 (de)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7269515B2 (en) * 2004-06-15 2007-09-11 Baker Hughes Incorporated Geosteering in anisotropic formations using multicomponent induction measurements
US7525363B2 (en) * 2006-09-01 2009-04-28 Via Technologies, Inc. Delay line and delay lock loop
KR101046245B1 (ko) * 2009-11-30 2011-07-04 주식회사 하이닉스반도체 듀티 보정 회로
CN113054998B (zh) * 2019-12-26 2023-04-18 澜至电子科技(成都)有限公司 时间数字转换器的线性校准系统、方法及数字锁相环

Also Published As

Publication number Publication date
US11936379B2 (en) 2024-03-19
US20230163764A1 (en) 2023-05-25
CN116153349A (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
DE102013217830A1 (de) Timing-Kalibrierung für chipinterne Verdrahtung
DE112012001224B4 (de) Vorrichtung, System und Verfahren zur Taktrückgewinnung
DE112011105683B4 (de) Abgeschlossene(s) Alterungsüberwachungsvorrichtung und -verfahren auf Pfadebene
DE10102887B4 (de) Verzögerungsvorrichtung, die eine Verzögerungssperrschleife aufweist und Verfahren zum Kalibrieren derselben
DE112012001972B4 (de) Vorrichtung, System und Verfahren zur Spannungshub- und Tastgradjustierung
DE69833467T2 (de) Zeitgeberschaltung, Vorrichtung und System für integrierten Halbleiterschaltkreis unter deren Anwendung und Signalübertragungssystem
DE10010440B9 (de) Synchrones dynamisches Speicherbauelement mit wahlfreiem Zugriff und Verfahren zur CAS-Latenzsteuerung
DE10110315C2 (de) Optimieren des Leistungsvermögens eines getakteten Systems durch Anpassen der Einstellungen der Taktsteuerung und der Taktfrequenz
DE102019118638A1 (de) Ein-Chip-System, das ein Training des Tastgrades des Schreibtakts unter Verwendung eines Modus-Register-Schreibbefehls durchführt, Betriebsverfahren des Ein-Chip-Systems, elektronische Vorrichtung mit dem Ein-Chip-System
DE102007060805B4 (de) Speichersteuerung und Computersystem mit derselben sowie Verfahren zur Steuerung eines Speichers
DE19934226A1 (de) Analog-Digital-Hybrid-DLL
DE102005027452A1 (de) Digitaler Tastverhältniskorrektor
DE102012219056B4 (de) Störimpulsfreier programmierbarer Taktformer
DE19502035A1 (de) Frequenzvervielfacherschaltung
DE102019121891A1 (de) Takt-arbeitszyklus-einstell- und kalibrieschaltung und verfahren zum betreiben derselben
DE112006001132B4 (de) Regulieren der Taktung zwischen einem Abtastsignal und einem Datensignal
DE102006030377A1 (de) Verzögerungsregelschleifenschaltung
DE102019107849A1 (de) 424-Kodierungsschemata zur Reduzierung von Kopplung und Leistungsrauschen auf PAM-4-Datenbussen
DE102004031448A1 (de) Verzögerungsregelkreis und dessen Verfahren zum Takterzeugen
JP5016883B2 (ja) 高速パラレル・バス上のスキューを監視し補償する方法および装置
DE112021004180T5 (de) Speichersubsystemkalibrierung unter verwendung von ersatzergebnissen
DE102022102128A1 (de) Techniken zur durchführung von schreibtraining an einem dynamischen direktzugriffsspeicher
DE102013221028A1 (de) Hoch-Auflösung-Phasen-Detektor
DE10064206A1 (de) Verzögerungsverriegelungsschleife zur Verwendung bei Halbleiterspeichergeräten
DE102022130683A1 (de) Kalibrierung einer digitalen verzögerungsleitung mit tastgradkorrektur für eine speicherschnittstelle mit hoher bandbreite

Legal Events

Date Code Title Description
R012 Request for examination validly filed