DE102020129577A1 - Konvergenter fifo-status-synchronisierer mit taktübergang - Google Patents

Konvergenter fifo-status-synchronisierer mit taktübergang Download PDF

Info

Publication number
DE102020129577A1
DE102020129577A1 DE102020129577.4A DE102020129577A DE102020129577A1 DE 102020129577 A1 DE102020129577 A1 DE 102020129577A1 DE 102020129577 A DE102020129577 A DE 102020129577A DE 102020129577 A1 DE102020129577 A1 DE 102020129577A1
Authority
DE
Germany
Prior art keywords
flip
fifo
pipeline
pointers
status
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
DE102020129577.4A
Other languages
English (en)
Inventor
Leon Zlotnik
Jeremy Anderson
Lev Zlotnik
Dan Ballegeer
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 DE102020129577A1 publication Critical patent/DE102020129577A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/037Bistable circuits
    • H03K3/0377Bistables with hysteresis, e.g. Schmitt trigger
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/353Generators characterised by the type of circuit or by the means used for producing pulses by the use, as active elements, of field-effect transistors with internal or external positive feedback
    • H03K3/356Bistable circuits
    • H03K3/3565Bistables with hysteresis, e.g. Schmitt trigger
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K23/00Pulse counters comprising counting chains; Frequency dividers comprising counting chains
    • H03K23/004Counters counting in a non-natural counting order, e.g. random counters
    • H03K23/005Counters counting in a non-natural counting order, e.g. random counters using minimum change code, e.g. Gray Code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K23/00Pulse counters comprising counting chains; Frequency dividers comprising counting chains
    • H03K23/40Gating or clocking signals applied to all stages, i.e. synchronous counters
    • H03K23/50Gating or clocking signals applied to all stages, i.e. synchronous counters using bi-stable regenerative trigger circuits
    • H03K23/54Ring counters, i.e. feedback shift register counters
    • H03K23/542Ring counters, i.e. feedback shift register counters with crossed-couplings, i.e. Johnson counters
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

Ein Synchronisierer, der in einem einzigen Schritt ohne Zwischensynchronisation einen Pipeline-Status (z. B. FIFO, LIFO) erzeugen kann. Der Status kann eine Anzeige dafür sein, ob eine Pipeline voll, leer, fast voll oder fast leer ist. Der Synchronisierer (auch als Doppelsynchronisations- oder welligkeitsbasierter Pipeline-Statussynchronisierer bezeichnet) kann mit jeder Art von Pipeline mit Taktübergang und allen Arten von Zeigerkodierungen verwendet werden. Die Doppelsynchronisations- und welligkeitsbasierten Pipeline-Statussynchronisierer beseitigen die Notwendigkeit einer kostspieligen Validierung und einer halbmanuellen Timing-Closure, weisen auf eine bessere Leistung und Prüfbarkeit hin und besitzen eine geringere Fläche und Leistung,

Description

  • INANSPRUCHNAHME DER PRIORITÄT
  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung, laufende Nummer 62/940.729 , mit dem Titel „Clock Crossing FIFO Status Converged Synchronizer‟, eingereicht am 26. November 2019, die hiermit durch Bezugnahme in ihrer Gesamtheit aufgenommen wird.
  • HINTERGRUND
  • Derzeit kann ein FIFO (First-In-First-Out) mit Taktübergang die konvergenten Statusarten „voll“, „leer“, „fast voll“ und/oder „fast leer“ eines FIFO nicht auf effiziente Weise direkt erzeugen.
  • Figurenliste
  • Die Ausführungsformen der Offenbarung sind in größerem Umfang durch die nachstehende detaillierte Beschreibung und die beigefügten Zeichnungen der verschiedenen Ausführungsformen der Offenbarung verständlich, die jedoch nicht zur Beschränkung der Offenbarung auf die spezifischen Ausführungsformen verstanden werden sollten, sondern lediglich zur Erläuterung und zum Verständnis dienen.
    • 1 veranschaulicht einen FIFO (First-In-First-Out)-Statusgenerator.
    • 2A veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „voll“ gemäß einigen Ausführungsformen.
    • 2B veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „leer“ gemäß einigen Ausführungsformen.
    • 3 veranschaulicht ein Diagramm, das einen Leistungsvergleich gemäß einigen Ausführungsformen zeigt.
    • 4 veranschaulicht ein Diagramm, das einen Flächenvergleich gemäß einigen Ausführungsformen zeigt.
    • 5 veranschaulicht ein Diagramm, das einen Stromvergleich gemäß einigen Ausführungsformen zeigt.
    • 6A veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „voll“ gemäß einigen Ausführungsformen.
    • 6B veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „leer“ gemäß einigen Ausführungsformen.
    • 7 veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „fast voll“ gemäß einigen Ausführungsformen.
    • 8 veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „fast leer“ gemäß einigen Ausführungsformen.
    • 9 veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „fast voll“ gemäß einigen Ausführungsformen.
    • 10 veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „fast leer“ gemäß einigen Ausführungsformen.
    • 11A veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „voll“ unter Verwendung von zwei Schmitt-Trigger-Puffern gemäß einigen Ausführungsformen.
    • 11B veranschaulicht eine Vorrichtung zur Erzeugung eines FIFO-Status „leer“ unter Verwendung von zwei Schmitt-Trigger-Puffern gemäß einigen Ausführungsformen.
    • 12 veranschaulicht ein Smart-Gerät oder ein Computersystem oder einen SoC (System-on-Chip) mit einem Synchronisierer für konvergente FIFO-Statusarten mit Taktübergang gemäß einigen Ausführungsformen.
  • DETAILLIERTE BESCHREIBUNG
  • Ein Verfahren zum direkten Erzeugen eines konvergenten Status „voll/leer“ eines FIFO (First-In-First-Out) mit Taktübergang besteht in der Verwendung von entweder Gray-, Johnson-Ring- oder anderen Codes mit bitweisen Synchronisierern. In diesem Fall wird ein Lesezeiger mit der Schreibtaktdomäne synchronisiert und dann mit dem Schreibzeiger in der Schreibtaktdomäne verglichen, um einen Status „voll“ zu erzeugen, und ein Schreibzeiger wird mit der Lesetaktdomäne synchronisiert und dann mit dem Lesezeiger in der Lesetaktdomäne verglichen, um den Status „leer“ zu erzeugen. Um die Codekohärenz zu gewährleisten, ist jede Laufzeit für synchronisierte Bits begrenzt (üblicherweise durch halbmanuelle Verzögerungssteuerung). Dieses Verfahren reicht jedoch nicht aus, um das Problem der direkten Erzeugung eines konvergenten Status „voll/leer“ eines FIFO mit Taktübergang zu überwinden.
  • Beispielsweise erzeugt dieses Verfahren den FIFO-Status unter Verwendung einer großen Anzahl von Synchronisierern, die Fläche und Strom (sowohl Leckage als auch dynamische Stromversorgung) verschwenden. Die Anzahl der Synchronisierer, die unter Verwendung von Johnson-Ringcodes für den FIFO erforderlich sind, beträgt mindestens das Zweifache der FIFO-Tiefe. Johnson-Ringcodes für den FIFO werden üblicherweise in flachen FIFOs ohne Zweierpotenz gesehen. Johnson-FIFOs können dank des Kompromisses zwischen höherer Leistung und größerer Fläche erheblich schneller sein.
  • Die Verwendung von Gray-Code für den FIFO erfordert eine Anzahl von zwei mal log2(FIFO-Tiefe) Synchronisierem. Die Verwendung von Gray-Code für den FIFO mit anderen Tiefen kann jedoch sehr schwierig sein.
  • Unabhängig davon, ob ein Johnson-, Gray- oder ein anderer Code verwendet wird, wird der FIFO-Status bei diesem Verfahren nicht direkt von einem Flipflop gesteuert und verfügt über eine kombinatorische Logik, die die Leistung und die Integration von geistigem Eigentum (IP) einschränkt. Das Einschränken geeigneter Quelle-Ziel-Paare für eine maximales Verzögerungszeit zur Gewährleistung einer synchronisierten Codekohärenz stellt eine Herausforderung dar. Darüber hinaus werden mehrere asynchrone Quelle-Ziel-Pfade üblicherweise nicht gut durch einen At-Speed-Test abgedeckt, was das Risiko erhöht, dass ein Kunde einen fehlerhaften Chip erhält. Daher ist das Verfahren zum Erzeugen eines Status „voll/leer“ eines FIFO mit Taktübergang unter Verwendung entweder von einem Gray-, Johnson-Ring- oder ähnlichen Codes mit bitweise Synchronisierern mit vielen Herausforderungen behaftet.
  • Einige Ausführungsformen beschreiben einen Synchronisierer, der einen FIFO-Status in einem einzigen Schritt ohne Zwischensynchronisation erzeugen kann. Der Status kann eine Anzeige dafür sein, ob ein FIFO voll, leer, fast voll oder fast leer ist. Der Synchronisierer (auch als Doppelsynchronisations- oder welligkeitsbasierter FIFO-Statussynchronisierer bezeichnet) kann gemäß einigen Ausführungsformen mit jeder Art von FIFO mit Taktübergang und allen Arten von Zeigerkodierungen verwendet werden. Der FIFO-Statussynchronisierer verschiedener Ausführungsformen hebt die bekannte Einschränkungen beider Arten von FIFO auf. Dies gilt auch für andere Codes, die für FIFO-Zeiger verwendet werden können.
  • In einigen Ausführungsformen umfasst der Synchronisierer: einen FIFO; einen ersten Satz von Zeigern, die dem FIFO zugeordnet sind, wobei der erste Satz von Zeigern einem Lesetakt zugeordnet ist, der zum Lesen aus dem FIFO verwendet wird; und einen zweiten Satz von Zeigern, die dem FIFO zugeordnet sind, wobei der zweite Satz von Zeigern einem Schreibtakt zugeordnet ist, der zum Schreiben in den FIFO verwendet wird. In einigen Ausführungsformen umfasst der Synchronisierer Komparatoren (z. B. XNOR-Gatter) für den Vergleich des ersten Satzes von Zeigern mit dem zweiten Satz von Zeigern. In einigen Ausführungsformen umfasst der Synchronisierer eine UND-Logik, die mit den Ausgängen der Komparatoren gekoppelt ist. In einigen Ausführungsformen ist ein Filter (z. B. ein RC-Filter) mit einem Ausgang der UND-Logik gekoppelt. In einigen Ausführungsformen ist ein Schmitt-Trigger mit dem Filter gekoppelt. In einigen Ausführungsformen umfasst der Synchronisierer mindestens zwei Flipflops, die mit dem Schmitt-Trigger gekoppelt sind, wobei ein Ausgang eines der mindestens zwei Flipflops einen Status des FIFO anzeigt. In einigen Ausführungsformen dient ein Ausgang des Schmitt-Triggers dazu, die Ausgänge der mindestens zwei Flipflops einzustellen oder zurückzusetzen. In einigen Ausführungsformen sind die Taktanschlüsse der mindestens zwei Flipflops mit dem Lesetakt gekoppelt, um einen Status „leer“ des FIFO anzuzeigen. In einigen Ausführungsformen sind die Taktanschlüsse der mindestens zwei Flipflops mit dem Schreibtakt gekoppelt, um einen Status „voll“ des FIFO anzuzeigen. In einigen Ausführungsformen sind der erste und der zweite Satz von Zeigern Johnson-kodierte Zeiger. In einigen Ausführungsformen sind der erste und der zweite Satz von Zeigern Gray-kodierte Zeiger. In einigen Ausführungsformen ist ein Eingang des ersten Flipflops der mindestens zwei Flipflops mit der Masse oder Stromversorgung gekoppelt und ein Ausgang des ersten Flipflops der mindestens zwei Flipflops ist mit einem Eingang des zweiten Flipflops der mindestens zwei Flipflops gekoppelt.
  • Es ergeben sich viele technische Wirkungen der verschiedenen Ausführungsformen. Beispielsweise beseitigen sowohl die Doppelsynchronisations- als auch die welligkeitsbasierten FIFO-Statussynchronisierer einiger Ausführungsformen die Notwendigkeit einer kostspieligen Validierung und einer halbmanuellen Timing-Closure, weisen auf eine bessere Leistung und Prüfbarkeit hin und besitzen eine geringere Fläche und Leistung. In einem Fall ist entweder der Doppelsynchronisations- oder der welligkeitsbasierte FIFO-Statussynchronisierer schneller, z. B. 20 % bis 35 % schneller als der FIFO mit Taktübergang, der entweder Gray- oder Johnson-Ringcodes verwendet. Der Doppelsynchronisations- oder welligkeitsbasierte FIFO-Statussynchronisierer nutzt eine geringere Fläche, z. B. 30 % bis 65 % weniger Fläche als der FIFO mit Taktübergang, der entweder Gray- oder Johnson-Ringcodes verwendet. Der Doppelsynchronisations- oder welligkeitsbasierte FIFO-Statussynchronisierer führt zu Energieeinsparungen, z. B. zu Energieeinsparungen von 23 % bis 68 %. Andere technische Wirkungen werden aus den verschiedenen Figuren und Ausführungsformen ersichtlich.
  • In der folgenden Beschreibung werden zahlreiche Details erörtert, um eine tiefere Erklärung für Ausführungsformen der vorliegenden Offenbarung zu liefern. Fachleute auf dem Gebiet werden verstehen, dass Ausführungsformen der vorliegenden Offenbarung ohne diese spezifischen Details umgesetzt werden können. In anderen Beispielen werden wohlbekannte Strukturen und Vorrichtungen in Blockschaltbildform und nicht im Detail gezeigt, um es zu vermeiden, die Ausführungsformen der vorliegenden Offenbarung unverständlich zu machen.
  • Es wird darauf hingewiesen, dass in den entsprechenden Zeichnungen der Ausführungsformen Signale mit Linien dargestellt sind. Einige Linien können dicker sein, um besondere Signalpfade anzuzeigen, und/oder an einem oder mehreren Enden Pfeile aufweisen, um die primäre Informationsflussrichtung anzuzeigen. Solche Angaben sollen nicht einschränken. Vielmehr werden die Linien in Verbindung mit einer oder mehreren beispielhaften Ausführungsformen verwendet, um ein leichteres Verständnis einer Schaltung oder Logikeinheit zu ermöglichen. Jedes dargestellte Signal, das durch Designanforderungen oder -präferenzen vorgegeben ist, kann tatsächlich ein oder mehrere Signale umfassen, die sich in jede Richtung fortbewegen und mit irgendeinem geeigneten Typ von Signalschema implementiert sein können.
  • In der gesamten Beschreibung und in den Ansprüchen bedeutet der Begriff „verbunden“ eine direkte Verbindung, wie etwa eine elektrische, mechanische oder magnetische Verbindung, zwischen den Gegenständen, die verbunden sind, ohne irgendwelche Geräte dazwischen.
  • Der Begriff „gekoppelt“ bedeutet eine direkte oder indirekte Verbindung, wie eine direkte elektrische, mechanische oder magnetische Verbindung, zwischen den Gegenständen, die verbunden sind, oder eine indirekte Verbindung zwischen ein oder mehreren passiven oder aktiven Geräten dazwischen.
  • Der Begriff „benachbart“ kann sich hier im Allgemeinen auf eine Position eines Gegenstands neben (oder unmittelbar neben oder nahe an einem oder mehreren Gegenständen zwischen ihnen) oder an einen anderen Gegenstand angrenzend (z. B. an diesen angrenzend) beziehen.
  • Der Begriff „Schaltung“ oder „Modul“ kann eine oder mehrere passive und/oder aktive Komponenten bedeuten, die angeordnet sind, um miteinander zu kooperieren, um eine gewünschte Funktion bereitzustellen.
  • Der Begriff „Signal“ kann mindestens ein Stromsignal, Spannungssignal oder Daten-/Taktsignal bedeuten. Die Bedeutung von „ein“, „eine“, „einer“, „eines“ sowie „der“, „die“ und „das“ schließt auch den Plural ein. Die Bedeutung von „in“ schließt „in“ und „auf‟/„an“ ein.
  • Der Begriff „Skalieren“ bezieht sich allgemein auf Konvertieren eines Designs (schematisch und layoutbezogen) einer Prozesstechnologie zu einer anderen Prozesstechnologie, sodass damit eine Verkleinerung des Layoutbereichs einhergehen kann. In einigen Fällen bezieht sich „Skalieren“ auch auf die Vergrößerung eines Entwurfs von einer Prozesstechnologie zu einer anderen Prozesstechnologie, sodass damit eine Vergrößerung des Layoutbereichs einhergehen kann. Der Begriff „Skalieren“ bezieht sich allgemein außerdem auf Verkleinern von Layout und von Bauteilen innerhalb des gleichen Technologieknotens. Der Begriff „Skalieren“ kann sich auch auf Anpassen (beispielsweise Verlangsamen oder Beschleunigen, also das jeweilige Herunter- oder Herausskalieren) einer Signalfrequenz bezüglich eines anderen Parameters, beispielsweise dem Stromversorgungspegel, beziehen. Die Begriffe „im Wesentlichen“, „nahe“, „näherungsweise“, „fast“ und „etwa“ beziehen sich im Allgemeinen auf +/-10 % innerhalb eines Zielwerts.
  • Sofern nicht ander angegeben weist die Verwendung der Aufzählungsadjektive „erste/r/s“, „zweite/r/s“ und „dritte/r/s“ etc. zum Beschreiben eines gewöhnlichen Objekts lediglich daraufhin, dass unterschiedliche Instanzen ähnlicher Objekte bezeichnet werden, und soll nicht andeuten, dass die so beschriebenen Objekte in einer gegebenen Sequenz, weder zeitlich, räumlich, in Rangfolge oder auf irgendeine andere Weise vorliegen müssen.
  • Für die Zwecke der vorliegenden Offenlegung bedeutet der Ausdruck „A und/oder B“ und „A oder B‟ (A), (B) oder (A und B). Für die Zwecke der vorliegenden Offenlegung bedeutet der Ausdruck „A, B und/oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Begriffe „links“, „rechts“, „vorne“, „hinten“, „oben“, „unten“, „über“, „unter“ und dergleichen in der Beschreibung und den Ansprüchen werden, sofern vorhanden, für Zwecke der Beschreibung verwendet, und nicht notwendigerweise zum Beschreiben relativer Positionen.
  • Es wird darauf hingewiesen, dass solche Elemente der Figuren, die die gleichen Referenznummern (oder Bezeichnungen) wie die Elemente einer anderen Figur haben, auf eine ähnliche Weise wie die beschriebene betrieben werden oder funktionieren können, aber nicht darauf beschränkt sind.
  • Für die Zwecke der Ausführungsformen handelt es sich bei den hier in verschiedenen Schaltungen und Logikblöcken beschriebenen Transistoren um Metalloxidhalbleiter (Metal Oxide Semiconductor, MOS)-Transistoren oder deren Ableitungen, wobei die MOS-Transistoren Drain-, Source-, Gate- und Bulkanschlüsse umfassen. Die Transistoren und/oder die Ableitungen von MOS-Transistoren schließen außerdem Trigate- und FinFET-Transistoren, Gate-All-Around-Zylindertransistoren, Tunnel-Feldeffekttransistoren (TFETs), Square-Wire- oder Rectangular-Ribbon-Transistoreren, ferroelektrischer Feldeffekttransistoren (FeFETs) oder andere Einrichtungen ein, die Transistorfunktionalität implementieren, wie Kohlenstoffnanoröhren oder Spintronik-Einrichtungen. Symmetrische MOSFET-Source- und Drainanschlüsse können beispielsweise identische Anschlüsse sein und werden hier austauschbar verwendet. Andererseits verfügen TFET-Einrichtungen über asymmetrische Source- und Drainanschlüsse. Für Fachleute auf dem Gebiet ist ersichtlich, dass andere Transistoren, beispielsweise Bipolartransistoren (BJT PNP/NPN), BiCMOS, CMOS etc. verwendet werden können, ohne vom Umfang der Offenbarung abzuweichen.
  • 1 veranschaulicht einen FIFO (First-In-First-Out)-Statusgenerator 100. Dieser FIFO-Statusgenerator 100 besteht aus zwei aufeinanderfolgenden Johnson- oder Gray-Codeeinheiten 101 und 103; mehreren Synchronisierern 102 mit bitweisen Synchronisierern 1021-N; einem XNOR (Exklusiv-OR)-Gatter 104 und kombinierter Ausgangskombinationslogik (Combo-Logik) 105, die wie gezeigt gekoppelt ist. Schreib- und Lesetakt werden wie gezeigt für die beiden aufeinanderfolgenden Johnson- oder Gray-Codeeinheiten 101 bzw. 103 bereitgestellt. Dieser FIFO-Statusgenerator 100 weist viele Nachteile auf. Beispielsweise erfordert der FIFO-Statusgenerator 100 von 1 mehrere Synchronisierer - einen pro Zeigerbit. Der FIFO-Statusgenerator 100 von 1 verbraucht viel Fläche, Leckage und dynamische Leistung, da diese Synchronisierer 1021-N stets getaktet sind.
  • Der FIFO-Status (FIFO_FULL) wird von einem großen Kegel kombinatorischer Logik 105 gesteuert. Die kombinatorische Logik 105 umfasst die XNOR-Gatter 105a, 105b und viele andere (z. B. N Anzahl von Gattern), die die Ausgänge einzelner Synchronisierer und aufeinanderfolgender Johnson- oder Gray-Codeeinheiten 101 vergleichen. Der Ausgang von XNOR 104 und den anderen XNOR-Gattern 105a, 105b etc. wird durch das UND-Gatter 105c mittels UND verknüpft, um den FIFO-Status FIFO_FULL zu erzeugen. Dies verringert die Gesamtleistung und schränkt die FIFO-Integration ein, insbesondere wenn das FIFO am IP (Intellectual Property)-übergreifenden Datenverkehr beteiligt ist. Das Testen eines asynchronen Pfads zum Synchronisierer ist zwar möglich, wird jedoch normalerweise mithilfe eines statischen („stuck-at“) Scans durchgeführt. Je mehr Synchronisierer vorhanden sind, desto höher ist das Risiko, dass ein Kunde einen Siliziumbasierten Prozessor mit „at-speed“-Defekt erhält.
  • Die mittlere Ausfallzeit (Mean Time Between Failures, MTBF) eines Synchronisierers ist für den FIFO-Statusgenerator 100 von 1 nicht unendlich. Je mehr Synchronisierer vorhanden sind, desto geringer ist die MTBF für das Gesamtprodukt. Die Codekohärenz für den FIFO-Statusgenerator 100 von 1 erfordert, dass alle Pfade zu Synchronisierern einen maximalen (max) Verzögerungszeitpunkt von 1 Takt erfüllen (mit zusätzlichem Spielraum für Taktbaumversatz, Übersprechen etc.). Dies wird üblicherweise halbmanuell ausgeführt und erfordert einen erheblichen Aufwand. Das Verfahren zum Erzeugen einer Statusanzeige unter Verwendung des FIFO-Statusgenerators 100 von 1 ist nicht robust sowie fehleranfällig. Beispielsweise erfordern mehrere Synchronisierer mehr Arbeit und beinhalten ein höheres Risiko.
  • 2A veranschaulicht die Vorrichtung 200 (hier auch als FIFO- oder Pipeline-Statusgenerator 200 bezeichnet) zur Erzeugung eines FIFO- oder Pipeline-Status „voll“ gemäß einigen Ausführungsformen. Der FIFO-Statusgenerator 200 umfasst zwei Johnson- oder Gray-Codezeiger (oder Register, die Zeiger enthalten) 101 und 103; eine Vergleichslogik (z. B. XNOR-Gatter 104, 105a, 105b etc.); ein UND-Gatter 105c (zum Empfangen von Ausgängen aller XNORs) und einen FIFO-Statussynchronisierer 201. Der FIFO-Statussynchronisierer 201 umfasst einen Filter, einen Schmitt-Trigger 202 und die Flipflops 1 und 2 (203a bzw. 203b), die wie gezeigt gekoppelt sind. Der Filter ist als RC-Filter veranschaulicht und unterstützt die Reaktion dahingehend, dass jegliches Rauschen unterdrückt wird. In einigen Ausführungsformen kann ein anderer Filtertyp verwendet werden. In einigen Ausführungsformen wird der Filter entfernt. Hier befinden sich der Schmitt-Trigger 202 und der Filter an den Eingängen der Flipflops 203a und 203b, und der Ausgang des Schmitt-Triggers 202 wird zum Einstellen oder Zurücksetzen der Flipflops 203a und 203b verwendet. Der Eingang des Flipflops 203a ist an einen konstanten Wert (z. B. Masse oder 0 V) gebunden, während der Ausgang des Flipflops 203a als Dateneingang des Flipflops 203b empfangen wird. Um festzustellen, ob der FIFO voll ist, werden die Flipflops 203a und 203b durch den WRITE_CLOCK getaktet. Die XNOR-Gatter (z. B. 104, 105a, 105b etc.) sind Komparatoren, die zwei Eingänge vergleichen. XNOR-Gatter können durch jede geeignete Vergleichsschaltung (oder einen geeigneten Komparator), wie etwa ein XOR-Gatter, ersetzt werden. Für Fachleute auf dem Gebiet ist ersichtlich, dass die kombinatorische Logik unter Verwendung der de-morganschen Gesetze optimiert oder modifiziert werden kann. Solche Modifikationen liegen innerhalb des Schutzumfangs der verschiedenen Ausführungsformen.
  • Der FIFO-Statussynchronisierer 201 von 2A konvergiert den Status direkt aus zwei Zeigern: dem READ_CLOCK zugeordneten Zeiger und dem WRITE_CLOCK zugeordneten Zeiger. In diesem Fall werden gemäß einigen Ausführungsformen unabhängig von der Zeigerbreite keine anderen Synchronisierer verwendet. In einigen Ausführungsformen verwendet die Vorrichtung 200 zur Erzeugung des FIFO-Status standardmäßige zweistufige (Doppelsynchronisation) oder mehrstufige Synchronisierer und Schmitt-Triggerzellen.
  • Der Synchronisierer 203 von 2A nutzt den Vorteil, dass die Assertierung der Signale für „voll“ und „leer“ kein Taktübergangsereignis ist, sondern synchron zu den Schreib- bzw. Lesetaktdomänen stattfindet. Das Signal „voll“ wird zugesichert, wenn der Schreibzeiger den Lesezeiger einholt. Der Schreibzeiger für den Schreibtakt wird erhöht, und die Anzeige für „voll“ wird in der Schreibtaktdomäne verwendet, um Erhöhungen des Schreibzeigers zu steuern. In ähnlicher Weise wird das Signal „leer“ zugesichert, wenn der Lesezeiger den Schreibzeiger einholt und in der Lesetaktdomäne verwendet wird, um die Lesedaten und die Erhöhung des Lesezeigers zu steuern, wie in 2B. gezeigt.
  • Unter erneuter Bezugnahme auf 2A ist die Deassertierung für „voll“ und/oder „leer“ das Taktübergangsereignis. Wenn der andere Zeiger weiter voranschreitet, wird die Assertierung dieser Signale zurückgenommen. Wie bei jeder Deassertierung eines asynchronen Reset/Set-Pins in einer aufeinanderfolgenden Zelle kann dieser Vorteil ein Metastabilitätsrisiko aufweisen, sodass die Synchronisation verwendet wird. Ein Standard-Set-Synchronisierer, der es der Assertierung ermöglicht, sich sofort über einen asynchronen Set-Pin auszubreiten, aber die Deassertierung synchronisiert, deckt diese Gefahr ab. Der Assertierungsbogen wird durch den asynchronen Set-Pin mit einer geeigneten Timing-Closure abgedeckt.
  • Da die Deassertierung keinen zeitliche Bezug zur Assertierung aufweist, kann die Schaltung von 2A auch ein Metastabilitätsrisiko aufweisen, das von der normalen Verletzung der Setup-/Hold-Zeiten getrennt ist. Üblicherweise tritt die Metastabilität in einer sequentiellen Zelle auf, wenn sich der Dateneingang während dem Setup/Hold- oder Reset/Set-Eingang der Zelle innerhalb des Erholungs-/Entfernungsfensters ändert, während der Takt das Pass-Gate zum Zustandsknoten ausschaltet. Der Zustandsknoten erreicht das Rail nicht und wird metastabil. In dieser Schaltung kann dieser Synchronisierer außerhalb des Erholungs-/Entfernungsfensters metastabil werden, wenn die Assertierung und die Deassertierung des Satzes zeitlich nahe genug beieinander liegen, sodass der asynchrone Set/Reset-Pin keine Zeit hat, den Zustandsknoten auf das Rail zu ziehen.
  • Um dieses Metastabilitätsrisiko zu verringern, wird der Schmitt-Trigger 202 gemäß verschiedenen Ausführungsformen vor dem SET-Pin des Synchronisierers 203 hinzugefügt. In einigen Ausführungsformen fungiert der Schmitt-Trigger 202 als Zeitfilter für das Eingangssignal in den/die asynchronen SET-Pin(s) der Flipflops 203a und 203b des Synchronisierers 203, um die Möglichkeit auszuschließen, dass ein kurzer Impuls die Flipflops metastabil macht. Er fügt ausreichend Hysterese zwischen Assertierung und Deassertierung hinzu, um dieses Metastabilitätsrisiko zu beseitigen.
  • 2B veranschaulicht eine Vorrichtung 220 zur Erzeugung eines FIFO-Status „leer“ gemäß einigen Ausführungsformen. Im Vergleich zu 2A wird hier der Lesetakt (READ_CLOCK) verwendet, um die FIFO-Flipflops 1 und 2 (203a bzw. 203b) abzutasten. Somit zeigt der Ausgang (FIFO_EMPTY) des FIFO-Statussynchronisierers an, ob der FIFO leer ist. Die Größe der Synchronisierer von 2A-B ist ungefähr gleich einem Synchronisierer von 1, da die Fläche des Schmitt-Triggers 202 sehr klein ist. Beispielsweise fügt der Schmitt-Trigger 202 nur etwa 6 bis 8 zusätzliche Transistoren hinzu.
  • Während die Ausführungsformen hier zwei Flipflops für den FIFO-Statussynchronisierer offenbaren, kann eine beliebige Anzahl von Flipflops in kaskadierter Form verwendet werden, wenn eine höhere MTBF gewünscht wird. Die Flipflops 203a und 203b (und Flipflops anderer Ausfuhrungsformen) können durch jede geeignete sequentielle Einheit ersetzt werden, die in der Lage ist, Daten abzutasten, ihre Ausgänge zu löschen oder einzustellen etc. Die Flipflops 203a und 203b (und Flipflops anderer Ausführungsformen) können auch ein Scan-Gadget (nicht gezeigt) mit relevanter Scan-Steuerung und Scan-Eingang zum Testen des Betriebs des Synchronisierers enthalten. Während verschiedene Ausführungsformen unter Bezugnahme auf die Punkte 101 und 103 für einen FIFO beschrieben werden, kann der FIFO eine beliebige geeignete Pipeline sein (z. B. eine Reihe von Registern). In einem Beispiel kann der FIFO durch eine LIFO (Last-In-First-Out)-Pipeline ersetzt werden. Die Ausführungsformen können auch auf andere Arten von Pipelines erweitert werden.
  • 3 veranschaulicht das Diagramm 300, das einen Leistungsvergleich gemäß einigen Ausführungsformen zeigt. Es wird die synthetisierte Frequenz, die sowohl mit dem FIFO-Design von 1 (Satz von Punkten 301) als auch mit einem Design unter Verwendung der Ausführungsform von 2A (Satz von Punkten 302) erreicht wird, gezeigt. In diesem Beispiel hat der FIFO von 2A selbst bei niedrigeren FIFO-Tiefen einen Frequenzvorteil von 20 %, und dieser Vorteil steigt bei höheren Tiefen auf 35 % im Vergleich zum FIFO von 1.
  • 4 veranschaulicht das Diagramm 400, das einen Flächenvergleich gemäß einigen Ausführungsformen zeigt. Es wird die FIFO-Fläche, die sowohl mit dem FIFO-Design von 1 (Satz von Punkten 401) als auch mit einem Design unter Verwendung der Ausführungsform von 2A (Satz von Punkten 402) erreicht wird, gezeigt. Die Fläche der Ausführungsform von 2A ist viel kleiner als die Fläche des FIFO-Designs von 1, insbesondere wenn die FIFO-Tiefe zunimmt. 5 veranschaulicht das Diagramm 500, das einen Stromvergleich gemäß einigen Ausführungsformen zeigt. Es wird die FIFO-Stromversorgung, die sowohl mit dem FIFO-Design von 1 (Satz von Punkten 501) als auch mit einem Design unter Verwendung der Ausführungsform von 2A (Satz von Punkten 502) erreicht wird, gezeigt. Die Stromversorgung der Ausführungsform von 2A ist viel kleiner als die Stromversorgung des FIFO-Designs von 1, insbesondere wenn die FIFO-Tiefe zunimmt.
  • Mit zunehmender FIFO-Tiefe nimmt die Anzahl der für die Anzeige von „voll“/„leer“ benötigten Synchronisierer mit dem Design von 1 zu, bleibt jedoch für das Design verschiedener Ausführungsformen unverändert. Dies wirkt sich unmittelbar auf Stromversorgung und Fläche aus, wie in 4 und 5 gezeigt. Der FIFO-Synchronisierer verschiedener Ausführungsformen führt zu signifikanten Einsparungen pro FIFO, insbesondere wenn die FIFO-Tiefe zunimmt. Der FIFO-Synchronisierer verschiedener Ausführungsformen (z. B. 2A-B) spart 23 % Energie am unteren Ende und 68 % am oberen Ende des Graphen. Die Flächeneinsparungen liegen bei etwa 30 % bis 65 %. Bei FIFOs mit höherer Frequenz, die Transistoren mit niedriger Schwellenspannung (VT) verwenden, fällt der Vorteil des neuen Designs deutlicher aus.
  • In einigen Chips können bis zu 500 asynchrone FIFOs vorhanden sein. Unter der Annahme eines 14-nm-Prozesstechnologieknotens in einer durchschnittlichen Tiefe von 64 werden unter Verwendung des Designs von 2A etwa 50 mW Leistung und 65.000 Quadratmikrometer eingespart. Designtrends für System-on-Chips (SoCs) bestehen darin, mehr Taktübergänge auf vollständig asynchrone Übergänge zu verschieben, um eine höhere Leistung zu erzielen, und gleichzeitig die Anzahl der asynchronen Taktdomänen zu erhöhen, um Energie zu sparen.
  • Der FIFO-Synchronisierer verschiedener Ausführungsformen löst alle bekannten Einschränkungen der Erzeugung des FIFO-Status durch Taktübergang. Jeder Status verwendet einen Synchronisierer, unabhängig vom Code oder der FIFO-Tiefe. Dies spart viel Fläche, Leckage und dynamische Stromversorgung und ermöglicht die beste MTBF und „at-speed“-Abtastung. Der FIFO-Status wird durch ein Flipflop gesteuert. Dies garantiert beste Leistung und die IP-übergreifende Integration. Die Codekohärenz ist leicht zu erreichen, da alle Zeigerbits in einem einzigen Synchronisierer konvergieren. Das Metastabilitätsrisiko durch Deassertierung wird vollständig durch einen einzelnen Standard-Zellensynchronisierer abgedeckt, der mit einem Schmitt-Trigger gekoppelt ist.
  • 6A veranschaulicht einen FIFO-Statussynchronisierer „voll“ 600 (welligkeitsbasierter FIFO-Statussynchronisierer „voll“) gemäß einigen Ausführungsformen. Der FIFO-Statussynchronisierer 600 umfasst zwei Johnson- oder Gray-Codezeiger (oder Register, die Zeiger enthalten) 101 und 103, eine Vergleichslogik (z. B. die XNOR-Gatter 104, 105a, 105b etc.), das UND-Gatter 105c (zum Empfangen von Ausgängen aller XNORs) und den FIFO-Statussynchronisierer 601. Der FIFO-Statussynchronisierer 601 umfasst die Flipflops 1 und 2 (601a bzw. 601b) und den Schmitt-Trigger 601c, die wie gezeigt gekoppelt sind. Hier wird der Ausgang des UND-Gatters 105c verwendet, um den Flipflop 601a einzustellen oder zurückzusetzen. Die Dateneingänge des Flipflops 601a und des Flipflops 601b sind an einen konstanten Wert (z. B. Masse oder 0 V) gebunden, während der Ausgang des Flipflops 601a als Eingang des Schmitt-Triggers 601c empfangen wird. Der Ausgang des Schmitt-Triggers 601c wird zum Einstellen oder Zurücksetzen des Flipflops 601b verwendet. Um festzustellen, ob der FIFO voll ist, werden die Flipflops 601a und 601b durch den WRITE_CLOCK getaktet.
  • Der Synchronisierer 600 von 6A nutzt den Vorteil, dass die Assertierung des Signals „voll“/„leer“ kein Taktübergangsereignis ist, sondern synchron zur Schreib- bzw. Lesetaktdomäne stattfindet. Das Signal „voll“ wird zugesichert, wenn der Schreibzeiger den Lesezeiger einholt. Der Schreibzeiger für den Schreibtakt wird erhöht, und die Anzeige für „voll“ wird in der Schreibtaktdomäne benötigt, um Erhöhungen des Schreibzeigers zu steuern. In ähnlicher Weise wird das Signal „leer“ zugesichert, wenn der Lesezeiger den Schreibzeiger einholt und in der Lesetaktdomäne benötigt wird, um die Lesedaten und die Erhöhung des Lesezeigers zu steuern, wie in 6B. gezeigt.
  • Unter erneuter Bezugnahme auf 6A ist die Deassertierung für „voll“/„leer“ ein Taktübergangsereignis. Wenn der andere Zeiger weiter voranschreitet, wird die Assertierung dieser Signale zurückgenommen. Wie bei jeder Deassertierung zu einem asynchronen SET-Pin auf einer Sequenz weist dieser Vorteil ein Metastabilitätsrisiko auf und erfordert eine Synchronisierung. Ein Synchronisierer, der es der Assertierung ermöglicht, sich sofort über einen asynchronen Set-Pin auszubreiten, aber die Rücknahme der Assertierung synchronisiert, deckt diese Gefahr ab. Der Assertierungsbogen wird durch den asynchronen Set-Pin mit einer geeigneten Timing-Closure abgedeckt.
  • Da die Deassertierung keinen zeitliche Bezug zur Assertierung aufweist, kann die Schaltung 600 von 6A ein Metastabilitätsrisiko aufweisen, das von der normalen Verletzung der Setup-/Hold-Zeiten getrennt ist. Üblicherweise tritt die Metastabilität in einer sequentiellen Zelle auf, wenn sich der Dateneingang während dem Setup/Hold-Fenster oder dem Reset/Set-Eingang der Zelle innerhalb des Erholungs-/Entfernungsfensters ändert, während der Takt das Pass-Gate zum Zustandsknoten ausschaltet. Der Zustandsknoten erreicht das Rail nicht und wird metastabil. Wenn in dieser Schaltung die Assertierung und die Deassertierung nahe genug beieinander liegen, sodass der asynchrone Set/Reset-Pin keine Zeit hat, den Statusknoten auf das Rail zu ziehen, wird dieser Synchronisierer metastabil, unabhängig davon, ob die Änderung des Set/Reset-Signals innerhalb des Wiederherstellungs-/Entfernungsfensters erfolgt. In dieser Schaltung werden beide Metastabilitätsquellen durch Hinzufügen des Schmitt-Triggers 601c zwischen den Synchronisier-Flipflops 601a und 601b gemindert. Der Schmitt-Trigger 601c filtert einen metastabilen Wert, der durch eine der oben beschriebenen Bedingungen des ersten Flipflops 601a verursacht wird, dahingehend, dass er sich nicht zum zweiten Flipflop 601b des Synchronisierers 601 ausbreitet, während sich der Zustandsknoten des ersten Flipflops 601a auf einen stabilen Wert erholt. Hier gibt der Ausgang (FIFO_FULL) des FIFO-Statussynchronisierers 601 an, dass der FIFO voll ist.
  • 6B veranschaulicht einen FIFO-Statussynchronisierer „leer“ 620 (welligkeitsbasierter FIFO-Statussynchronisierer „leer“) einer Vorrichtung gemäß einigen Ausführungsformen. Im Vergleich zu 6A wird hier der Lesetakt (READ_CLOCK) verwendet, um die FIFO-Flipflops 601a und 601b abzutasten. Somit zeigt der Ausgang (FIFO_EMPTY) des FIFO-Statussynchronisierers 601 an, ob der FIFO leer ist. Die Größe der Synchronisierer von 6A-B ist ungefähr gleich dem Synchronisierer von 2A, da die Fläche des Schmitt-Triggers 601c sehr klein ist. Beispielsweise fügt die Wirkung des Schmitt-Triggers 601 nur etwa 6 bis 8 zusätzliche Transistoren hinzu. Während die Ausführungsformen hier zwei Flipflops für den FIFO-Statussynchronisierer offenbaren, kann eine beliebige Anzahl von Flipflops in kaskadierter Form verwendet werden, wenn eine höhere MTBF gewünscht wird. Die Leistungsvorteile, die unter Bezugnahme auf 3-5 dargestellt sind, sind auf den Synchronisierer der 6A-B anwendbar.
  • 7 veranschaulicht eine Vorrichtung 700 zur Erzeugung eines FIFO-Status „fast voll“ gemäß einigen Ausführungsformen. Die Vorrichtung 700 zum Bestimmen, ob der FIFO fast voll ist, ähnelt der Vorrichtung von 2A, ausgenommen das Hinzufügen eines Schwellenwerts (z. B. ALMOST_FULL_THRESHOLD). In einigen Ausführungsformen nimmt der Schwellenwert die Voreinstellung für den Johnson- oder Gray-Codezeiger 101' (der dem Johnson- oder Gray-Codezeiger 101 entspricht, jedoch eine Schwellenwertfunktion aufweist) vor, der dem Schreibtakt zugeordnet ist. Der Schwellenwert kann programmierbar sein. Der Schwellenwert ermöglicht das Einstellen eines Wegweisers zur Anzeige eines fast vollen FIFO. In einigen Ausführungsformen erhöht sich der Wert des Schreibzeigers 101 um den Wert von ALMOST_FULL_THRESHOLD, und das Ergebnis wird dann den Komparatoren 104 bis 105 (z. B. XNOR- oder XOR-Gattern) präsentiert. Somit erzeugen die Komparatoren eine Anzeige FIFO_ALMOST_FULL, wenn der freie (ungeschriebene) Speicherplatz im FIFO gleich ALMOST_FULL_THRESHOLD ist.
  • 8 veranschaulicht eine Vorrichtung 800 zur Erzeugung eines FIFO-Status „fast leer“ gemäß einigen Ausführungsformen. Die Vorrichtung zum Bestimmen, ob der FIFO fast leer ist, ähnelt der Vorrichtung von 2B, ausgenommen das Hinzufügen eines Schwellenwerts (z. B. ALMOST_EMPTY_THRESHOLD). In einigen Ausführungsformen legt der Schwellenwert den Johnson- oder Gray-Codezeiger fest, der dem Lesetakt (READ_CLOCK) zugeordnet ist. Der Schwellenwert kann programmierbar sein. In einigen Ausführungsformen erhöht sich der Wert des Lesezeigers 101 um den Wert von ALMOST_EMPTY_THRESHOLD, und das Ergebnis wird dann den Komparatoren 104 bis 105 präsentiert. Somit erzeugen die Komparatoren eine Anzeige FIFO_EMPTY_FULL, wenn der gefüllte (ungeschriebene) Speicherplatz im FIFO gleich ALMOST EMPTY _THRESHOLD ist.
  • 9 veranschaulicht eine Vorrichtung 900 zur Erzeugung eines FIFO-Status „fast voll“ gemäß einigen Ausführungsformen. Die Vorrichtung zum Bestimmen, ob der FIFO fast voll ist, ähnelt der Vorrichtung von 2A, ausgenommen das Hinzufügen eines Schwellenwerts (z. B. ALMOST_FULL_THRESHOLD). Der Schwellenwert wird durch den Addierer 902 zu dem Zeiger hinzugefügt, der dem Schreibtakt (WRITE_CLOCK) zugeordnet ist. Jeder geeignete Addierer kann zum Implementieren des Addierers 902 von 9 verwendet werden. Der Schwellenwert kann programmierbar sein. In einigen Ausführungsformen verwendet der Addierer 902 den Wert des Schreibzeigers 101, erhöht ihn um den Wert von ALMOST_FULL_THRESHOLD und präsentiert das Ergebnis den Komparatoren 104 bis 105. Somit erzeugen die Komparatoren eine Anzeige für einen vollen FIFO, wenn der freie (ungeschriebene) Speicherplatz im FIFO gleich ALMOST_FULL_THRESHOLD ist.
  • 10 veranschaulicht eine Vorrichtung 1000 zur Erzeugung eines FIFO-Status „fast leer“ gemäß einigen Ausführungsformen. Die Vorrichtung zum Bestimmen, ob der FIFO fast leer ist, ähnelt der Vorrichtung von 2B, ausgenommen das Hinzufügen eines Schwellenwerts (z. B. ALMOST_EMPTY_THRESHOLD). Der Schwellenwert wird durch den Addierer 902 zu dem Zeiger hinzugefügt, der dem Schreibtakt (READ_CLOCK) zugeordnet ist. Jeder geeignete Addierer kann zum Implementieren des Addierers 902 von 10 verwendet werden. Der Schwellenwert kann programmierbar sein. In einigen Ausführungsformen verwendet der Addierer 902 den Wert des Lesezeigers 101, erhöht ihn um den Wert von ALMOST_EMPTY_THRESHOLD und präsentiert das Ergebnis den Komparatoren 104 bis 105. Somit erzeugen die Komparatoren eine Anzeige für einen leeren FIFO, wenn der gefüllte (ungeschriebene) Speicherplatz im FIFO gleich ALMOST_EMPTY_THRESHOLD ist.
  • 11A veranschaulicht eine Vorrichtung 1100 zur Erzeugung eines FIFO-Status „voll“ unter Verwendung von zwei Schmitt-Trigger-Puffern gemäß einigen Ausführungsformen. Der FIFO-Statussynchronisierer 1101 umfasst zwei Johnson- oder Gray-Codezeiger (oder Register, die Zeiger enthalten) 101 und 103, eine Vergleichslogik (z. B. die XNOR-Gatter 104, 105a, 105b etc.), das UND-Gatter 105c (zum Empfangen von Ausgängen aller XNORs) und den FIFO-Statussynchronisierer 601. Der FIFO-Statussynchronisierer 601 umfasst die Filter, den Schmitt-Trigger 202c, die Flipflops 1 und 2 (203a bzw. 203b) und den Schmitt-Trigger 203c, die wie gezeigt gekoppelt sind. Hier wird der Ausgang des Schmitt-Triggers 202 verwendet, um den Flipflop 203a einzustellen oder zurückzusetzen. Der Dateneingang des Flipflops 203a ist an einen konstanten Wert (z. B. Masse oder 0 V) gebunden, während der Ausgang des Flipflops 601a als Eingang des Schmitt-Triggers 202c empfangen wird. Der Ausgang des Schmitt-Triggers 203c wird zum Einstellen oder Zurücksetzen des Flipflops 203b verwendet. Um festzustellen, ob der FIFO voll ist, werden die Flipflops 601a und 601b durch den WRITE_CLOCK getaktet.
  • 11B veranschaulicht die Vorrichtung 1120 zur Erzeugung eines FIFO-Status „leer“ unter Verwendung von zwei Schmitt-Trigger-Puffern gemäß einigen Ausführungsformen. Im Vergleich zu 11A wird hier der Lesetakt (READ_CLOCK) verwendet, um die FIFO-Flipflops 203a und 203b abzutasten. Somit zeigt der Ausgang (FIFO_EMPTY) des FIFO-Statussynchronisierers 1101 an, ob der FIFO leer ist.
  • Tabelle 1 veranschaulicht einen Vergleich der verschiedenen Ausführungsformen Tabelle 1
    PVT (Prozess, Spannung, Temperatur) Langsam PVT Schnell
    Ausführung Übergangszeit Grundlinie Maximale Übergangszeit im Metastabilitätsbereich % Verlängerung der Übergangszeit Übergangszeit Grundlinie Maximale Übergangszeit im Metastabilitätsbereich % Verlängerung der Übergangszeit
    2A mit entfernte m Schmitt-Trigger 202 t 43 t, nicht monotoner Übergang 4236 % T 6.8 T, nicht monoton 5854 %
    2A t 2,7t, nicht monotoner Übergang 175 % T 4,3 T, nicht monoton 333 %
    6A t 2,9 t, monotoner Übergang 4% 3,3 T 3,3 T, monoton 0,6 %
    11A t 2,9t, monotoner Übergang 3 % 3,3 T 3,3 T, monoton 0,6%
  • Hier werden die Übergangszeiten von 10% bis 90% des Vcc berechnet. Die prozentuale Zunahme bezieht sich auf die Zunahme der Übergangszeit, wenn der Schmitt-Trigger 203c zwischen den beiden Flipflops 203a und 203b des Synchronisierers 203 in den Designs von 6A und 11A den Einfluss der Metastabilität für den Fall verringert, dass ein Glitch auf den Set-Pin an dem Punkt freigesetzt wird, an dem der Ausgangs-Latch des Flipflops 203a nahe seinem metastabilen Wert liegt. Beispielsweise zeigt die erste Zeile in Tabelle 1, dass in einem Design ohne Schmitt-Trigger 202 oder 203c, die Ausgangsübergangszeit des Flipflops 203a im langsamen PVT-Bereich von einer Basislinie mit t in einem Szenario ohne Metastabilität auf ungefähr 43t ansteigt, wenn die Metastabilität durch den Glitch eingeführt wird, der zu einem ungünstigen Zeitpunkt verschwindet. Im Gegensatz dazu erhöhte sich durch Hinzufügen des Schmitt-Triggers 203c wie in den 6A oder 11A die Ausgangsübergangszeit von 203c geringfügig um nicht mehr als 4% beim Vergleich zwischen einem Szenario mit der Worst-Case-Metastabilität im Ausgangs-Latch des Flipflops 203a und einem Szenario ohne Metastabilität. Darüber hinaus wandelte sich in allen durchgeführten Simulationen die Spannungswellenform im metastabilen Bereich von nicht monoton (Zitterbewegung, bevor ein Wert erreicht wird) am Eingang des Schmitt-Triggers 203c in einen sauberen monotonen Übergang am Ausgang des Schmitt-Triggers 203c. Wird der Schmitt-Trigger 202 auch am SET-Pin hinzugefügt wie in 11A, verringert sich die Anzahl von Szenarien, in denen der Glitch stark genug ist, um den Ausgang des Flipflops 203a überhaupt in Metastabilität zu versetzen, und bietet somit weiteren Schutz.
  • 12 veranschaulicht ein Smart-Gerät oder ein Computersystem oder einen SoC (System-on-Chip) mit einer Vorrichtung zur Erzeugung eines FIFO-Status gemäß einigen Ausführungsformen. Jeder Block (Hardware oder Software) in dem oder in Verbindung mit dem SoC 2401 kann die Vorrichtung zur Erzeugung eines FIFO-Status gemäß einigen Ausführungsformen enthalten.
  • In einigen Ausführungsformen stellt die Vorrichtung 2400 eine geeignete Computervorrichtung dar, wie etwa ein Tablet-Computer, ein Mobiltelefon oder Smartphone, ein Laptop, ein Desktop, ein Internet-der-Dinge (Internet of Things, IOT)-Gerät, ein Server, eine Wearable-Vorrichtung, eine Set-Top-Box, ein drahtlosfähiger E-Reader oder dergleichen. Es versteht sich, dass einige der Komponenten allgemein gezeigt sind und nicht alle Komponenten einer derartigen Vorrichtung in der Vorrichtung 2400 gezeigt sind.
  • In einem Beispiel umfasst die Vorrichtung 2400 einen SoC (System-on-Chip) 2401. Eine beispielhafte Grenze des SoC 2401 ist unter Verwendung von gepunkteten Linien in 12 dargestellt, wobei einige beispielhafte Komponenten so dargestellt sind, dass sie in dem SoC 2401 enthalten sind - der SoC 2401 kann jedoch beliebige geeignete Komponenten der Vorrichtung 2400 enthalten.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 den Prozessor 2404. Der Prozessor 2404 kann eine oder mehrere physische Vorrichtungen, wie etwa Mikroprozessoren, Anwendungsprozessoren, Mikrocontroller, programmierbare Logikvorrichtungen, Verarbeitungskerne oder andere Verarbeitungsmittel einschließen. Die Verarbeitungsoperationen, die durch den Prozessor 2404 durchgeführt werden, schließen das Ausführen einer Betriebsplattform oder eines Betriebssystems ein, auf denen Anwendungen und/oder Gerätefunktionen ausgeführt werden. Die Verarbeitungsoperationen umfassen Operationen in Bezug auf E/A (Eingabe/Ausgabe) mit einem menschlichen Benutzer oder mit anderen Vorrichtungen, Operationen in Bezug auf die Leistungsverwaltung, Operationen in Bezug auf das Verbinden der Vorrichtung 2400 mit einer anderen Vorrichtung und/oder dergleichen. Die Verarbeitungsvorgänge können auch Operationen in Bezug auf Audio-E/A und/oder Anzeigen-E/A einschließen.
  • In einigen Ausführungsformen umfasst der Prozessor 2404 mehrere Verarbeitungskerne (auch als Kerne bezeichnet) 2408a, 2408b, 2408c. Obwohl in 12 lediglich drei Kerne 2408a, 2408b, 2408c dargestellt sind, kann der Prozessor 2404 eine beliebige andere geeignete Anzahl von Verarbeitungskernen enthalten, z. B. zehn oder sogar hunderte von Verarbeitungskernen. Die Prozessorkerne 2408a, 2408b, 2408c können auf einem einzelnen Chip mit integrierter Schaltung (Integrated Circuit, IC) implementiert sein. Darüber hinaus kann der Chip einen oder mehrere gemeinsam genutzte und/oder private Caches, Busse oder Verbindungen, Grafik- und/oder Speichersteuerungen oder andere Komponenten enthalten.
  • In einigen Ausführungsformen enthält der Prozessor 2404 den Cache 2406. In einem Beispiel können Abschnitte des Caches 2406 einzelnen Kernen 2408 zugeordnet sein (z. B. ist ein erster Abschnitt des Caches 2406 dem Kern 2408a zugeordnet, ein zweiter Abschnitt des Caches 2406 dem Kern 2408b zugeordnet etc.). In einem Beispiel können ein oder mehrere Abschnitte des Caches 2406 von zwei oder mehreren Kernen 2408 gemeinsam genutzt werden. Der Cache 2406 kann in verschiedene Ebenen aufgeteilt werden, z. B. Cache der Ebene 1 (L1), Cache der Ebene 2 (L2), Cache der Ebene 3 (L3) etc.
  • In einigen Ausführungsformen kann der Prozessorkern 2404 eine Abrufeinheit zum Abrufen von Anweisungen (einschließlich Anweisungen mit bedingten Verzweigungen) zur Ausführung durch den Kern 2404 enthalten. Die Anweisungen können von beliebigen Speichergeräten wie dem Speicher 2430 abgerufen werden. Der Prozessorkern 2404 kann auch eine Dekodiereinheit enthalten, um den abgerufenen Befehl zu dekodieren. Beispielsweise kann die Dekodiereinheit den abgerufenen Befehl in eine Vielzahl von Mikrooperationen dekodieren. Der Prozessorkern 2404 kann eine Planungseinheit enthalten, um verschiedene Operationen auszuführen, die mit dem Speichern von dekodierten Anweisungen verbunden sind. Beispielsweise kann die Planungseinheit Daten von der Dekodiereinheit verwahren, bis die Anweisungen zum Versand bereit sind, z. B. bis alle Quellwerte einer dekodierten Anweisung verfügbar werden. In einer Ausführungsform kann die Planungseinheit dekodierte Anweisungen zur Ausführung durch eine Ausführungseinheit planen und/oder ausgeben (oder versenden).
  • Die Ausführungseinheit kann die versendeten Anweisungen ausführen, nachdem sie dekodiert (z. B. von der Dekodiereinheit) und versandt (z. B. von der Planungseinheit) wurden. In einer Ausführungsform kann die Ausführungseinheit mehr als eine Ausführungseinheit enthalten (wie eine Bildgebungsrecheneinheit, eine Grafikrecheneinheit, eine Allzweckrecheneinheit etc.). Die Ausführungseinheit kann auch verschiedene arithmetische Operationen wie Addition, Subtraktion, Multiplikation und/oder Division ausführen und kann eine oder mehrere arithmetische Logikeinheiten (Arithmetic Logic Units, ALUs) enthalten. In einer Ausführungsform kann ein Co-Prozessor (nicht gezeigt) verschiedene arithmetische Operationen in Verbindung mit der Ausführungseinheit ausführen.
  • Ferner kann die Ausführungseinheit Anweisungen ungeordnet ausführen. Daher kann der Prozessorkern 2404 in einer Ausführungsform ein ungeordneter Prozessorkern sein. Der Prozessorkern 2404 kann auch eine Rückordnungseinheit enthalten. Die Rückordnungseinheit kann ausgeführte Anweisungen nach ihrer Festlegung zurücknehmen. In einer Ausführungsform kann die Rücknahme der ausgeführten Anweisungen dazu führen, dass der Prozessorzustand durch die Ausführung der Anweisungen festgelegt wird, die Zuordnung der von den Anweisungen verwendten physischen Register aufgehoben wird etc. Der Prozessorkern 2404 kann auch eine Buseinheit enthalten, um die Kommunikation zwischen Komponenten des Prozessorkerns 2404 und anderen Komponenten über einen oder mehrere Busse zu ermöglichen. Der Prozessorkern 2404 kann auch ein oder mehrere Register zum Speichern von Daten enthalten, auf die verschiedene Komponenten des Kerns 2404 zugreifen (wie etwa Werte, die sich auf zugewiesene App-Prioritäten und/oder die Zuordnung von Subsystemzuständen (Modi) beziehen).
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 die Konnektivitätsschaltungen 2431. Beispielsweise enthalten die Konnektivitätsschaltungen 2431 Hardwarevorrichtungen (z. B. drahtlose und/oder drahtgebundene Verbinder und Kommunikationshardware) und/oder Softwarekomponenten (z. B. Treiber, Protokollstapel), um der Vorrichtung 2400 zu ermöglichen, mit externen Vorrichtungen zu kommunizieren. Die Vorrichtung 2400 kann von den externen Geräten getrennt sein, wie etwa anderen Computervorrichtungen, drahtlosen Zugangspunkten oder Basisstationen etc.
  • In einem Beispiel können die Konnektivitätsschaltungen 2431 mehrere verschiedene Arten von Konnektivität enthalten. Verallgemeinert gesagt können die Konnektivitätsschaltungen 2431 zellulare Konnektivitätsschaltungen, drahtlose Konnektivitätsschaltungen etc. enthalten. Bei den Konnektivitätsschaltungen 2431 beziehen sich zellulare Konnektivitätsschaltungen allgemein auf eine zellulare Netzwerkverbindung, die von Mobilfunkanbietern bereitgestellt wird, wie etwa über das globale System für Mobilkommunikation (Global System for Mobile Communications, GSM) oder dessen Variationen oder Derivate, Codemultiplex-Mehrfachzugriff (Code Division Multiple Access, CDMA) oder dessen Variationen oder Derivate, Zeitmultiplex (Time Division Multiplexing, TDM) oder dessen Variationen oder Derivate, dem Universal Mobile Telecommunications System (UMTS) gemäß 3rd Generation Partnership Project (3GPP), dem 3GPP Long Term Evolution (LTE)-System oder dessen Variationen oder Derivate, dem 3GPP LTE-Advanced (LTE-A)-System oder dessen Variationen oder Derivate, dem Fifth Generation (5G)-Drahtlossystem oder dessen Variationen oder Derivate, dem 5G-Mobilfunknetzwerksystem oder dessen Variationen oder Derivate, dem 5G New Radio (NR)-System oder dessen Variationen oder Derivate oder andere Standards für Mobilfunkdienste. Bei den Konnektivitätsschaltungen 2431 beziehen sich drahtlose Konnektivitätsschaltungen (oder drahtlose Schnittstellen) auf drahtlose Konnektivität, die nicht zellular ist, und können persönliche Netzwerke (wie etwa Bluetooth, Nahfeld etc.), lokale Netzwerke (wie etwa WLAN) und/oder Weitverkehrsnetzwerke (wie etwa WiMax) und/oder andere drahtlose Kommunikation einschließen. In einem Beispiel können die Konnektivitätsschaltungen 2431 eine Netzwerkschnittstelle enthalten, wie etwa eine drahtgebundene oder drahtlose Schnittstelle, sodass eine Ausführungsform des Systems in ein drahtloses Gerät, beispielsweise ein Mobiltelefon oder einen persönlichen digitalen Assistenten, integriert werden kann.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 einen Steuer-Hub 2432, der Hardwaregeräte und/oder Softwarekomponenten darstellt, die mit der Interaktion mit einem oder mehreren E/A-Geräten in Zusammenhang stehen. Beispielsweise kann der Prozessor 2404 mit einer oder mehreren Anzeigevorrichtungen 2422, einem oder mehreren Peripheriegeräten 2424, Speichervorrichtungen 2428, einem oder mehreren anderen externen Geräten 2429 etc. über den Steuer-Hub 2432 kommunizieren. Der Steuer-Hub 2432 kann ein Chipsatz, ein Plattform-Steuer-Hub (Platform Control Hub, PCH) und/oder dergleichen sein.
  • Beispielsweise veranschaulicht der Steuer-Hub 2432 einen oder mehrere Verbindungspunkte für zusätzliche Geräte, die mit der Vorrichtung 2400 verbunden sind, durch die z.B. ein Benutzer mit dem System interagieren könnte. Beispielsweise können Vorrichtungen (z. B. die Vorrichtungen 2429), die an die Vorrichtung 2400 angeschlossen werden können, Mikrofonvorrichtungen, Lautsprecher oder Stereosysteme, Audiogeräte, Videosysteme oder andere Anzeigevorrichtungen, Tastatur- oder Zifferntastaturvorrichtungen oder andere E/A-Vorrichtungen zur Verwendung mit bestimmten Anwendungen sein, wie etwa Kartenleser oder andere Vorrichtungen.
  • Wie vorstehend erwähnt, kann der Steuer-Hub 2432 mit Audiogeräten, der Anzeigevorrichtung 2422 etc. interagieren. Beispielsweise kann eine Eingabe durch ein Mikrofon oder eine andere Audiovorrichtung eine Eingabe oder Befehle für eine oder mehrere Anwendungen oder Funktionen der Vorrichtung 2400 bereitstellen. Des Weiteren kann die Audioausgabe anstelle oder zusätzlich zur Anzeigeausgabe bereitgestellt werden. In einem anderen Beispiel fungiert die Anzeigevorrichtung 2422, wenn die Anzeigevorrichtung 2422 einen Touchscreen enthält, auch als Eingabegerät, das zumindest teilweise von dem Steuer-Hub 2432 verwaltet werden kann. Die Computervorrichtung 2400 kann auch zusätzliche Tasten oder Schalter aufweisen, um E/A-Funktionen bereitzustellen, die von dem Steuer-Hub 2432 verwaltet werden. In einer Ausführungsform verwaltet der Steuer-Hub 2432 Geräte wie Beschleunigungsmesser, Kameras, Lichtsensoren oder andere Umgebungssensoren oder andere Hardware, die in der Vorrichtung 2400 enthalten sein kann. Die Eingabe kann ein Teil der direkten Benutzerinteraktion sein sowie umgebungsbezogene Eingaben für das System bereitstellen, um dessen Betrieb zu beeinflussen (wie beispielsweise Filtern nach Rauschen, Anpassen von Anzeigevorrichtungen für die Helligkeitserkennung, Anwenden eines Blitzes für eine Kamera oder andere Merkmale).
  • In einigen Ausführungsformen kann der Steuer-Hub 2432 unter Verwendung eines geeigneten Kommunikationsprotokolls mit verschiedenen Vorrichtungen gekoppelt werden, z. B. PCIe (Peripheral Component Interconnect Express), USB (Universal Serial Bus), Thunderbolt, HDMI (High Definition Multimedia Interface), Firewire etc.
  • In einigen Ausführungsformen stellt die Anzeigevorrichtung 2422 Hardware-(z. B. Anzeigevorrichtungen) und Software-Komponenten (z. B. Treiber) dar, die eine visuelle und/oder taktile Anzeigevorrichtung für einen Benutzer bereitstellen, um mit der Vorrichtung 2400 zu interagieren. Die Anzeigevorrichtung 2422 kann eine Anzeigeschnittstelle, einen Anzeigbildschirm und/oder ein Hardwaregerät enthalten, die verwendet werden, um einem Benutzer eine Anzeige bereitzustellen. In einigen Ausführungsformen umfasst die Anzeigevorrichtung 2422 eine Touchscreen- (oder Touchpad-) Vorrichtung, die einem Benutzer sowohl Ausgabe als auch Eingabe bereitstellt. In einem Beispiel kann die Anzeige 2422 direkt mit dem Prozessor 2404 kommunizieren. Bei der Anzeigevorrichtung 2422 kann es sich um eine oder mehrere interne Anzeigevorrichtungen handeln, wie in einer mobilen elektronischen Vorrichtung oder einer Laptopvorrichtung oder einer externen Anzeigevorrichtung, die über eine Anzeigeschnittstelle (z. B. DisplayPort etc.) angeschlossen ist. In einer Ausführungsform kann die Anzeige 2422 eine am Kopf angebrachte Anzeigevorrichtung (Head Mounted Display, HMD) sein, wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung in VR (Virtual Reality)-Anwendungen oder AR (Augmented Reality)-Anwendungen.
  • In einigen Ausführungsformen und obwohl in der Figur nicht dargestellt, kann die Vorrichtung 2400 zusätzlich zu (oder anstelle von) dem Prozessor 2404 eine Grafikprozessoreinheit (GPU) enthalten, die einen oder mehrere Grafikverarbeitungskerne umfasst, die einen oder mehrere Aspekte der Anzeige von Inhalten auf der Anzeigevorrichtung 2422 steuern können.
  • Der Steuer-Hub 2432 (oder der Plattform-Controller-Hub) kann Hardwareschnittstellen und -anschlüsse sowie Softwarekomponenten (z. B. Treiber, Protokollstapel) enthalten, um periphere Verbindungen herzustellen, z. B. zu den Peripheriegeräten 2424.
  • Es versteht sich, dass die Vorrichtung 2400 sowohl eine Peripherievorrichtung für andere Computervorrichtungen sein kann als auch Peripheriegeräte aufweisen kann, die mit ihr verbunden sind. Die Vorrichtung 2400 kann einen „Docking“-Anschluss zum Anschließen anderer Computervorrichtungen für Zwecke wie das Verwalten (z. B. Herunterladen und/oder Hochladen, Ändern, Synchronisieren) von Inhalten auf der Vorrichtung 2400 aufweisen. Zusätzlich kann ein Docking-Anschluss der Vorrichtung 2400 ermöglichen, sich mit bestimmten Peripheriegeräten zu verbinden, um es der Computervorrichtung 2400 zu ermöglichen, die Ausgabe von Inhalten zu steuern, beispielsweise an audiovisuelle oder andere Systeme.
  • Zusätzlich zu einem proprietären Docking-Anschluss oder einer anderen proprietären Verbindungshardware kann die Vorrichtung 2400 Peripherieanschlüsse über übliche oder standardbasierte Anschlüsse herstellen. Übliche Arten können einen Universal Serial Bus (USB)-Anschluss (der eine beliebige Anzahl von verschiedenen Hardwareschnittstellen einschließen kann), DisplayPort einschließlich MiniDisplayPort (MDP), High Definition Multimedia Interface (HDMI), FireWire oder andere Arten einschließen.
  • In einigen Ausführungsformen können Konnektivitätsschaltungen 2431 mit dem Steuer-Hub 2432 gekoppelt sein, z. B. zusätzlich zu oder anstelle der direkten Kopplung mit dem Prozessor 2404. In einigen Ausführungsformen kann die Anzeigevorrichtung 2422 mit dem Steuer-Hub 2432 gekoppelt sein, z. B. zusätzlich zu oder anstelle von der direkten Kopplung mit dem Prozessor 2404.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 einen Speicher 2430, der über die Speicherschnittstelle 2434 mit dem Prozessor 2404 verbunden ist. Der Speicher 2430 enthält Speichervorrichtungen zum Speichern von Informationen in der Vorrichtung 2400.
  • In einigen Ausführungsformen enthält der Speicher 2430 eine Vorrichtung zum Aufrechterhalten einer stabilen Taktung, wie unter Bezugnahme auf verschiedene Ausführungsformen beschrieben. Der Speicher kann nichtflüchtige (der Zustand ändert sich nicht, wenn die Leistungsversorgung der Speichervorrichtung unterbrochen wird) und/oder flüchtige (der Zustand ist unbestimmt, wenn die Leistungsversorgung der Speichervorrichtung unterbrochen wird) Speichervorrichtungen einschließen. Die Speichervorrichtung 2430 kann eine Vorrichtung mit dynamischen Direktzugriffsspeicher (Dynamic Random-Access Memory, DRAM), eine Vorrichtung mit statischem Direktzugriffsspeicher (Static Random-Access Memory, DRAM), eine Flash-Speichervorrichtung, eine Phasenübergangsspeichervorrichtung oder eine andere Speichervorrichtung mit einer geeigneten Leistung sein, um als Prozessspeicher zu dienen . In einer Ausführungsform kann der Speicher 2430 als Systemspeicher für die Vorrichtung 2400 betrieben werden, um Daten und Anweisungen zur Verwendung zu speichern, wenn der eine oder die mehreren Prozessoren 2404 eine Anwendung oder einen Prozess ausführen. Der Speicher 2430 kann Anwendungsdaten, Benutzerdaten, Musik, Fotos, Dokumente oder andere Daten sowie Systemdaten (ob langfristig oder vorübergehend) in Bezug auf die Ausführung der Anwendungen und Funktionen der Vorrichtung 2400 speichern.
  • Elemente verschiedener Ausführungsformen und Beispiele werden auch als maschinenlesbares Medium (z. B. der Speicher 2430) zum Speichern der computerausführbaren Anweisungen (z. B. Anweisungen zum Implementieren anderer hierin erörterter Prozesse) bereitgestellt. Das maschinenlesbare Medium (z. B. der Speicher 2430) kann, ohne darauf beschränkt zu sein, Flash-Speicher, optische Platten, CD-ROMs, DVD-ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, einen Phasenwechselspeicher (PCM) oder andere Arten von maschinenlesbaren Medien umfassen, die zum Speichern elektronischer oder computerausführbarer Anweisungen geeignet sind. Beispielsweise können Ausführungsformen der Offenbarung als Computerprogramm (z. B. ein BIOS) heruntergeladen werden, das von einem entfernten Computer (z. B. einem Server) über Datensignale mittels einer Kommunikationsverbindung (z. B. ein Modem oder eine Netzwerkverbindung) an einen anfordernden Computer (z. B. einen Client) übertragen werden kann.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 die Temperaturmessschaltungen 2440, z. B. zum Messen der Temperatur verschiedener Komponenten der Vorrichtung 2400. In einem Beispiel können die Temperaturmessschaltungen 2440 eingebettet oder mit verschiedenen Komponenten gekoppelt oder an diesen angebracht sein, deren Temperatur gemessen und überwacht werden soll. Beispielsweise können die Temperaturmessschaltungen 2440 die Temperatur von (oder in) einem oder mehreren der Kerne 2408a, 2408b, 2408c, des Spannungsreglers 2414, des Speichers 2430, einer Hauptplatine des SoC 2401 und/oder einer beliebigen geeigneten Komponente der Vorrichtung 2400 messen.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 die Leistungsmessschaltungen 2442, z. B. zum Messen der von der einer oder mehreren Komponenten der Vorrichtung 2400 verbrauchten Leistung. In einem Beispiel können zusätzlich zu oder anstelle der Leistungsmessung die Leistungsmessschaltungen 2442 Spannung und/oder Strom messen. In einem Beispiel können die Leistungsmessschaltungen 2442 in verschiedenen Komponenten eingebettet, mit diesen gekoppelt oder an diese angeschlossen sein, um deren Leistung, Spannung und/oder Stromverbrauch zu messen und überwachen. Beispielsweise können die Leistungsmessschaltungen 2442 die Leistung, den Strom und/oder die Spannung, die von einem oder mehreren Spannungsreglern 2414 zugeführt werden, die Leistung, die dem SoC 2401 zugeführt wird, die Leistung, die der Vorrichtung 2400 zugeführt wird, die von dem Prozessor 2404 (oder einer anderen Komponente) der Vorrichtung 2400 verbraucht wird, etc. messen.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 eine oder mehrere Spannungsreglerschaltungen, die allgemein als Spannungswandler (Voltage Regulator, VR) 2414 bezeichnet werden. Der VR 2414 erzeugt Signale mit geeigneten Spannungspegeln, die zugeführt werden können, um geeignete Komponenten der Vorrichtung 2400 zu betreiben. Es wird lediglich als Beispiel dargestellt, dass der VR 2414 Signale an den Prozessor 2404 der Vorrichtung 2400 liefert. In einigen Ausführungsformen empfängt der VR 2414 ein oder mehrere Signale zur Spannungsidentifizierung (Voltage Identification,VID) und erzeugt das Spannungssignal basierend auf den VID-Signalen auf einem geeigneten Pegel. Für den VR 2414 können verschiedene Arten von VRs verwendet werden. Beispielsweise kann der VR 2414 einen Buck-Spannungswandler, einen Boost-Spannungswandler, einen kombinierten Buck-Boost-Spannungswandler, einen Low Dropout (LDO)-Regler, einen schaltenden DC-DC-Wandler, einen Controller-basierten DC-DC-Wandler mit konstanter Einschaltdauer etc. enthalten. Ein Buck-Spannungswandler wird allgemein in Stromversorgungsanwendungen verwendet, bei denen eine Eingangsspannung in einem Verhältnis kleiner als eins in eine Ausgangsspannung umgewandelt werden muss. Ein Boost-Spannungswandler wird allgemein in Stromversorgungsanwendungen verwendet, bei denen eine Eingangsspannung in einem Verhältnis größer als eins in eine Ausgangsspannung umgewandelt werden muss. In einigen Ausführungsformen hat jeder Prozessorkern seinen eigenen Spannungswandler, der von der PCU 2410a/b und/oder der PMIC 2412 gesteuert wird. In einigen Ausführungsformen verfügt jeder Kern über ein Netzwerk verteilter LDOs, um eine effiziente Steuerung für die Leistungsverwaltung bereitzustellen. Die LDOs können digital, analog oder eine Kombination aus digitalen oder analogen LDOs sein. In einigen Ausführungsformen umfasst der VR 2414 eine Stromverfolgungsvorrichtung zum Messen des Stroms durch die Stromversorgungsschiene(n) .
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 eine oder mehrere Taktgeneratorschaltungen, die allgemein als Taktgenerator 2416 bezeichnet werden. Der Taktgenerator 2416 erzeugt Taktsignale mit geeigneten Frequenzpegeln, die beliebigen geeigneten Komponenten der Vorrichtung 2400 zugeführt werden können. Es wird lediglich als Beispiel dargestellt, dass der Taktgenerator 2416 Taktsignale an den Prozessor 2404 der Vorrichtung 2400 liefert. In einigen Ausführungsformen empfängt der Taktgenerator 2416 ein oder mehrere Frequenzidentifikations (FID)-Signale und erzeugt basierend auf den FID-Signalen die Taktsignale mit einer geeigneten Frequenz.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 eine Batterie 2418, die verschiedene Komponenten der Vorrichtung 2400 mit Strom versorgt. Es wird lediglich als Beispiel dargestellt, dass die Batterie 2418 den Prozessor 2404 mit Strom versorgt. Obwohl in den Figuren nicht dargestellt, kann die Vorrichtung 2400 eine Ladeelektronik umfassen, z. B. zum Aufladen der Batterie, basierend auf einer Wechselstromversorgung (AC), die von einem Wechselstromadapter empfangen wird.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 eine Leistungssteuereinheit (Power Control Unit, PCU) 2410 (auch als Leistungsverwaltungseinheit (Power Management Unit, PMU), Leistungssteuerung etc. bezeichnet). In einem Beispiel können einige Abschnitte der PCU 2410 durch einen oder mehrere Verarbeitungskerne 2408 implementiert werden, und diese Abschnitte der PCU 2410 werden symbolisch unter Verwendung eines gepunkteten Kästchens dargestellt und als PCU 2410a gekennzeichnet. In einem Beispiel können andere Abschnitte der PCU 2410 außerhalb der Verarbeitungskerne 2408 implementiert werden, und diese Abschnitte der PCU 2410 werden symbolisch unter Verwendung eines gepunkteten Kästchens dargestellt und als PCU 2410b gekennzeichnet. Die PCU 2410 kann verschiedene Leistungsverwaltungsvorgänge für die Vorrichtung 2400 implementieren. Die PCU 2410 kann Hardwareschnittstellen, Hardwareschaltungen, Verbinder, Register etc. sowie Softwarekomponenten (z B. Treiber, Protokollstapel) enthalten, um verschiedene Leistungsverwaltungsvorgänge für die Vorrichtung 2400 zu implementieren.
  • In einigen Ausführungsformen umfasst die Vorrichtung 2400 eine integrierte Stromüberwachungsschaltung (Power Management Integrated Circuit, PMIC) 2412, um z. B. verschiedene Leistungsverwaltungsvorgänge für die Vorrichtung 2400 zu implementieren. In einigen Ausführungsformen ist die PMIC 2412 eine rekonfigurierbarer Stromüberwachungsschaltung (RPMIC) und/oder ein IMVP (Intel® Mobile Voltage Positioning). In einem Beispiel befindet sich die PMIC in einem IC-Chip, der von dem Prozessor 2404 getrennt ist. Die kann verschiedene Leistungsverwaltungsvorgänge für die Vorrichtung 2400 implementieren. Die PMIC 2412 kann Hardwareschnittstellen, Hardwareschaltungen, Verbinder, Register etc. sowie Softwarekomponenten (z B. Treiber, Protokollstapel) enthalten, um verschiedene Leistungsverwaltungsvorgänge für die Vorrichtung 2400 zu implementieren.
  • In einem Beispiel umfasst die Vorrichtung 2400 eine PCU 2410, eine PMIC 2412 oder beides. In einem Beispiel können die PCU 2410 oder die PMIC 2412 in der Vorrichtung 2400 fehlen, und daher werden diese Komponenten unter Verwendung von gepunkteten Linien dargestellt.
  • Verschiedene Leistungsverwaltungsvorgänge der Vorrichtung 2400 können von der PCU 2410, der PMIC 2412 oder einer Kombination von PCU 2410 und PMIC 2412 durchgeführt werden. Beispielsweise können die PCU 2410 und/oder die PMIC 2412 einen Leistungszustand (z. B. ein P-Zustand) für verschiedene Komponenten der Vorrichtung 2400 auswählen. Beispielsweise können die PCU 2410 und/oder die PMIC 2412 einen Leistungszustand (z. B. gemäß der Advanced Configuration and Power Interface (ACPI)-Spezifikation) für verschiedene Komponenten der Vorrichtung 2400 auswählen. Es wird lediglich als Beispiel dargestellt, dass die PCU 2410 und/oder die PMIC 2412 verschiedene Komponenten der Vorrichtung 2400 veranlassen, in einen Ruhezustand, in einen aktiven Zustand, in einen geeigneten C-Zustand (z. B. C0-Zustand oder einen anderen geeigneten C-Zustand gemäß der ACPI-Spezifikation) etc. zu wechseln. In einem Beispiel können die PCU 2410 und/oder die PMIC 2412 eine von dem VR 2414 ausgegebene Spannung und/oder eine Frequenz eines vom Taktgenerator ausgegebenen Taktsignals steuern, z. B. durch Ausgeben des VID-Signals bzw. des FID-Signals. In einem Beispiel können die PCU 2410 und/oder die PMIC 2412 den Stromverbrauch der Batterie, das Laden der Batterie 2418 und Funktionen im Zusammenhang mit dem Energiesparbetrieb steuern.
  • Der Taktgenerator 2416 kann einen Phasenregelschleife (Phase Locked Loop, PLL), eine Frequenzregelschleife (Frequency Locked Loop, FLL) oder einen beliebigen geeigneten Taktgeber umfassen. In einigen Ausführungsformen hat jeder Kern des Prozessors 2404 seinen eigenen Taktgeber. Somit kann jeder Kern mit einer Frequenz arbeiten, die von der Betriebsfrequenz des anderen Kerns unabhängig ist. In einigen Ausführungsformen führen die PCU 2410 und/oder die PMIC 2412 eine adaptive oder dynamische Frequenzskalierung oder -anpassung durch. Beispielsweise kann die Taktfrequenz eines Prozessorkerns erhöht werden, wenn der Kern nicht nahe seiner maximalen Stromverbrauchsschwelle oder -grenze betrieben wird. In einigen Ausführungsformen bestimmen die PCU 2410 und/oder die PMIC 2412 den Betriebszustand jedes Kerns eines Prozessors und passen die Frequenz und/oder die Versorgungsspannung dieses Kerns opportunistisch an, ohne dass der Taktgeber des Kerns (z. B. die PLL dieses Kerns) eine Sperre verliert, wenn die PCU 2410 und/oder die PMIC 2412 bestimmt, dass der Kern unterhalb eines angestrebten Leistungspegel betrieben wird. Wenn beispielsweise ein Kern Strom aus einer Stromversorgungsschiene bezieht, der geringer ist als der für diesen Kern oder Prozessor 2404 zugewiesene Gesamtstrom, können die PCU 2410 und/oder die PMIC 2412 die Stromaufnahme für diesen Kern oder Prozessor 2404 vorübergehend erhöhen (z. B. durch Erhöhen der Taktfrequenz und/oder des Versorgungsspannungspegels), sodass der Kern oder der Prozessor 2404 eine höhere Leistung erbringen kann. Somit können Spannung und/oder Frequenz für den Prozessor 2404 vorübergehend erhöht werden, ohne die Produktzuverlässigkeit zu beeinträchtigen.
  • In einem Beispiel können die PCU 2410 und/oder die PMIC 2412 Leistungsverwaltungsvorgänge ausführen, z. B. zumindest teilweise basierend auf dem Empfang von Messungen der Leistungsmessschaltungen 2442, der Temperaturmessschaltungen 2440, dem Ladepegel der Batterie 2418 und/oder beliebigen anderen geeigneten Informationen, die für die Leistungsverwaltung verwendet werden können. Zu diesem Zweck ist die PMIC 2412 kommunikativ mit einem oder mehreren Sensoren gekoppelt, um verschiedene Werte/Variationen in einem oder mehreren Faktoren zu erfassen/erkennen, die sich auf die Leistung/das Wärmeverhalten des Systems/der Plattform auswirken. Beispiele für den einen oder die mehreren Faktoren umfassen elektrischen Strom, Spannungsabfall, Temperatur, Betriebsfrequenz, Betriebsspannung, Stromverbrauch, Kommunikationsaktivität zwischen den Kernen etc. Einer oder mehrere dieser Sensoren können in physischer Nähe (und/oder durch thermischem Kontakt/Kopplung) mit einer oder mehreren Komponenten oder Logik-/IP-Blöcken eines Computersystems bereitgestellt werden. Zusätzlich können Sensoren in mindestens einer Ausführungsform direkt mit der PCU 2410 und/oder der PMIC 2412 gekoppelt sein, um der PCU 2410 und/oder der PMIC 2412 zu ermöglichen, die Energie des Prozessorkerns zumindest teilweise basierend auf einem/den Wert(en) zu verwalten, die von einem oder mehreren der Sensoren erkannt wurden.
  • Ebenfalls veranschaulicht ist ein beispielhafter Softwarestapel der Vorrichtung 2400 (obwohl nicht alle Elemente des Softwarestapels dargestellt sind). Es wird lediglich als Beispiel dargestellt, dass die Prozessoren 2404 die Anwendungsprogramme 2450, das Betriebssystem 2452, ein oder mehrere Leistungsverwaltungs (PM)-spezifische (z. B. allgemein als PM-Anwendungen 2458 bezeichnete) Anwendungsprogramme und/oder dergleichen ausführen können. Die PM-Anwendungen 2458 können auch von der PCU 2410 und/oder der PMIC 2412 ausgeführt werden. Das Betriebssystem 2452 kann auch eine oder mehrere PM-Anwendungen 2456a, 2456b, 2456c enthalten. Das Betriebssystem 2452 kann auch die verschiedenen Treiber 2454a, 2454b, 2454c etc. enthalten, von denen einige für Leistungsverwaltungszwecke spezifisch sein können. In einigen Ausführungsformen kann die Vorrichtung 2400 ferner ein Basic Input/Output System (BIOS) 2420 umfassen. Das BIOS 2420 kann mit dem Betriebssystem 2452 (z. B. über einen oder mehrere der Treiber 2454) mit den Prozessoren 2404 etc. kommunizieren.
  • Beispielsweise können eine oder mehrere der PM-Anwendungen 2458, 2456, der Treiber 2454, des BIOS 2420 etc. verwendet werden, um leistungsverwaltungsspezifische Aufgaben zu implementieren, z. B. um die Spannung und/oder die Frequenz verschiedener Komponenten der Vorrichtung 2400 zu steuern, um den Aufweckzustand, Ruhezustand und/oder jeden anderen geeigneten Leistungszustand der verschiedenen Komponenten der Vorrichtung 2400 zu steuern, den Leistungsverbrauch der Batterie, das Laden der Batterie 2418, Merkmale im Zusammenhang mit dem Energiesparbetrieb etc. zu steuern.
  • In einigen Ausführungsformen ist die Batterie 2418 eine Lithium-Metall-Batterie mit einer Druckkammer, um einen gleichmäßigen Druck auf eine Batterie zu ermöglichen. Die Druckkammer wird von Metallplatten (wie etwa eine Druckausgleichsplatte) getragen, die verwendet werden, um den Druck gleichmäßig auf der Batterie zu verteilen. Die Druckkammer kann Druckgas, elastisches Material, eine Federplatte etc. enthalten. Die Außenverkleidung der Druckkammer kann sich frei biegen, wird an ihren Rändern von einer (Metall-)Verkleidung gehalten und verteilt jedoch den Druck stets gleichmäßig auf der Platte, die die Batteriezelle zusammendrückt. Die Druckkammer übt einen gleichmäßigen Druck auf die Batterie aus, der verwendet wird, um eine Batterie mit hoher Energiedichte mit beispielsweise um 20 % längerer Batterielebensdauer zu ermöglichen.
  • In einigen Ausführungsformen kann der auf der PCU 2410a/b ausgeführte pCode zusätzliche Rechen- und Telemetrieressourcen für die Laufzeitunterstützung des pCode aktivieren. Hier bezieht sich pCode auf eine Firmware, die von der PCU 2410a/b zur Leistungsverwaltung des 2401 ausgeführt wird. Beispielsweise kann der pCode Frequenzen und geeignete Spannungen für den Prozessor einstellen. Ein Teil des pCodes ist über das Betriebssystem 2452 zugänglich. In verschiedenen Ausführungsformen werden Mechanismen und Verfahren bereitgestellt, die einen Energie-Leistungseinstellungs (Energy Performance Preference, EPP)-Wert basierend auf Arbeitslasten, Benutzerverhalten und/oder Systembedingungen dynamisch ändern. Es gibt möglicherweise eine genau definierte Schnittstelle zwischen dem Betriebssystem 2452 und dem pCode. Die Schnittstelle kann die Softwarekonfiguration mehrerer Parameter ermöglichen oder erleichtern und/oder Hinweise für den pCode liefern. Beispielsweise kann ein EPP-Parameter einen pCode-Algorithmus darüber informieren, ob Leistung oder Batterielebensdauer wichtiger sind.
  • Diese Unterstützung kann auch durch das Betriebssystem 2452 erfolgen, indem die Unterstützung für maschinelles Lernen als Teil des Betriebssystems 2452 integriert ist, und es wird entweder der EPP-Wert, den das Betriebssystem der Hardware (z. B. verschiedene Komponenten des SCO 2401) mittels einer Maschinenlernvorhersage als Hinweis liefert, abgestimmt oder die Maschinenlernvorhersage an den pCode auf ähnliche Weise wie bei einem Dynamic Tuning Technology (DTT)-Treiber bereitgestellt. In diesem Modell kann das Betriebssystem 2452 für denselben Satz von Telemetrien sichtbar sein, die für DTT verfügbar sind. Als Ergebnis einer Hinweisgebung im Rahmen einer DTT-Maschinenlernumgebung kann der pCode seine internen Algorithmen abstimmen, um nach der Aktivierungstyp-Maschinenlernvorhersage optimale Leistungs- und Leistungsergebnisse zu erzielen. Der pCode kann beispielweise die Verantwortung für die Änderung der Prozessorauslastung erhöhen, um eine schnelle Reaktion auf Benutzeraktivitäten zu ermöglichen, oder die Tendenz zur Energieeinsparung erhöhen, indem entweder die Verantwortung für die Prozessorauslastung verringert wird oder indem mehr Energie gespart und der Leistungsverlust durch Abstimmung der Energieeinsparungsoptimierung erhöht wird. Dieser Ansatz kann es erleichtern, mehr Batterielebensdauer zu sparen, falls die aktivierten Aktivitätstypen ein gewisses Leistungsniveau gegenüber dem vom System ermöglichten einbüßen. Der pCode kann einen Algorithmus für die dynamische EPP enthalten, der die zwei Eingaben, eine von dem Betriebssystem 2452 und die andere von einer Software, wie etwa DTT, empfängt und selektiv auswählen kann, um eine höhere Leistung und/oder Reaktionsfähigkeit bereitzustellen. Als Teil dieses Verfahrens kann der pCode eine Option im DTT aktivieren, um seine Reaktion für das DTT für verschiedene Aktivitätenstypen abzustimmen.
  • Die Bezugnahme auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „andere Ausführungsformen“ in dieser Spezifikation bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, die in Verbindung mit den Ausführungsformen beschrieben wird, in mindestens einer der Ausführungsformen, wenn auch nicht notwendigerweise allen Ausführungsformen, enthalten ist. Die verschiedenen Vorkommen von „eine Ausführungsform“ oder „einige Ausführungsformen“ beziehen sich nicht notwendigerweise alle auf die gleichen Ausführungsformen. Wenn die Spezifikation angibt, dass eine Komponente, ein Merkmal, eine Struktur oder eine Eigenschaft enthalten sein „kann“ oder „könnte“, ist es nicht notwendig, dass diese bestimmte Komponente, das Merkmal, die Struktur oder Eigenschaft enthalten ist. Wenn die Spezifikation oder der Anspruch sich auf „ein“ Element bezieht, bedeutet dies nicht, dass es nur ein Element gibt. Wenn die Spezifikation oder die Ansprüche sich auf „ein zusätzliches“ Element beziehen, schließt dies nicht aus, dass es mehr als eines der zusätzlichen Elemente gibt.
  • Außerdem können die speziellen Merkmale, Strukturen, Funktionen oder Eigenschaften bei einer oder mehreren Ausführungsformen in einer geeigneten Weise kombiniert werden. Beispielsweise kann eine erste Ausführungsform mit einer zweiten Ausführungsform überall dort kombiniert werden, wo die speziellen Merkmale, Strukturen, Funktionen oder Eigenschaften, die den beiden Ausführungsformen zugeordnet sind, sich nicht gegenseitig ausschließen.
  • Während die Offenbarung in Verbindung mit spezifischen Ausführungsformen davon beschrieben wurde, können viele Alternativen, Modifikationen und Variationen solcher Ausführungsformen für Fachleute in Hinblick auf die voranstehende Beschreibung offenkundig sein. Die Ausführungsformen der Offenbarung sollen alle diese Alternativen, Modifikationen und Variationen umfassen, sodass diese innerhalb des breiten Schutzumfangs der beigefügten Patentansprüche fallen.
  • Zusätzlich dazu können bekannte Leistungs-/Masseverbindungen für integrierte Schaltungs (IC)-Chips und andere Komponenten innerhalb der vorgelegten Figuren für mehr Einfachheit der Veranschaulichung und Erörterung dargestellt sein oder auch nicht, um die Offenbarung nicht zu verkomplizieren. Ferner können Anordnungen in Form eines Blockschaltbilds dargestellt werden, um ein Verkomplizieren der Offenbarung zu vermeiden und auch in Hinblick auf die Tatsache, dass spezielle Angaben in Bezug auf die Implementierung solcher Blockschaltbildanordnungen stark von dem Rahmen abhängen, in dem die vorliegende Offenbarung implementiert werden soll (d. h. solche speziellen Angaben liegen im Ermessen der Fachleute auf dem Gebiet). Wenn spezielle Details (z. B. Schaltungen) dargelegt sind, um beispielhafte Ausführungsformen der Offenbarung zu beschreiben, sollte es Fachleuten klar sein, dass die Offenbarung ohne oder Variationen dieser spezielen Details praktiziert werden kann. Die Beschreibung ist demgemäß als veranschaulichend statt als einschränkend anzusehen.
  • Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen. Spezielle Angaben in den Beispielen können überall in einer oder mehreren Ausführungsformen verwendet werden. Alle optionalen Merkmale der hierin beschriebenen Vorrichtung können auch in Bezug auf ein Verfahren oder einen Prozess implementiert werden. Die Beispiele können in beliebigen Kombinationen kombiniert werden. Beispielsweise kann Beispiel 4 mit Beispiel 2 kombiniert werden.
    • Beispiel 1: Eine Vorrichtung, umfassend: eine Pipeline; einen ersten Satz von Zeigern, die der Pipeline zugeordnet sind, wobei der erste Satz von Zeigern einem Lesetakt zugeordnet ist, der zum Lesen aus der Pipeline verwendet wird; einen zweiten Satz von Zeigern, die der Pipeline zugeordnet sind, wobei der zweite Satz von Zeigern einem Schreibtakt zugeordnet ist, der zum Schreiben in die Pipeline verwendet wird; Komparatoren zum Vergleichen des ersten Satzes von Zeigern mit dem zweiten Satz von Zeigern; eine Logik, die mit den Ausgängen der Komparatoren gekoppelt ist, wobei die Logik eine UND-Operation ausführen soll; einen Filter, der mit einem Ausgang der Logik gekoppelt ist; einen mit dem Filter gekoppelten Schmitt-Trigger; und mindestens zwei Flipflops, die mit dem Schmitt-Trigger gekoppelt sind, wobei ein Ausgang eines der mindestens zwei Flipflops einen Status der Pipeline anzeigt.
    • Beispiel 2: Die Vorrichtung nach Beispiel 1, wobei die Komparatoren Logikgatter umfassen, um eine Exklusiv-OR- oder Exklusiv-NOR-Operation durchzuführen.
    • Beispiel 3: Die Vorrichtung nach Beispiel 1, wobei ein Ausgang des Schmitt-Triggers dazu dient, die Ausgänge der mindestens zwei Flipflops einzustellen oder zurückzusetzen.
    • Beispiel 4: Die Vorrichtung nach Beispiel 1, wobei die Taktanschlüsse der mindestens zwei Flipflops mit dem Lesetakt gekoppelt sind, um einen leeren Status der Pipeline anzuzeigen.
    • Beispiel 5: Die Vorrichtung nach Beispiel 1, wobei die Taktanschlüsse der mindestens zwei Flipflops mit dem Schreibtakt gekoppelt sind, um einen vollen Status der Pipeline anzuzeigen.
    • Beispiel 6: Die Vorrichtung nach Beispiel 1, wobei der erste und der zweite Satz von Zeigern Johnson-kodierte Zeiger sind.
    • Beispiel 7: Die Vorrichtung nach Beispiel 1, wobei der erste und der zweite Satz von Zeigern Gray-kodierte Zeiger sind.
    • Beispiel 8: Die Vorrichtung nach Beispiel 1, wobei ein Eingang des ersten Flipflops der mindestens zwei Flipflops mit der Masse oder Stromversorgung gekoppelt ist und wobei ein Ausgang des ersten Flipflops der mindestens zwei Flipflops mit einem Eingang des zweiten Flipflops der mindestens zwei Flipflops gekoppelt ist.
    • Beispiel 9: Eine Vorrichtung, umfassend: eine Pipeline; Komparatoren zum Vergleichen eines ersten Satzes von Zeigern mit einem zweiten Satz von Zeigern, wobei der erste Satz von Zeigern der Pipeline zugeordnet ist, um aus der Pipeline zu lesen, wobei der zweite Satz von Punkten der Pipeline zugeordnet ist, um in die Pipeline zu schreiben; eine Logik, die mit den Ausgängen der Komparatoren gekoppelt ist, wobei die Logik eine UND-Operation an den Ausgängen ausführen soll; und einen Pipeline-Statussynchronisierer, der mit der Logik gekoppelt ist, wobei der Pipeline-Statussynchronisierer eine Anzeige dafür bereitstellen soll, ob die Pipeline voll, leer, fast voll oder fast leer ist.
    • Beispiel 10: Die Vorrichtung nach Beispiel 9, wobei der FIFO-Statussynchronisierer einen Schmitt-Trigger umfasst, der zwischen zwei Flipflops gekoppelt ist, wobei ein Ausgang eines der beiden Flipflops einen Status der Pipeline anzeigt, wobei einer der beiden Flipflops durch einen Ausgang der Logik gesteuert wird.
    • Beispiel 11: Die Vorrichtung von Beispiel 10, wobei der erste Satz von Zeigern einem Lesetakt zugeordnet ist, der zum Lesen aus der Pipeline verwendet wird, und wobei der zweite Satz von Zeigern einem Schreibtakt zugeordnet ist, der zum Schreiben in die Pipeline verwendet wird.
    • Beispiel 12: Die Vorrichtung nach Beispiel 11, wobei die Taktanschlüsse der zwei Flipflops mit dem Lesetakt gekoppelt sind, um einen leeren Status der Pipeline anzuzeigen.
    • Beispiel 13: Die Vorrichtung nach Beispiel 11, wobei die Taktanschlüsse der zwei Flipflops mit dem Schreibtakt gekoppelt sind, um einen vollen Status der Pipeline anzuzeigen.
    • Beispiel 14: Die Vorrichtung nach Beispiel 10, wobei ein Eingang eines ersten Flipflops von den zwei Flipflops mit der Masse oder Stromversorgung gekoppelt ist und wobei ein Ausgang des ersten Flipflops von den zwei Flipflops mit einem Eingang des Schmitt-Triggers verbunden ist, und wobei ein Ausgang des Schmitt-Triggers dazu dient, einen zweiten Flipflop von den zwei Flipflops einzustellen oder zurückzusetzen.
    • Beispiel 15: Die Vorrichtung nach Beispiel 9, wobei die Komparatoren XNOR-Logikgatter umfassen.
    • Beispiel 16: Die Vorrichtung nach Beispiel 9, wobei der erste und der zweite Satz von Zeigern Johnson-kodierte Zeiger sind oder wobei der erste und der zweite Satz von Zeigern Gray-kodierte Zeiger sind.
    • Beispiel 17: System, umfassend: einen Speicher; einen mit dem Speicher gekoppelten Prozessor; und eine drahtlose Schnittstelle, um es dem Prozessor zu ermöglichen, mit einem anderen Gerät zu kommunizieren, wobei der Prozessor umfasst: einen First-In-First-Out (FIFO); einen ersten Satz von Zeigern, die dem FIFO zugeordnet sind, wobei der erste Satz von Zeigern einem Lesetakt zugeordnet ist, der zum Lesen aus dem FIFO verwendet wird; einen zweiten Satz von Zeigern, die dem FIFO zugeordnet sind, wobei der zweite Satz von Zeigern einem Schreibtakt zugeordnet ist, der zum Schreiben in den FIFO verwendet wird; Komparatoren zum Vergleichen des ersten Satzes von Zeigern mit dem zweiten Satz von Zeigern; eine Logik, die mit den Ausgängen der Komparatoren gekoppelt ist, wobei die Logik eine UND-Operation ausführen soll; einen Filter, der mit einem Ausgang der Logik gekoppelt ist; einen mit dem Filter gekoppelten Schmitt-Trigger; und zwei mit dem Schmitt-Trigger gekoppelte Flipflops, wobei ein Ausgang von einem von den zwei Flipflops einen Status des FIFO anzeigt.
    • Beispiel 18: Das System nach Beispiel 17, wobei ein Ausgang des Schmitt-Triggers dazu dient, die Ausgänge der zwei Flipflops einzustellen oder zurückzusetzen.
    • Beispiel 19: Das System nach Beispiel 17, wobei die Taktanschlüsse der zwei Flipflops mit dem Lesetakt gekoppelt sind, um einen leeren Status des FIFO anzuzeigen.
    • Beispiel 20: Das System nach Beispiel 17, wobei die Taktanschlüsse der zwei Flipflops mit dem Schreibtakt gekoppelt sind, um einen vollen Status des FIFO anzuzeigen, wobei der erste und der zweite Satz von Zeigern Johnson-kodierte Zeiger sind oder wobei der erste und der zweite Satz von Zeigern Gray-kodierte Zeiger sind.
  • Es wird eine Zusammenfassung bereitgestellt, die es dem Leser gestatten wird, das Wesen und die Kernaussage der technischen Offenbarung zu erfassen. Die Zusammenfassung wird mit dem Verständnis eingereicht, dass sie nicht verwendet wird, um die Bedeutung der Ansprüche zu begrenzen. Die folgenden Ansprüche sind hiermit in die detaillierte Beschreibung miteinbezogen, wobei jeder Anspruch selbstständig als eine separate Ausführungsform steht.
  • 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 62/940729 [0001]
  • Zitierte Nicht-Patentliteratur
    • „Clock Crossing FIFO Status Converged Synchronizer‟, eingereicht am 26. November 2019 [0001]

Claims (15)

  1. Vorrichtung ein Pipeline-Status, die Vorrichtung umfassend: eine Pipeline; einen ersten Satz von Zeigern, die der Pipeline zugeordnet sind, wobei der erste Satz von Zeigern einem Lesetakt zugeordnet ist, der zum Lesen aus der Pipeline verwendet wird; einen zweiten Satz von Zeigern, die der Pipeline zugeordnet sind, wobei der zweite Satz von Zeigern einem Schreibtakt zugeordnet ist, der zum Schreiben in die Pipeline verwendet wird; Komparatoren zum Vergleichen des ersten Satzes von Zeigern mit dem zweiten Satz von Zeigern; eine Logik, die mit Ausgängen der Komparatoren gekoppelt ist, wobei die Logik eine UND-Operation ausführen soll; einen Filter, der mit einem Ausgang der Logik gekoppelt ist; einen mit dem Filter gekoppelten Schmitt-Trigger; und mindestens zwei Flipflops, die mit dem Schmitt-Trigger gekoppelt sind, wobei ein Ausgang eines der mindestens zwei Flipflops einen Status der Pipeline anzeigt.
  2. Vorrichtung nach Anspruch 1, wobei die Komparatoren Logikgatter umfassen, um eine Exklusiv-OR- oder Exklusiv-NOR-Operation durchzuführen.
  3. Vorrichtung nach Anspruch 1, wobei ein Ausgang des Schmitt-Triggers dazu dient, die Ausgänge der mindestens zwei Flipflops einzustellen oder zurückzusetzen.
  4. Vorrichtung nach Anspruch 1, wobei Taktanschlüsse der mindestens zwei Flipflops mit dem Lesetakt gekoppelt sind, um einen leeren Status der Pipeline anzuzeigen.
  5. Vorrichtung nach Anspruch 1, wobei Taktanschlüsse der mindestens zwei Flipflops mit dem Schreibtakt gekoppelt sind, um einen vollen Status der Pipeline anzuzeigen.
  6. Vorrichtung nach Anspruch 1, wobei der erste und der zweite Satz von Zeigern Johnson-kodierte Zeiger sind.
  7. Vorrichtung nach Anspruch 1, wobei der erste und der zweite Satz von Zeigern Gray-kodierte Zeiger sind.
  8. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei ein Eingang des ersten Flipflops der mindestens zwei Flipflops mit der Masse oder Stromversorgung gekoppelt ist und wobei ein Ausgang des ersten Flipflops der mindestens zwei Flipflops mit einem Eingang des zweiten Flipflops der mindestens zwei Flipflops gekoppelt ist.
  9. System, umfassend: einen Speicher; einen mit dem Speicher gekoppelten Prozessor; und eine drahtlose Schnittstelle, um dem Prozessor die Kommunikation mit einem anderen Gerät zu ermöglichen, wobei der Prozessor eine Vorrichtung nach einem der Ansprüche 1 bis 8 enthält.
  10. Verfahren ein Pipeline-Status, das Verfahren umfassend: Vergleichen, durch Komparatoren, eines ersten Satzes von Zeigern mit einem zweiten Satz von Zeigern, wobei der erste Satz von Zeigern einer Pipeline zugeordnet ist, wobei der erste Satz von Zeigern einem Lesetakt zugeordnet ist, der zum Lesen aus der Pipeline verwendet wird, wobei der zweite Satz von Zeigern der Pipeline zugeordnet ist, wobei der zweite Satz von Zeigern einem Schreibtakt zugeordnet ist, der zum Schreiben in die Pipeline verwendet wird; Durchführen, durch eine Logik, einer UND-Operation am Ausgang der Komparatoren; Koppeln eines Filters mit einem Ausgang der Logik; Koppeln eines Schmitt-Triggers mit dem Filter; und Koppeln von mindestens zwei Flipflops, die mit dem Schmitt-Trigger gekoppelt sind, wobei ein Ausgang eines der mindestens zwei Flipflops einen Status der Pipeline anzeigt.
  11. Verfahren nach Anspruch 10, wobei das Vergleichen das Durchführen einer Exklusiv-OR- oder Exklusiv-NOR-Operation umfasst.
  12. Verfahren nach Anspruch 10, umfassend das Einstellen oder Zurücksetzen, durch einen Ausgang des Schmitt-Triggers, von Ausgängen der mindestens zwei Flipflops.
  13. Verfahren nach Anspruch 10, umfassend das Koppeln von Taktanschlüssen der mindestens zwei Flipflops mit dem Lesetakt, um einen leeren Status der Pipeline anzuzeigen.
  14. Verfahren nach Anspruch 10, umfassend das Koppeln von Taktanschlüssen der mindestens zwei Flipflops mit dem Schreibtakt, um einen vollen Status der Pipeline anzuzeigen.
  15. Verfahren nach Anspruch 10, wobei der erste und der zweite Satz von Zeigern Johnson-kodierte Zeiger sind oder wobei der erste und der zweite Satz von Zeigern Gray-kodierte Zeiger sind.
DE102020129577.4A 2019-11-26 2020-11-10 Konvergenter fifo-status-synchronisierer mit taktübergang Pending DE102020129577A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962940729P 2019-11-26 2019-11-26
US62/940,729 2019-11-26
US16/995,638 2020-08-17
US16/995,638 US11741024B2 (en) 2019-11-26 2020-08-17 Clock crossing FIFO status converged synchronizer

Publications (1)

Publication Number Publication Date
DE102020129577A1 true DE102020129577A1 (de) 2021-07-01

Family

ID=75974923

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020129577.4A Pending DE102020129577A1 (de) 2019-11-26 2020-11-10 Konvergenter fifo-status-synchronisierer mit taktübergang

Country Status (4)

Country Link
US (1) US11741024B2 (de)
CN (1) CN112860216A (de)
DE (1) DE102020129577A1 (de)
TW (1) TWI849227B (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230186142A1 (en) * 2021-12-13 2023-06-15 Intel Corporation Technologies for high-speed interfaces for cryogenic quantum control

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02109160A (ja) * 1988-10-18 1990-04-20 Japan Atom Energy Res Inst ベクトル計算機用演算装置
US6542987B1 (en) * 1999-02-01 2003-04-01 Hewlett-Packard Development Company L.P. Method and circuits for early detection of a full queue
TWI383618B (zh) * 2008-12-22 2013-01-21 Univ Nat Taiwan 管線架構型正規表示式樣式比對處理電路

Also Published As

Publication number Publication date
TW202139020A (zh) 2021-10-16
US11741024B2 (en) 2023-08-29
TWI849227B (zh) 2024-07-21
CN112860216A (zh) 2021-05-28
US20210157750A1 (en) 2021-05-27

Similar Documents

Publication Publication Date Title
DE102020132721A1 (de) Vollständig digitaler spannungsmonitor (advm) mit einzelzykluslatenz
US11444532B2 (en) Non-linear clamp strength tuning method and apparatus
DE102020131640A1 (de) Vorrichtung und verfahren zur laststromerfassung mit schnellem ansprechen
DE112019002319T5 (de) Niederleistungstakt-gate-schaltung
DE112020003722T5 (de) Digital-linearer hybrid-schaltkondensator-spannungsregler
DE102020134347A1 (de) Leistungsfeldeffekttransistor-topologie und bootstrapschaltung für invertierenden buck-boost-gs-gs-wandler
DE112019000265T5 (de) Zuverlässiger digitaler regler mit niedriger abfallspannung
DE102020134343A1 (de) Treiberunterstützte esd-schutzvorrichtung und zugehöriges verfahren
CN114174951A (zh) 低功率时钟门电路
DE102020129577A1 (de) Konvergenter fifo-status-synchronisierer mit taktübergang
DE102021130628A1 (de) Sicherheitsverriegelungseinrichtung und verfahren für geistiges eigentum
DE102020134682A1 (de) Niederleistungsvorrichtung und verfahren zur vervielfachung der frequenz eines takts
US11398814B2 (en) Low-power single-edge triggered flip-flop, and time borrowing internally stitched flip-flop
DE112020002809T5 (de) Einrichtung und verfahren zum aufrechterhalten stabiler taktung
DE102020130888A1 (de) Doppelflankengetriggertes mux-d-scan-flip-flop
US11757434B2 (en) High performance fast Mux-D scan flip-flop
DE102020132082A1 (de) Verfahren und vorrichtung zur genauen messung einer plattformleistung
DE102020130173A1 (de) Technik für den pll-kondensatoraustausch und dynamische bandauswahl für einen digital gesteuerten oszillator mit geringem jitter
DE102021123826A1 (de) Verstärker mit niedriger leistung und bereichseffizienter verstärkungsbandbreite-verdreifachung
DE102022105671A1 (de) Phasenregelkreis-unterstützte schnellstartvorrichtung und schnellstartverfahren
DE112013007445B4 (de) Gerät zum Verringern der Leistung einer Ladepumpe
DE102020129505A1 (de) Klemmverfahren und -einrichtung mit digitalem linearem regler
WO2021133441A1 (en) Low power flip-flop with reduced parasitic capacitance
DE112020003941T5 (de) Rekonfigurierbare interconnect-einrichtung mit niedrigem overhead und hoher bandbreite und verfahren dafür
DE102022121150A1 (de) Techniken für eine identifizierung und korrektur eines takttastverhältnisses