-
Technisches Gebiet
-
Hierin beschriebene Ausführungsformen betreffen die Zeitbasissynchronisierung in integrierten Schaltungen, wie beispielsweise Systemen auf einem Chip (systems on a chip (SOCs)).
-
Beschreibung der verwandten Technik
-
In digitalen Systemen wird eine Echtzeit (oder „Wall Clock Time“) durch eine Zeitbasis dargestellt. Typischerweise wird die Zeitbasis bei Systemstart auf null zurückgesetzt und gemäß einem Takt im System inkrementiert. Wenn die Echtzeit bei Systemstart bekannt ist (üblicherweise in Software gepflegt), kann der Zeitbasiswert zur Echtzeit addiert werden, um die aktuelle Zeit zu ermitteln.
-
Für größere Systeme oder integrierte Schaltungen im System, wie beispielsweise SOCs, stellt ein Zugreifen auf eine einzelne globale Zeitbasis mit geringer Latenz eine Herausforderung dar. In der Vergangenheit wurde ein Bus einer globalen Zeitbasis über das SOC hinweg an Orte gesendet, an denen ein Zugang zur Zeitbasis benötigt wird. Während dieser Ansatz einen Zugang mit geringer Latenz bereitstellen kann, erhöht er den Flächenüberhang, um den Bus zu allen gewünschten Zugangspunkten zu leiten, und es ist aufgrund der Latenz der Signalausbreitung auf dem Bus schwierig, die Zeittaktung in der physischen Gestaltung abzuschließen. Ein anderer Ansatz schließt ein Addieren von lokalen Zeitbasen über das SOC hinweg ein. Aufgrund lokaler Schwankungen von Takten und sogar unterschiedlicher Taktquellen für Takte an verschiedenen Punkten kann die Synchronisierung zwischen der globalen Zeitbasis und den lokalen Zeitbasen jedoch leicht verloren gehen. Software kann die globale Zeitbasis lesen und die Zeitbasis zu den lokalen Zeitbasen verbreiten, um eine Synchronisierung mit den lokalen Zeitbasen herzustellen, jedoch muss die Latenz, um die neuen Werte zu verbreiten, berücksichtigt werden und ist schwierig, präzise zu ermitteln. Zusätzlich kann die Softwaresynchronisierung viel weniger häufig stattfinden als wünschenswert, was es lokalen Zeitbasen erlaubt, während der Zeitdauer zwischen Synchronisierungen breite Schwankungen zu erfahren.
-
Des Weiteren ist ein qualitativ hochwertiges Kristalltaktsignal erforderlich, um Zeitbasisgenauigkeit beizubehalten. Obwohl unter Umständen niedrigfrequente Kristalltaktsignale verfügbar sind, stellen solche Takte keine höhere Genauigkeit/Granularität der Zeitbasis bereit, weil die Zeitbasisaktualisierungen verglichen mit den Betriebstaktfrequenzen verschiedener Komponenten des SOC nicht häufig genug auftreten. Es ist schwierig, die erforderliche Frequenz durch ein Kristallsignal zu erlangen. Des Weiteren kann eine externe Zeitbasis auf Grundlage des niedrigfrequenten Kristalltaktsignals unterhalten werden, und die Synchronisierung zwischen der externen Zeitbasis und verschiedenen Zeitbasen innerhalb des SOC kann schwierig zu erreichen sein.
-
ZUSAMMENFASSUNG
-
In einer Ausführungsform schließt eine integrierte Schaltung, wie beispielsweise ein SOC (oder auch ein diskretes Chipsystem), eine oder mehrere lokale Zeitbasen an verschiedenen Orten ein. Die Zeitbasen können auf Grundlage eines hochfrequenten lokalen Taktes inkrementiert werden, der während der Verwendung einer Schwankung unterliegen kann. Auf Grundlage eines niedrigfrequenteren Taktes, der weniger Schwankung unterliegt, können die lokalen Zeitbasen unter Verwendung von Hardware-Schaltlogik periodisch auf die korrekte Zeit synchronisiert werden. Insbesondere kann der korrekte Zeitbasiswert für die nächste Synchronisierung an jede lokale Zeitbasis übermittelt werden, und die Steuerschaltung für die lokale Zeitbasis kann konfiguriert sein, die lokale Zeitbasis bei dem korrekten Wert zu sättigen, wenn die lokale Zeitbasis den korrekten Wert erreicht, bevor die Synchronisierung auftritt. Wenn die Synchronisierung auftritt und die lokale Zeitbasis den korrekten Wert nicht erreicht hat, kann gleichermaßen die Steuerschaltung konfiguriert sein, den korrekten Zeitbasiswert zu laden. Somit können hohe Auflösung/Granularität der Zeitbasis, Zugang zur Zeitbasis mit geringer Latenz sowie eine hohe Genauigkeit der Zeitbasis unterstützt werden, während die Notwendigkeit einer Software-Synchronisierung beseitigt wird. Zudem kann eine Synchronisierung mit einer externen Zeitbasis durchgeführt werden, z. B. durch Übermitteln des korrekten Zeitbasiswertes für die externe Zeitbasis beim nächsten Synchronisierungsereignis an die lokalen Zeitbasen und Sättigen/Aktualisieren auf diese lokalen Zeitbasen.
-
Figurenliste
-
Die folgende, detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nun kurz beschrieben werden.
- 1 ist ein Blockdiagramm einer bestimmten Ausführungsform einer integrierten Schaltung, die ein SOC einschließt.
- 2 ist ein Blockdiagramm einer bestimmten Ausführungsform einer Schaltung einer lokalen Zeitbasis.
- 3 ist ein Blockdiagramm einer bestimmten Ausführungsform einer Schaltung einer globalen Zeitbasis.
- 4 ist ein Zeittaktungsdiagramm, das eine bestimmte Ausführungsform einer Zeitbasissynchronisierung veranschaulicht.
- 5 ist ein Flussbild, das einen Betrieb einer bestimmten Ausführungsform der Schaltung einer lokalen Zeitbasis veranschaulicht, um Zeitbasen zu synchronisieren.
- 6 ist ein Flussbild, das einen Betrieb einer bestimmten Ausführungsform der Schaltung einer globalen Zeitbasis veranschaulicht, um Zeitbasen zu synchronisieren.
- 7 ist ein Flussbild, das einen Betrieb einer bestimmten Ausführungsform der Schaltung einer globalen Zeitbasis und der Schaltung einer lokalen Zeitbasis veranschaulicht, um Zeitbasen zu initialisieren.
- 8 ist ein Blockdiagramm einer bestimmten Ausführungsform eines Systems.
-
Während in dieser Offenbarung beschriebene Ausführungsformen verschiedenen Abänderungen und alternativen Formen unterliegen können, sind spezifische Ausführungsformen davon beispielhaft in den Zeichnungen gezeigt und werden hierin detailliert beschrieben. Es versteht sich jedoch, dass die Zeichnungen und die detaillierte Beschreibung hierzu nicht die Ausführungsformen der besonderen offenbarten Form einschränken sollen, sondern dass diese im Gegenteil dazu beabsichtigt ist, alle Modifikationen, Äquivalente und Alternativen abzudecken, die innerhalb des Grundgedankens und Schutzumfangs der beigefügten Patentansprüche sind. Die hierin verwendeten Überschriften dienen nur organisatorischen Zwecken und sollen nicht verwendet werden, um den Umfang der Beschreibung einzuschränken. Wie in dieser Anmeldung verwendet, wird das Wort „können“ im ermöglichenden Sinn (d. h. „das Potential besitzend zu“ bedeutend) und nicht im zwingenden Sinn (d. h. „müssen“ bedeutend) verwendet. Gleichermaßen haben die Wörter „einschließen“, „einschließlich“ und „schließt ein“ die Bedeutung „einschließlich, jedoch nicht darauf beschränkt“.
-
Verschiedene Einheiten, Schaltungen oder andere Komponenten können als zum Durchführen einer oder mehrerer Aufgaben „konfiguriert“ beschrieben sein. In solchen Kontexten ist „konfiguriert“ eine breite Angabe von Struktur, die generell bedeutet, „Schaltlogik aufweisend, welche“ die Aufgabe oder Aufgaben während des Betriebs durchführt. Insofern kann die Einheit/Schaltung/Komponente konfiguriert sein, die Aufgabe durchzuführen, auch wenn die Einheit/Schaltung/Komponente derzeit nicht eingeschaltet ist. Im Allgemeinen kann die Schaltung, die die Struktur bildet, die „konfiguriert“ entspricht, Hardware-Schaltungen einschließen. Die Hardware-Schaltungen können jede Kombination von Schaltlogik kombinatorischer Logik, getakteten Datenspeichervorrichtungen, wie beispielsweise Flops, Register, Latches usw., endlichen Zustandsautomaten, Speicher, wie beispielsweise statischen Speicher mit wahlfreiem Zugriff oder eingebetteten dynamischen Speicher mit wahlfreiem Zugriff, benutzerspezifisch gestalteter Schaltlogik, analoger Schaltlogik, programmierbaren Logikanordnungen usw. einschließen. Gleichermaßen können der Zweckmäßigkeit in der Beschreibung wegen verschiedene Einheiten/Schaltungen/Komponenten als eine Aufgabe oder Aufgaben durchführend beschrieben werden. Solche Beschreibungen sollten so interpretiert werden, als würden sie den Ausdruck „konfiguriert“ enthalten. Das Nennen einer Einheit/Schaltung/Komponente, die konfiguriert ist, eine oder mehrere Aufgaben durchzuführen, soll sich ausdrücklich nicht auf eine Interpretation nach 35 U.S.C. § 112 (f) für diese Einheit/Schaltung/Komponente beziehen.
-
In einer Ausführungsform können Hardware-Schaltungen gemäß dieser Offenbarung durch Codieren der Beschreibung der Schaltung in einer Hardware-Beschreibungssprache (hardware description language (HDL)), wie beispielsweise Verilog oder VHDL, implementiert werden. Die HDL-Beschreibung kann gegenüber einer Bibliothek von Zellen synthetisiert werden, die für eine gegebene Technologie zur Herstellung integrierter Schaltungen gestaltet ist, und kann aus Gründen der Zeittaktung, Energie und anderen Gründen modifiziert werden, um zu einer endgültigen Gestaltungsdatenbank zu führen, die an eine Gießerei übermittelt werden kann, um Masken zu erzeugen und letztendlich die integrierte Schaltung zu produzieren. Manche Hardware-Schaltungen oder Abschnitte davon können auch in einem schematischen Editor benutzerspezifisch gestaltet und zusammen mit synthetisierter Schaltlogik in der Gestaltung der integrierten Schaltung erfasst werden. Die integrierten Schaltungen können Transistoren einschließen und können ferner andere Schaltungselemente einschließen (z. B. passive Elemente, wie beispielsweise Kondensatoren, Widerstände, Spulen usw.) und eine Verbindung zwischen den Transistoren und Schaltungselementen herstellen. Manche Ausführungsformen können mehrere integrierte Schaltungen implementieren, die miteinander gekoppelt sind, um die Hardware-Schaltungen zu implementieren, und/oder diskrete Elemente können in manchen Ausführungsformen verwendet werden. Alternativ dazu kann die HDL-Gestaltung zu einer programmierbaren Logikanordnung, wie beispielsweise einer anwenderprogrammierbaren Gatteranordnung (field programmable gate array (FPGA)), synthetisiert werden und kann in der FPGA implementiert werden.
-
Diese Beschreibung enthält Verweise auf „eine bestimmte Ausführungsform“ oder „eine Ausführungsform“. Das Vorkommen der Wortlaute „in einer bestimmten Ausführungsform“ oder „in einer Ausführungsform“ bezieht sich nicht notwendigerweise auf die gleiche Ausführungsform, obwohl Ausführungsformen, die eine beliebige Kombination der Merkmale einschließen, generell einbezogen sind, sofern hierin nichts Anderes ausdrücklich ausgeführt ist. Insbesondere können Merkmale, Strukturen oder Eigenschaften auf jegliche geeignete Art kombiniert werden, die mit dieser Offenbarung im Einklang steht.
-
DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
-
Unter Hinwendung zu 1 ist nun ein Blockdiagramm einer bestimmten Ausführungsform eines SOC 10 gezeigt, das mit einem Speicher 12 und einer externen Taktquelle 34 gekoppelt ist. Wie durch den Namen impliziert, können die Komponenten des SOC 10 auf einem einzigen Halbleitersubstrat als ein „Chip“ einer integrierten Schaltung integriert sein. In manchen Ausführungsformen können die Komponenten auf zwei oder mehr separaten Chips in einem System implementiert sein. Hierin wird jedoch das SOC 10 als ein Beispiel verwendet. In der veranschaulichten Ausführungsform schließen die Komponenten des SOC 10 einen Komplex einer zentralen Verarbeitungseinheit (central processing unit (CPU) complex) 14, eine „Always-on“-Komponente 16, Peripherieeinheiten-Komponenten 18A bis 18B (kurz ausgedrückt „Peripherieeinheiten“), eine Speichersteuereinheit 22, einen Energieverwalter (power manager (PMGR)) 32, eine interne Takterzeugerschaltung 36 und eine Kommunikationsstruktur 27 ein. Die Komponenten 14, 16, 18A bis 18B, 22, 32 und 36 können alle mit der Kommunikationsstruktur 27 gekoppelt sein. Der Speicher-Controller 22 kann im Betrieb mit dem Speicher 12 gekoppelt sein. Die Always-on-Komponente 16 kann mit der externen Taktquelle 34 gekoppelt sein. Bei der dargestellten Ausführungsform kann der CPU-Komplex 14 einen oder mehrere Prozessoren einschließen (P 30 in 1). Die Prozessoren 30 können die eine oder mehreren CPUs des CPU-Komplexes 14 innerhalb des SOC 10 bilden. In manchen Ausführungsformen kann eine zweite interne Takterzeugerschaltung 37 eingeschlossen sein und kann mit einer oder mehreren lokalen Zeitbasen (z. B. der lokalen Zeitbasis 26B in 1) gekoppelt sein. In solch einer Ausführungsform ist die lokale Zeitbasis 26B unter Umständen nicht mit der Takterzeugerschaltung 36 gekoppelt. Mehrere zusätzliche Takterzeugerschaltungen können in noch weiteren Ausführungsformen eingeschlossen sein.
-
Verschiedene Komponenten im SOC 10 können Zugang zu einer Zeitbasis haben, um eine Zeit zu ermitteln. Zeitbasen können verwendet werden, um Zeitstempel für Ereignisse zu erzeugen (sodass die zeitliche Reihenfolge von Ereignissen festgestellt werden kann oder ein gegebenes Ereignis einer bestimmten Echtzeit (Wall Clock Time) zugeordnet werden kann). Zeitbasen können verwendet werden, um Anwendungen eine Zeit bereitzustellen (z. B., um sie für einen Benutzer anzuzeigen oder um zeitgestützte Benachrichtigungen, wie beispielsweise Warnungen oder Alarme, zu ermöglichen). Zeitbasen können verwendet werden, um eine verstrichene Zeit zu messen (z. B., um eine Ausführung von Aufgaben in einem Multitasking-Betriebssystem zu planen). Im Allgemeinen kann es sich bei einer Zeitbasis um jedes Zeitmaß handeln. In einer Ausführungsform kann es sich bei einer Zeitbasis um einen Wert handeln, der Zeit in einer bestimmten Granularität darstellt (z. B. kann die am wenigsten signifikante Stelle eine bestimmte Menge an Zeit darstellen). Manche der am wenigsten signifikanten Stellen sind unter Umständen nicht tatsächlich implementiert (z. B., wenn der Zeitbasiswert Zeit in einer höheren Granularität misst als es Takte im SOC 10 unter Umständen erlauben). In anderen Ausführungsformen kann der Zeitbasiswert das Ticken einer Uhr im SOC 10 messen. Auf Grundlage der Frequenz der Uhr kann die Echtzeit berechnet werden.
-
Die Komponenten, welche die Zeitbasis verwenden, können Schaltungen einer lokalen Zeitbasis einschließen (z. B. die Schaltungen einer lokalen Zeitbasis 26A bis 26D im CPU-Komplex 14, der Peripherieeinheit 18A, der Speichersteuereinheit 22 und dem PMGR 32 in 1). In einer Ausführungsform kann eine Komponente mehrere Schaltungen einer lokalen Zeitbasis aufweisen (z. B. kann es eine Schaltung einer lokalen Zeitbasis 26A bis 26D für jede CPU 30 im CPU-Komplex 14 geben), und/oder mehrere Komponenten können eine Schaltung einer lokalen Zeitbasis 26A bis 26D gemeinsam nutzen. Eine Schaltung einer globalen Zeitbasis 20 in der Always-on-Komponente 16 kann konfiguriert sein, die durch die Schaltungen einer lokalen Zeitbasis 26A bis 26D unterhaltenen lokalen Zeitbasen zu synchronisieren. In manchen Ausführungsformen kann die Schaltung einer globalen Zeitbasis 20 auch eine globale Zeitbasis unterhalten.
-
Der Takterzeuger 36 kann konfiguriert sein, einen Takt von relativ hoher Frequenz (Fr_clk) zu erzeugen, der verwendet werden kann, um die lokalen Zeitbasen (und optional die globale Zeitbasis, falls eingeschlossen) zu aktualisieren. Somit ist der Fr_clk zwischen dem Takterzeuger 36, den Schaltungen einer lokalen Zeitbasis 26A bis 26D und optional der Schaltung einer globalen Zeitbasis 20 gekoppelt. Der Takterzeuger 36 kann eine beliebige Gestaltung und Konfiguration aufweisen, wie beispielsweise einen Phasenregelkreis (phaselocked-loop (PLL)) und einen Verzögerungsregelkreis (delay-locked-loop (DLL)) usw. Allgemein kann der Takterzeuger 36 verschiedenen Quellen von Ungenauigkeit unterworfen sein, die zu einer Schwankung der Taktfrequenz des Fr_clk während der Verwendung führen. Zum Beispiel kann die Schaltlogik im Takterzeuger 36 aufgrund von Temperaturänderungen, einer Versorgungsspannungsschwankung, die Verzögerungen in der Schaltlogik ändert, Flimmern, Rauschen usw. einer Schwankung unterworfen sein. Die Versorgungsspannungsschwankung kann sowohl eine transiente Schwankung aufgrund von Rauschen, Last usw. als auch eine beabsichtigte Schwankung, wie beispielsweise dynamische Spannungsänderungen, während der Verwendung einschließen. Die Frequenz des Fr_clk kann mit der Zeit abweichen und schneller und/oder langsamer als die gewünschte Frequenz laufen. Somit kann es einen Fehler der lokalen Zeitbasen geben.
-
Auf Grundlage von Schaltungsanalyse, empirischen Daten und/oder Simulationen kann die Frequenzschwankung so bestimmt werden, dass sie innerhalb eines Bereichs um die gewünschte Frequenz liegt. Die gewünschte Frequenz (d. h. die vom Takterzeuger 36 erwartete Frequenz) kann als die Nennfrequenz bezeichnet werden. Ein Takt kann als nominal eine gegebene Frequenz aufweisend bezeichnet werden, wobei bekannt ist, dass es eine Schwankung um die Nennfrequenz geben kann. Takte können als nominal eine höhere oder niedrigere Frequenz aufweisend bezeichnet werden, indem ihre Nennfrequenzen verglichen werden, wobei bekannt ist, dass Schwankungen dafür sorgen können, dass die Frequenzen schwanken.
-
Ein Takt einer niedrigeren Frequenz (Rt_clk) kann an einem Eingang in das SOC 10 empfangen werden (z. B. für die externe Taktquelle 34). Die externe Taktquelle 34 kann eine Taktquelle von „hoher Qualität“ sein, wie z. B. ein Kristalloszillator. Die Taktqualität kann in einer Vielfalt von Arten gemessen werden, kann sich jedoch allgemein auf einen Takt beziehen, der während der Verwendung eine geringe Schwankung erfährt. Somit kann der Rt_clk eine geringere Schwankung während der Verwendung aufweisen als zum Beispiel der Fr_clk. Das heißt, der Schwankungsbereich der Taktfrequenz um die Nennfrequenz des Rt_clk kann kleiner sein als der Schwankungsbereich beim Fr_clk.
-
Dementsprechend können Synchronisierungsereignisse vom Rt_clk ausgelöst werden, um die lokalen Zeitbasen zu synchronisieren (sowohl miteinander als auch mit dem korrekten Zeitbasiswert). Bei einem Synchronisierungsereignis kann es sich um jede Kommunikation handeln, die verursacht, dass eine Synchronisierung der Zeitbasen auftritt. Zum Beispiel kann die Schaltung einer globalen Zeitbasis 20 konfiguriert sein, ein vom Rt_clk ausgelöstes Signal zu den Schaltungen einer lokalen Zeitbasis 26A bis 26C zu bestätigen. Die Schaltung einer globalen Zeitbasis 20 kann zudem den nächsten Zeitbasissynchronisierungswert auf Grundlage des Rt_clk mitteilen, sodass die lokalen Zeitbasen den Synchronisierungswert zur Aktualisierung besitzen. In einer Ausführungsform kann die Schaltung einer globalen Zeitbasis 20 ein Synchronisierungsereignis für jede Periode des Rt_clk-Signals auslösen. Zum Beispiel kann das Synchronisierungsereignis bei einer Flanke des Taktes ausgelöst werden. Die ansteigende Flanke kann in dieser Beschreibung als ein Beispiel verwendet werden, aber die abfallende Flanke kann ebenfalls verwendet werden. Die Schaltung einer globalen Zeitbasis 20 kann zudem den nächsten Zeitbasissynchronisierungswert als Reaktion auf eine Flanke (z. B. die der Synchronisierungsereignisflanke gegenüberliegende Flanke oder die abfallende Flanke für das Beispiel der ansteigenden Flanke) übermitteln. Andere Ausführungsformen können das Synchronisierungsereignis wie gewünscht als einmal pro mehrere Perioden des Rt_clk oder an jeder Flanke des Rt_clk auftretend definieren.
-
Der nächste Zeitbasissynchronisierungswert kann jede Synchronisierungsperiode aus dem vorherigen Synchronisierungswert und einem Wert, der von dem Verhältnis der Frequenzen des Fr_clk und des Rt_clk abhängt, erzeugt werden. Bei dem Verhältnis handelt es sich unter Umständen nicht um einen ganzzahligen Wert, und somit kann die Zeitbasis einen ganzzahligen Teil und einen Bruchteil hinsichtlich Rt_clk-Zyklen aufweisen. Zum Beispiel kann in einer bestimmten Ausführungsform der Fr_clk 24 Megahertz (MHz) sein und der Rt_clk kann 32.768 Hz sein. In diesem Beispiel beträgt das Verhältnis 24 MHz/32.768 Hz oder 46875/64 in einfachster mathematischer Form. Dementsprechend kann die Differenz zwischen aufeinanderfolgenden Synchronisierungszeitbasiswerten 46875 betragen, und jeder Taktzyklus des Fr_clk kann ein Inkrement von 64 auf die lokale Zeitbasis sein. Der Bruchteil kann 5 Bit betragen, da jedes Inkrement 64 beträgt, und der Bruchteil kann, wie gewünscht, in verschiedenen Ausführungsformen implementiert werden oder nicht implementiert werden. In manchen Ausführungsformen kann der Bruchteil verwendet werden, um die lokale Zeitbasis daran zu hindern, relativ zu einer aus einer externen Taktquelle abgeleiteten Zeitbasis abzuweichen. Somit können sowohl das Inkrement pro Fr_clk als auch die Differenz in aufeinanderfolgenden Synchronisierungswerten vom Verhältnis der Frequenzen abhängen.
-
In einer Ausführungsform ist mindestens eine Schaltung einer lokalen Zeitbasis 26A bis 26D konfiguriert, den nächsten durch die Schaltung einer globalen Zeitbasis 20 übermittelten Zeitbasissynchronisierungswert zu erfassen, und sie kann die lokale Zeitbasis mit dem nächsten Zeitbasissynchronisierungswert vergleichen, wenn die lokale Zeitbasis innerhalb einer gegebenen Synchronisierungsperiode inkrementiert wird. Wenn der Fr_clk bei einer höheren Frequenz arbeitet als erwartet, kann die lokale Zeitbasis den nächsten Zeitbasissynchronisierungswert vor dem Ende der Synchronisierungsperiode erreichen. Die Schaltungen einer lokalen Zeitbasis 26A bis 26D können den lokalen Zeitbasiswert für den Rest der Synchronisierungsperiode bei dem nächsten Zeitbasissynchronisierungswert sättigen. Somit „eilt“ die lokale Zeitbasis dem korrekten Zeitbasiswert unter Umständen nicht um mehr voraus, als die Zeitbasis am Ende der Synchronisierungsperiode aufweisen wird. Zusätzlich können die Schaltungen einer lokalen Zeitbasis 26A bis 26D als Reaktion auf das Synchronisierungsereignis den nächsten Zeitbasissynchronisierungswert in die lokale Zeitbasis laden (unter der Annahme, dass die lokale Zeitbasis den nächsten Synchronisierungswert nicht erreicht hat). Das Laden des nächsten Zeitbasissynchronisierungswertes kann die lokale Zeitbasis daran hindern, der korrekten Zeitbasis um mehr als eine Synchronisierungsperiode „nachzueilen“.
-
Jeder Kommunikationsmechanismus kann verwendet werden, um den nächsten Zeitbasissynchronisierungswert von der Schaltung einer globalen Zeitbasis 20 an die Schaltungen einer lokalen Zeitbasis 26A bis 26D zu übermitteln. In einer Ausführungsform kann eine serielle Schnittstelle mit der Rate des Fr_clk verwendet werden, um den Wert zu übermitteln. Da der Fr_clk in diesem Beispiel eine signifikant höhere Frequenz als der Rt_clk ist, kann der nächste Zeitbasissynchronisierungswert in den Schaltungen einer lokalen Zeitbasis 26A bis 26B lange vor dem Ende der Synchronisierungsperiode empfangen werden.
-
Obwohl die veranschaulichte Ausführungsform einen einzigen von der Takterzeugerschaltung 36 für die Schaltung einer lokalen Zeitbasis 26A bis 26D und die Schaltung einer globalen Zeitbasis 20 bereitgestellten Fr_clk zeigt, können andere Ausführungsformen mehrere Quellen von Fr_clk aufweisen, wie beispielsweise, dass die Takterzeugerschaltung 37 den Fr_clk2 für die Schaltung einer lokalen Zeitbasis 26B bereitstellt, was in 1 in Strichpunktform gezeigt ist. In solch einer Ausführungsform empfängt die Schaltung einer lokalen Zeitbasis 26B unter Umständen nicht den Fr_clk von der Takterzeugerschaltung 36. In noch weiteren Ausführungsformen kann es mehrere interne Takterzeugerschaltungen geben, die den verschiedenen Schaltungen einer lokalen Zeitbasis 26A bis 26D andere Fr_clks bereitstellen. Die Quellen können voneinander unabhängig sein, sodass eine Phase und Frequenz der Takte in der Verwendung abweichen können.
-
Wie zuvor erwähnt, können sich Inkremente beim nächsten Zeitbasissynchronisierungswert für eine gegebene Synchronisierungsperiode sättigen. Allgemein kann sich ein Sättigen eines Wertes darauf beziehen, dass bis zu dem Wert inkrementiert wird, aber dann das inkrementierte Ergebnis sogar angesichts zusätzlicher Inkremente gehalten wird. Inkrementieren kann sich allgemein auf ein Erhöhen eines Wertes um eine feste Menge während der Verwendung beziehen. Die feste Menge kann in manchen Ausführungsformen eins oder jede andere ganze Zahl oder jeder andere Wert sein. In dem vorstehend erwähnten Beispiel kann das Inkrement 64 betragen.
-
In einer Ausführungsform kann die Always-on-Komponente 16 konfiguriert sein, eingeschaltet zu bleiben, wenn andere Komponenten des SOC 10 (z. B. der CPU-Komplex 14, die Peripherieeinheiten 18A bis 18B und der PMGR 32) abgeschaltet sind. Insbesondere kann die Always-on-Komponente 16 immer dann eingeschaltet sein, wenn das SOC 10 Strom von einer externen Stromverwaltungseinheit (power management unit (PMU)) erhält. Somit ist die Always-on-Komponente immer eingeschaltet in dem Sinn, dass sie mit Strom versorgt werden kann, wenn das SOC 10 Strom erhält (z. B. zu Zeitpunkten, an denen die Vorrichtung, einschließlich des SOC 10, im Stand-by-Modus ist oder aktiv betrieben wird), aber sie ist möglicherweise nicht eingeschaltet, wenn das SOC 10 keinen Strom erhält (z. B. zu Zeitpunkten, an denen die Vorrichtung vollständig ausgeschaltet ist). Die Always-on-Komponente 16 kann bestimmte Funktionen unterstützen, während der Rest des SOC 10 ausgeschaltet ist, sodass ein Betrieb mit geringem Stromverbrauch möglich wird. Zusätzlich kann die Schaltung einer globalen Zeitbasis 20 fortfahren, die globale Zeitbasis für das System zu unterhalten, sodass die globale Zeitbasis beim nächsten Einschalten des SOC 10 nicht reinitialisiert werden muss.
-
In 1 kann eine gepunktete Linie 24, die die Always-on-Komponente 16 von den anderen Komponenten trennt, einen unabhängigen Strombereich für die Always-on-Komponente 16 angeben. Andere Komponenten, Komponentengruppen und/oder Subkomponenten können auch unabhängige Strombereiche aufweisen. Allgemein kann ein Strombereich konfiguriert sein, um unabhängig von anderen Strombereichen eine Versorgungsspannung zu empfangen (d. h. eingeschaltet zu sein) oder um keine Versorgungsspannung zu empfangen (d. h. ausgeschaltet zu sein). Bei einigen Ausführungsformen können Strombereiche gleichzeitig mit unterschiedlichen Größen von Versorgungsspannung versorgt werden. Die Unabhängigkeit kann in einer Vielfalt von Weisen bereitgestellt werden. Beispielsweise kann die Unabhängigkeit bereitgestellt werden, indem separate Versorgungsspannungseingaben von der externen PMU erfolgen, indem Stromschalter zwischen den Versorgungsspannungseingängen und Komponenten bereitgestellt werden und die Stromschalter für einen gegebenen Bereich als eine Einheit und/oder eine Kombination des Vorstehenden bereitgestellt werden. Es kann auch mehr Strombereiche geben als in 1 dargestellt sind. Beispielsweise kann der CPU-Komplex 14 bei einer Ausführungsform einen unabhängigen Strombereich aufweisen (und jeder CPU-Prozessor 30 kann ebenfalls einen unabhängigen Strombereich haben). Eine oder mehrere Peripheriekomponenten 18A-18B können bei einer Ausführungsform in einem oder mehreren unabhängigen Strombereichen vorliegen.
-
Allgemein kann eine Komponente als eingeschaltet oder ausgeschaltet bezeichnet werden. Die Komponente kann eingeschaltet sein, wenn sie Versorgungsspannung empfängt, sodass sie dem Konzept entsprechend betrieben werden kann. Wenn die Komponente abgeschaltet ist, empfängt sie die Versorgungsspannung nicht und ist nicht in Betrieb. Die Komponente kann auch als hochgefahren bezeichnet werden, wenn sie eingeschaltet ist, und als heruntergefahren, falls sie abgeschaltet ist. Das Hochfahren einer Komponente kann sich auf die Zufuhr der Versorgungsspannung für eine abgeschaltete Komponente beziehen, und das Herunterfahren kann sich auf das Beenden der Zufuhr der Versorgungsspannung für die Komponente beziehen. Dementsprechend kann eine Unterkomponente und/oder das SOC 10 insgesamt als hochgefahren/heruntergefahren usw. bezeichnet werden. Eine Komponente kann ein vordefinierter Schaltungsblock sein, der eine angegebene Funktion im SOC 10 bereitstellt und eine spezifische Schnittstelle mit dem Rest des SOC 10 hat. Somit können die Always-on-Komponente 16, die Peripherieeinheiten 18A-18B und der CPU-Komplex 14, der Speicher-Controller 22 und der PMGR 32 jeweils Beispiele einer Komponente sein.
-
Eine Komponente kann aktiv sein, wenn sie hochgefahren ist und nicht mit geteilten Taktsignalen versorgt wird. Somit kann beispielsweise ein Prozessor im CPU-Komplex 14 für die Ausführung von Anweisungen verfügbar sein, falls er aktiv ist. Eine Komponente kann inaktiv sein, wenn sie heruntergefahren ist oder in einem anderen niedrigen Energiezustand ist, in dem eine signifikante Verzögerung auftreten kann, bevor Anweisungen ausgeführt werden können. Falls die Komponente beispielsweise ein Rücksetzen oder eine Sperre einer Phasenregelschleife (PLL) erfordert, kann sie inaktiv sein, selbst wenn sie eingeschaltet bleibt. Eine Komponente kann auch inaktiv sein, wenn sie Clock-Gating unterliegt. Clock-Gating kann sich auf Techniken beziehen, bei denen der Takt zur digitalen Schaltung in der Komponente vorübergehend „abgeschaltet“ ist, wobei verhindert wird, dass der Zustand von der digitalen Schaltung in getakteten Speichervorrichtungen, wie z. B. Flops, Registern usw., erfasst wird.
-
Wie vorstehend erwähnt, kann der CPU-Komplex 14 einen oder mehrere Prozessoren 30 einschließen, die als eine oder mehrere CPUs des CPU-Komplexes 14 im SOC 10 dienen können. Die CPU des Systems schließt den einen oder die mehreren Prozessoren ein, welche die Hauptsteuersoftware des Systems, wie beispielsweise ein Betriebssystem, ausführen. Allgemein kann durch die CPU während der Verwendung ausgeführte Software die anderen Komponenten des Systems steuern, um die gewünschte Funktionalität des Systems zu verwirklichen. Die Prozessoren können auch andere Software ausführen, wie z. B. Anwendungsprogramme. Die Anwendungsprogramme können Benutzerfunktionalität bereitstellen, und sie können auf dem Betriebssystem aufbauen in Bezug auf Vorrichtungssteuerung unterer Ebene, Planung, Speichermanagement usw. Dementsprechend können die Prozessoren auch als Anwendungsprozessoren bezeichnet werden. Der CPU-Komplex 14 kann ferner andere Hardware einschließen, wie z. B. einen L2-Cache und/oder eine Schnittstelle zu den anderen Komponenten des Systems (z. B. eine Schnittstelle zur Kommunikationsstruktur 27).
-
Ein Betriebspunkt kann sich beziehen auf eine Kombination aus Größe der Stromversorgungsspannung und Betriebsfrequenz für den CPU-Komplex 14, die Always-on-Komponente 16, andere Komponenten des SOC 10 usw. Die Betriebsfrequenz kann die Frequenz des Taktes sein, der die Komponente taktet. Die Betriebsfrequenz kann auch als Taktfrequenz oder einfach als Frequenz bezeichnet werden. Der Betriebspunkt kann auch als ein Betriebszustand oder Energiezustand bezeichnet werden. Der Betriebspunkt kann Teil der programmierbaren Konfigurationsdaten sein, die in der Always-on-Komponente 16 gespeichert und in den Komponenten neu programmiert werden können, wenn es zu einer Neukonfiguration kommt.
-
Allgemein kann ein Prozessor jede beliebige Schaltlogik und oder jeden beliebigen Mikrocode beinhalten, die oder der konfiguriert ist, Anweisungen auszuführen, die in einer durch den Prozessor implementierten Anweisungssatzarchitektur definiert sind. Prozessoren können Prozessorkerne, die auf einer integrierten Schaltung mit anderen Komponenten als einem System auf einem Chip (SOC 10) implementiert sind, oder andere Ebenen der Integration einbeziehen. Prozessoren können ferner diskrete Mikroprozessoren umfassen, sowie Prozessorkerne und/oder Mikroprozessoren, die in Mehrfachchipmodul-Implementierungen integriert sind; Prozessoren, die als mehrere integrierte Schaltungen implementiert sind; usw.
-
Die Speichersteuereinheit 22 kann allgemein die Schaltlogik zum Empfangen von Speicheroperationen von den anderen Komponenten des SOC 10 und zum Zugreifen auf den Speicher 12 einschließen, um die Speicheroperationen durchzuführen. Die Speichersteuereinheit 22 kann konfiguriert sein, auf jeden beliebigen Typ von Speicher 12 zuzugreifen. Beispielsweise kann der Speicher 12 statischer RAM (SRAM) sein oder dynamischer RAM (DRAM), wie z. B. synchroner DRAM (SDRAM) einschließlich DRAM mit doppelter Datenrate (DDR, DDR2, DDR3, DDR4 usw.). Versionen mit geringer Leistung/mobile Versionen des DDR DRAM können unterstützt werden (z. B. LPDDR, mDDR usw.). Die Speichersteuereinheit 22 kann Warteschlangen für Speicheroperationen zum Ordnen (und potenziellen Umordnen) der Operationen und zum Vorlegen der Operationen für den Speicher 12 einschließen. Die Speichersteuereinheit 22 kann ferner Datenpuffer einschließen, um Schreibdaten, die auf ein Schreiben in den Speicher warten, und Lesedaten, die auf ein Zurückgeben an die Quelle der Speicheroperation warten, zu speichern. In manchen Ausführungsformen kann die Speichersteuereinheit 22 einen Speicher-Cache einschließen, um Speicherdaten zu speichern, auf die kürzlich zugegriffen wurde. In SOC-Implementierungen kann der Speicher-Cache zum Beispiel den Energieverbrauch im SOC verringern, indem ein erneuter Zugriff von Daten aus dem Speicher 12 vermieden wird, wenn erwartet wird, dass bald erneut auf sie zugegriffen wird. In einigen Fällen kann der Speicher-Cache auch als ein System-Cache bezeichnet werden, im Gegensatz zu privaten Caches wie z. B. dem L2-Cache oder Caches in den Prozessoren, die nur für bestimmte Komponenten dienen. Zusätzlich muss in manchen Ausführungsformen ein System-Cache nicht innerhalb der Speichersteuereinheit 22 angeordnet sein.
-
Die Peripherieeinheiten 18A-18B können eine beliebige Gruppe von im SOC 10 eingeschlossener zusätzlicher Hardware-Funktionalität sein. Beispielsweise können die Peripherieeinheiten 18A-18B Videoperipherie einschließen wie z. B. einen Bildsignalprozessor, der zum Verarbeiten von Bilderfassungsdaten von einer Kamera oder einem anderen Bildsensor konfiguriert ist, Display-Controller, die zur Anzeige von Videodaten auf einer oder mehreren Anzeigevorrichtungen konfiguriert sind, Grafikprozessoren (GPUs), Video-Encoder/-Decoder, Skalierer, Rotatoren, Mischer usw. Die Peripherieeinheiten können Audioperipherie einschließen, wie z. B. Mikrofone, Lautsprecher, Schnittstellen für Mikrofone und Lautsprecher, Audioprozessoren, digitale Signalprozessoren, Mixer usw. Die Peripherieeinheiten können Interface-Controller für verschiedene, zum SOC 10 externe Schnittstellen einschließen (z. B. die Peripherieeinheit 18B), einschließlich Schnittstellen, wie z. B. Universal Serial Bus (USB), Peripheral Component Interconnect (PCI), einschließlich PCI Express (PCIe), serielle und parallele Ports usw. Die Peripherieeinheiten können Netzwerkperipherie einschließen, wie z. B. Medienzugriffs-Controller (MAC). Jeder beliebige Satz von Hardware kann eingeschlossen sein.
-
Die Kommunikationsstruktur 27 kann jede beliebige Kommunikationsverbindung und jedes beliebige Protokoll zum Kommunizieren zwischen den Komponenten des SOC 10 sein. Die Kommunikationsstruktur 27 kann busgestützt sein, einschließlich gemeinsam genutzten Buskonfigurationen, Crossbar-Konfigurationen und hierarchischen Bussen mit Brücken. Die Kommunikationsstruktur 27 kann auch paketgestützt sein und hierarchisch sein mit Brücken, Crossbar, Punkt-zu-Punkt- oder anderen Verbindungen.
-
Der PMGR 32 kann konfiguriert sein, die von der externen PMU angeforderten Größen der Versorgungsspannung zu steuern. Es kann mehrere von der externen PMU für das SOC 10 erzeugte Versorgungsspannungen geben. Zum Beispiel kann es eine Versorgungsspannung für den CPU-Komplex 14, eine Versorgungsspannung für den Rest des SOC, eine Versorgungsspannung für den Speicher 12 usw. geben. Der PMGR 32 kann unter direkter Software-Steuerung stehen (z. B. kann Software direkt das Einschalten und/oder Ausschalten von Komponenten anfordern) und/oder kann konfiguriert sein, das SOC 10 zu überwachen und zu ermitteln, wann verschiedene Komponenten einzuschalten oder auszuschalten sind.
-
Es wird festgehalten, dass die Anzahl von Komponenten des SOC 10 (und die Anzahl von Teilkomponenten für die in 1 gezeigten, wie beispielsweise innerhalb des CPU-Komplexes 14) von Ausführungsform zu Ausführungsform schwanken kann. Es kann mehr oder weniger von jeder Komponente/Teilkomponente geben als die in 1 gezeigte Anzahl.
-
2 ist ein Blockdiagramm einer bestimmten Ausführungsform der Schaltung einer lokalen Zeitbasis 26A. Andere Schaltungen einer lokalen Zeitbasis 26B bis 26D können ähnlich sein. In der Ausführungsform von 2 schließt die Schaltung einer lokalen Zeitbasis 26A eine Steuerschaltung 40, ein Register eines nächsten Synchronisierungswertes 42, ein Register einer lokalen Zeitbasis 44 und ein Inkrementregister 46 ein. Die Steuerschaltung 40 ist mit dem Fr_clk-Eingang und der Schnittstelle einer globalen Zeitbasis von der Schaltung einer globalen Zeitbasis 20 gekoppelt und ist ferner mit dem Register eines nächsten Synchronisierungswertes 42, dem Register einer lokalen Zeitbasis 44 und dem Inkrementregister 46 gekoppelt.
-
Als Reaktion auf den Fr_clk kann die Steuerschaltung 40 konfiguriert sein, das Register einer lokalen Zeitbasis 44 abhängig von einer Sättigung beim nächsten Zeitbasissynchronisierungswert („nächsten Synchronisierungswert“) im Register 42 zu inkrementieren. Zum Beispiel kann das Inkrement als Reaktion auf jede ansteigende Flanke des Fr_clk angewandt werden. Wie zuvor erwähnt, kann in einer Beispielausführungsform die Größe des Inkrements vom Verhältnis der Fr_clk-Frequenz zur Rt_clk-Frequenz abhängig sein. Die Größe des Inkrements kann zum Beispiel in dem Inkrementregister 46 programmiert sein. Die Steuerschaltung 40 kann das Inkrement zur derzeitigen lokalen Zeitbasis addieren und das Ergebnis (beim nächsten Synchronisierungswert gesättigt) in das Register einer lokalen Zeitbasis 44 schreiben.
-
In einer Ausführungsform kann der nächste Synchronisierungswert über die Schnittstelle einer globalen Zeitbasis während der Periode zwischen Synchronisierungsereignissen an die Schaltung einer lokalen Zeitbasis 26A übermittelt werden. In dem vorstehenden Beispiel treten Synchronisierungsereignisse bei der ansteigenden Flanke des Rt_clk auf, und der nächste Synchronisierungswert wird bei der abfallenden Flanke des Rt_clk übermittelt. Genauer kann es sich in einer Ausführungsform bei der Schnittstelle einer globalen Zeitbasis um eine serielle Schnittstelle handeln, die bei der Fr_clk-Frequenz arbeitet, und sie kann den nächsten Synchronisierungswert über mehrere Taktzyklen des Fr_clk, beginnend bei der abfallenden Flanke des Rt_clk, übermitteln. Die Steuerschaltung 40 kann konfiguriert sein, das Register eines nächsten Synchronisierungswertes 42 als ein Verschiebungsregister zu betreiben, wenn der nächste Synchronisierungswert bereitgestellt wird, und kann konfiguriert sein, anzugeben, dass der nächste Synchronisierungswert gültig ist, sobald er in den Register eines nächsten Synchronisierungswertes 42 verschoben wurde. Die Steuerschaltung 40 kann konfiguriert sein, den nächsten Synchronisierungswert als Reaktion auf ein Synchronisierungsereignis als ungültig zu behandeln, bis ein aktualisierter Wert übermittelt wird. Andere Ausführungsformen können den Wert als einen parallelen Bus oder unter Verwendung anderer Mechanismen übermitteln.
-
In anderen Ausführungsformen kann die Schaltung einer lokalen Zeitbasis 26A die Differenz zwischen Synchronisierungswerten von der Schaltung einer globalen Zeitbasis 20 empfangen und kann konfiguriert sein, den nächsten Synchronisierungswert lokal zu erzeugen, indem die Differenz zum vorherigen Wert addiert wird.
-
Unter Hinwendung zu 3 wird nun ein Blockdiagramm einer bestimmten Ausführungsform der Schaltung einer globalen Zeitbasis 20 gezeigt. In der Ausführungsform von 3 schließt die Schaltung einer globalen Zeitbasis 20 eine Steuerschaltung 50, ein Register eines nächsten Synchronisierungswertes 52, ein Register einer globalen Zeitbasis 54, ein Inkrementregister 56 und ein Synchronisierungsinkrementregister 58 ein. Die Steuerschaltung 50 ist an den Rt_clk-Eingang, den Fr_clk-Eingang und die Schnittstelle einer globalen Zeitbasis zu den Schaltungen einer lokalen Zeitbasis 26A bis 26D gekoppelt.
-
Die Steuerschaltung 50 ist ferner mit dem Register eines nächsten Synchronisierungswertes 52, dem Register einer globalen Zeitbasis 54, dem Inkrementregister 56 und dem Synchronisierungsinkrementregister 58 gekoppelt.
-
Ähnlich der vorstehenden Erläuterung für die Schaltung einer lokalen Zeitbasis 26A kann die Steuerschaltung 50 konfiguriert sein, das Register einer globalen Zeitbasis 54 abhängig von einer Sättigung beim nächsten Zeitbasissynchronisierungswert („nächsten Synchronisierungswert“) im Register 52 zu inkrementieren. Die Größe des Inkrements kann zum Beispiel in das Inkrementregister 56 programmiert werden. Die Steuerschaltung 50 kann das Inkrement zur derzeitigen globalen Zeitbasis addieren und das Ergebnis (beim nächsten Synchronisierungswert gesättigt) in das Register einer globalen Zeitbasis 54 schreiben. In anderen Ausführungsformen ist das Register einer globalen Zeitbasis 54 unter Umständen nicht bereitgestellt. Wenn zum Beispiel alle Komponenten, die auf die Zeitbasis zugreifen, Zugriff auf eine Schaltung einer lokalen Zeitbasis 26A bis 26D haben, wird das Register einer globalen Zeitbasis 54 unter Umständen nicht benötigt. Stattdessen kann die Schaltung einer globalen Zeitbasis 20 für eine Synchronisierung der lokalen Zeitbasen als Reaktion auf den Rt_clk zuständig sein. In einer Ausführungsform kann die Steuerschaltung 50 den nächsten Synchronisierungswert als Reaktion auf ein Synchronisierungsereignis erzeugen, indem das Synchronisierungsinkrement aus dem Register 58 zu dem derzeitigen Inhalt des Registers eines nächsten Synchronisierungswertes 52 addiert wird und das Ergebnis in das Register eines nächsten Synchronisierungswertes 52 geschrieben wird. Das Synchronisierungsinkrement kann in das Synchronisierungsinkrementregister 58 programmiert werden und kann vom Verhältnis der Frequenzen des Fr_clk und des Rt_clk abhängen. Die Steuerschaltung 50 kann konfiguriert sein, den nächsten Synchronisierungswert über die Schnittstelle einer globalen Zeitbasis während der Periode zwischen Synchronisierungsereignissen an die Schaltungen einer lokalen Zeitbasis 26A bis 26D zu übermitteln, wie vorstehend in Hinsicht auf die Schaltung einer lokalen Zeitbasis 26A beschrieben.
-
4 ist ein Zeittaktungsdiagramm, das einen Betrieb einer bestimmten Ausführungsform der Schaltungen einer lokalen Zeitbasis 26A bis 26D und der Schaltung einer globalen Zeitbasis 20 veranschaulicht. In 4 sind der Rt_clk (allerdings nicht maßstabsgerecht zum Fr_clk für größere Frequenzverhältnisse) sowie der Fr_clk gezeigt. Bei der Synchronisierungszeit kann es sich um den nächsten Synchronisierungswert im Register eines nächsten Synchronisierungswertes 56 in der Schaltung einer globalen Zeitbasis 50 handeln. Somit kann sich die Synchronisierungszeit bei der derzeitigen ansteigenden Rt_clk-Flanke in den nächsten Synchronisierungswert ändern (gültig für die nachfolgende ansteigende Rt_clk-Flanke).
-
Somit ändert sich die Synchronisierungszeit von N in N+M (wobei M das Synchronisierungsinkrement im Synchronisierungsinkrementregister 58 ist) in der ersten Periode des Rt_clk in 4, dann N+2M in der zweiten Periode und N+3M in der dritten Periode. Als Reaktion auf die abfallenden Flanken des Rt_clk kann die Schaltung einer globalen Zeitbasis 20 die Synchronisierungszeit an die Schaltungen einer lokalen Zeitbasis 26A bis 26D übermitteln, und somit kann sich der nächste Synchronisierungswert wie in 4 gezeigt (der nächste Synchronisierungswert im Register 42 in den Schaltungen einer lokalen Zeitbasis 26A bis 26D) annähernd in der Mitte der Rt_clk-Periode aktualisieren.
-
Die globalen Zeitbasiswerte und die lokalen Zeitbasiswerte sind ebenfalls in jeder Periode gezeigt. Am Beginn der ersten gezeigten Periode (gestrichelte Linie 60) sind beide Zeitbasen auf N synchronisiert. In der ersten Taktperiode kann der Fr_clk nachlaufen, und somit sind am Ende der Periode (gestrichelte Linie 62) die Zeitbasen unter dem nächsten Synchronisierungswert (z. B. N+M-x für die globale Zeitbasis und N+M-y für die lokale Zeitbasis). Die globale und die lokale Zeitbasis können aufgrund unterschiedlicher Taktquellen für den Fr_clk oder anderer Schwankungen im Fr_clk unterschiedlich sein (z. B. aufgrund eines nicht ausgeglichenen Taktbaums für den Fr_clk oder anderer lokaler Schwankungen). In anderen Fällen können x und y gleich sein.
-
Die Schaltung einer globalen Zeitbasis 20 und die Schaltungen einer lokalen Zeitbasis 26A bis 26D können den nächsten Synchronisierungswert als Reaktion auf das Synchronisierungsereignis laden (vor dem Aktualisieren des nächsten Synchronisierungswertes für die folgende Periode), und somit bewegen sich sowohl die globale Zeitbasis als auch die lokale Zeitbasis am Start der zweiten Periode zu N+M. In der zweiten Periode kann der Fr_clk schneller arbeiten als erwartet, und somit können die globale Zeitbasis und die lokale Zeitbasis bei N+2M bis zum Ende der zweiten Periode (z. B. gestrichelte Linie 64) gesättigt sein.
-
Es wird festgehalten, dass das Zeittaktungsdiagramm von 4 lediglich beispielhaft ist, um sowohl Sättigung als auch Laden des Synchronisierungswertes zu veranschaulichen. Im tatsächlichen Betrieb können benachbarte Perioden oft dasselbe Verhalten aufweisen (z. B. Sättigung oder Laden) und wechseln weniger häufig in die gegenteilige Synchronisierung.
-
5 ist ein Flussbild, das den Betrieb einer Ausführungsform der Schaltungen einer lokalen Zeitbasis 26A bis 26D (und genauer der Steuerschaltung 40 in der Ausführungsform von 2) veranschaulicht. Obwohl die Blöcke der Einfachheit des Verständnisses wegen in einer bestimmten Reihenfolge gezeigt sind, können andere Reihenfolgen verwendet werden. Blöcke können in der Schaltlogik kombinatorischer Logik in der Steuerschaltung 40 parallel durchgeführt werden. Blöcke, Kombinationen von Blöcken und/oder das Flussbild als Ganzes können über mehrere Taktzyklen geleitet werden. Die Steuerschaltung 40 kann konfiguriert sein, den in 5 gezeigten Betrieb zu implementieren.
-
Wenn der nächste Synchronisierungswert von der Schaltung einer globalen Zeitbasis 20 kommend empfangen wird (Entscheidungsblock 70, „Ja“-Zweig), kann die Steuerschaltung 40 konfiguriert sein, den nächsten Synchronisierungswert im Register eines nächsten Synchronisierungswertes 42 zu erfassen (Block 72). Zum Beispiel kann, wie vorstehend erwähnt, die Schaltung einer globalen Zeitbasis 20 den nächsten Synchronisierungswert als einen seriellen Bitstrom bei der Fr_clk-Taktrate übermitteln. In solch einer Ausführungsform kann das Erfassen des nächsten Synchronisierungswertes ein Verschieben der seriellen Daten in das Register eines nächsten Synchronisierungswertes 42 einschließen. Der nächste Synchronisierungswert kann vom Beginn der Synchronisierungsperiode bis zu dem Zeitpunkt, an dem die Daten im Register 42 erfasst wurden, ungültig sein.
-
Wenn die ansteigende Flanke des Fr_clk-Taktes erfasst wird (Entscheidungsblock 74, „Ja“-Zweig) und entweder der nächste Synchronisierungswert ungültig ist (Entscheidungsblock 76, „Nein“-Zweig) oder der nächste Synchronisierungswert gültig ist (Entscheidungsblock 76, „Ja“-Zweig) und der lokale Zeitbasiswert den nächsten Synchronisierungswert nicht erreicht hat (Entscheidungsblock 78, „Nein“-Zweig), kann die Steuerschaltung 40 konfiguriert sein, die lokale Zeitbasis im Register 44 zu aktualisieren (Block 80). Genauer kann in einer Ausführungsform die Aktualisierung ein Inkrement des Wertes im Register 44 um den Inkrementwert im Register 46 darstellen. Wenn andererseits die ansteigende Flanke des Fr_clk-Taktes erfasst wird (Entscheidungsblock 74, „Ja“-Zweig), der nächste Synchronisierungswert gültig ist (Entscheidungsblock 76, „Ja“-Zweig) und der lokale Zeitbasiswert den nächsten Synchronisierungswert erreicht hat (Entscheidungsblock 78, „Ja“-Zweig), kann die Steuerschaltung 40 konfiguriert sein, die lokale Zeitbasis im Register 44 beim nächsten Synchronisierungswert zu sättigen (Block 82).
-
Wenn ein Synchronisierungsereignis durch die Schaltung einer globalen Zeitbasis 20 signalisiert wird (Entscheidungsblock 84, „Ja“-Zweig), kann die Steuerschaltung 40 konfiguriert sein, den nächsten Synchronisierungswert in die lokale Zeitbasis zu laden, wenn die lokale Zeitbasis nicht bereits gesättigt ist (Block 86). Da die Sättigung beim nächsten Synchronisierungswert erfolgt, kann das Laden unabhängig vom Inhalt der lokalen Zeitbasis zum Zeitpunkt des Synchronisierungsereignisses durchgeführt werden. Wenn die lokale Zeitbasis gesättigt ist, befindet sie sich bereits beim nächsten Synchronisierungswert, und somit ist kein Laden erforderlich, wenngleich das Laden trotzdem durchgeführt werden kann.
-
6 ist ein Flussbild, das den Betrieb einer bestimmten Ausführungsform der Schaltung einer globalen Zeitbasis 20 (und genauer der Steuerschaltung 50 in der Ausführungsform von 3) veranschaulicht. Obwohl die Blöcke der Einfachheit des Verständnisses wegen in einer bestimmten Reihenfolge gezeigt sind, können andere Reihenfolgen verwendet werden. Blöcke können in der Schaltlogik kombinatorischer Logik in der Steuerschaltung 50 parallel durchgeführt werden. Blöcke, Kombinationen von Blöcken und/oder das Flussbild als Ganzes können über mehrere Taktzyklen geleitet werden. Die Steuerschaltung 50 kann konfiguriert sein, den in 6 gezeigten Betrieb zu implementieren.
-
Wenn die abfallende Flanke des Rt_clk erfasst wird (Entscheidungsblock 90, „Ja“-Zweig), kann die Steuerschaltung 50 konfiguriert sein, den nächsten Synchronisierungswert im Register eines nächsten Synchronisierungswertes 52 an die Schaltungen einer lokalen Zeitbasis 26A bis 26D zu übermitteln (Block 92). Zum Beispiel kann, wie vorstehend erwähnt, die Schaltung einer globalen Zeitbasis 20 den nächsten Synchronisierungswert als einen seriellen Bitstrom bei der Fr_clk-Taktrate übermitteln.
-
Wenn die ansteigende Flanke des Fr_clk-Taktes erfasst wird (Entscheidungsblock 94, „Ja“-Zweig) und der globale Zeitbasiswert den nächsten Synchronisierungswert nicht erreicht hat (Entscheidungsblock 96, „Nein“-Zweig), kann die Steuerschaltung 50 konfiguriert sein, die globale Zeitbasis im Register 54 zu aktualisieren (Block 98). Genauer kann in einer Ausführungsform die Aktualisierung ein Inkrement des Wertes im Register 54 um den Inkrementwert im Register 56 darstellen. Wenn andererseits die ansteigende Flanke des Fr_clk-Taktes erfasst wird (Entscheidungsblock 94, „Ja“-Zweig) und der globale Zeitbasiswert den nächsten Synchronisierungswert erreicht hat (Entscheidungsblock 96, „Ja“-Zweig), kann die Steuerschaltung 50 konfiguriert sein, die globale Zeitbasis im Register 54 beim nächsten Synchronisierungswert zu sättigen (Block 100).
-
Wenn die ansteigende Flanke des Rt_clk erfasst wird (Entscheidungsblock 102, „Ja“-Zweig) tritt ein Synchronisierungsereignis auf. Die Steuerschaltung 50 kann konfiguriert sein, den nächsten Synchronisierungswert in die globale Zeitbasis zu laden, wenn die globale Zeitbasis nicht bereits gesättigt ist (Block 104). Da die Sättigung beim nächsten Synchronisierungswert erfolgt, kann das Laden unabhängig vom Inhalt der globalen Zeitbasis zum Zeitpunkt des Synchronisierungsereignisses durchgeführt werden. Die Steuerschaltung 50 kann zudem konfiguriert sein, den Schaltungen einer lokalen Zeitbasis 26A bis 26D das Synchronisierungsereignis zu signalisieren (Block 106). Zusätzlich kann die Steuerschaltung 50 konfiguriert sein, den nächsten Synchronisierungswert im Register 52 zu aktualisieren, indem der derzeitige Wert zum Synchronisierungsinkrement aus dem Register 58 addiert wird (Block 108).
-
7 ist ein Flussbild, das eine Initialisierung der globalen und lokalen Zeitbasen für eine bestimmte Ausführungsform (und genauer für die Steuerschaltungen 40 und 50 für die Ausführungsformen von 2 bzw. 3) veranschaulicht. Obwohl die Blöcke der Einfachheit des Verständnisses wegen in einer bestimmten Reihenfolge gezeigt sind, können andere Reihenfolgen verwendet werden. Blöcke können in der Schaltlogik kombinatorischer Logik in den Steuerschaltungen 40 und 50 parallel durchgeführt werden. Blöcke, Kombinationen von Blöcken und/oder das Flussbild als Ganzes können über mehrere Taktzyklen geleitet werden. Die Steuerschaltungen 40 und 50 können konfiguriert sein, den in 7 gezeigten Betrieb zu implementieren.
-
Die Schaltung einer globalen Zeitbasis 20 kann ein Teil der Always-on-Komponente 16 sein und kann somit auf Grundlage der Zurücksetzfreigabe an die Always-on-Komponente 16 zurückgesetzt werden. Insbesondere, wenn Strom nach einer Zeitdauer ohne Strom zuerst an das SOC 10 geliefert wird, kann die Always-on-Komponente 16 zurückgesetzt werden. Solange dem SOC 10 Strom geliefert wird, kann allgemein die Always-on-Komponente 16 eingeschaltet sein und muss nicht zurückgesetzt werden, selbst wenn andere Abschnitte des SOC 10 ausgeschaltet wurden. Wenn die Always-on-Komponente 16 zurückgesetzt wird und das Zurücksetzen freigegeben wird (Entscheidungsblock 110, „Ja“-Zweig), kann die Steuerschaltung 50 das Register einer globalen Zeitbasis 54 beginnend bei 0 auf Grundlage des Fr_clk aktualisieren (Block 112). Die Aktualisierungen können durchgeführt werden, wie vorstehend in Hinsicht auf 6 beschrieben.
-
Wenn eine andere Komponente im SOC 10 (neben der Always-on-Komponente 16) zurückgesetzt wurde und das Zurücksetzen freigegeben wird (Entscheidungsblock 114, „Ja“-Zweig), kann die Steuerschaltung 40 in der entsprechenden Schaltung einer lokalen Zeitbasis 26A bis 26D beginnen, den nächsten Synchronisierungswert im Register eines nächsten Synchronisierungswertes 42 bei jeder Übermittlung von der Schaltung einer globalen Zeitbasis 20 kommend zu erfassen (Block 116). In Ausführungsformen, in denen der nächste Synchronisierungswert seriell übermittelt wird, ist es jedoch möglich, dass das Zurücksetzen während der Übermittlung freigegeben wird und somit der nächste Synchronisierungswert nicht korrekt erfasst wird. Dementsprechend kann die Steuerschaltung 40 darauf warten, das zweite Synchronisierungsereignis nach der Zurücksetzfreigabe zu erfassen (Block 118) und kann dann den nächsten Synchronisierungswert aus dem nächsten Synchronisierungsregister 42 in das Register einer lokalen Zeitbasis 44 laden (Block 120). Die Steuerschaltung 40 kann dann beginnen, das Register beim Fr_clk-Wert, wie in Hinsicht auf 5 beschrieben, zu aktualisieren (Block 122).
-
Unter Hinwendung zu 8 ist ein Blockdiagramm einer Ausführungsform eines Systems 150 gezeigt. In der veranschaulichten Ausführungsform schließt das System 150 zumindest eine Instanz des SOC 10 ein, gekoppelt mit einer oder mehreren Peripherieeinheiten 154 und einem externen Speicher 12. Eine Energieverwaltungseinheit (PMU) 156 wird bereitgestellt, die dem SOC 10 die Versorgungsspannungen sowie dem Speicher 12 und/oder den Peripherieeinheiten 154 eine oder mehrere Versorgungsspannungen liefert. In manchen Ausführungsformen kann mehr als eine Instanz des SOC 10 eingeschlossen sein (und auch mehr als ein Speicher 12 kann eingeschlossen sein).
-
Die PMU 156 kann generell die Schaltlogik einschließen, um Versorgungsspannungen zu erzeugen, und um diese Versorgungsspannungen für andere Komponenten des Systems bereitzustellen, wie beispielsweise das SOC 10, den Speicher 12, verschiedene Peripherieeinheitenkomponenten 154 außerhalb des Chips, wie z. B. Anzeigevorrichtungen, Bildsensoren, Benutzerschnittstellenvorrichtungen usw. Die PMU 156 kann somit programmierbare Spannungsregler, Logik zum Bilden einer Schnittstelle zum SOC 10 und insbesondere zum SOC PMGR 16 einschließen, um Spannungsanforderungen zu empfangen usw.
-
Die Peripherieeinheiten 154 können jede gewünschte Schaltlogik einschließen, abhängig vom Typ des Systems 150. Zum Beispiel kann in einer Ausführungsform das System 150 eine mobile Vorrichtung (z. B. ein persönlicher digitaler Assistent (PDA), ein Smartphone usw.) sein, und die Peripherieeinheiten 154 können Vorrichtungen für verschiedene Typen von drahtloser Kommunikation einschließen, wie Wi-Fi, Bluetooth, Mobilfunk, globales Positionsbestimmungssystem usw. Die Peripherieeinheiten 154 können auch zusätzlichen Speicher aufweisen, einschließlich RAM-Speicher, Solid-State-Speicher oder Plattenspeicher. Die Peripherieeinheiten 154 können Benutzerschnittstellen-Vorrichtungen, wie beispielsweise einen Anzeigebildschirm, einschließlich Touchscreens oder Multi-Touchscreens, Tastatur- oder andere Eingabevorrichtungen, Mikrofone, Lautsprecher usw., einschließen. In anderen Ausführungsformen kann das System 150 ein beliebiger Typ von Rechensystem sein (z. B. Desktop-Personal-Computer, Laptop, Workstation, Nettop usw.).
-
Der externe Speicher 12 kann jeden beliebigen Speichertyp einschließen. Zum Beispiel kann es sich bei dem externen Speicher 12 um einen SRAM, einen dynamischen RAM (DRAM), wie beispielsweise einen synchronen DRAM (SDRAM), einen Double Data Rate (DDR, DDR2, DDR3 usw.) SDRAM, RAMBUS DRAM, weniger Leistung verbrauchende Versionen des DDR DRAM (z. B. LPDDR, mDDR usw.) usw. handeln. Der externe Speicher 12 kann ein oder mehrere Speichermodule einschließen, an denen die Speichervorrichtungen angebaut sind, wie beispielsweise einzelreihige Speichermodule (SIMMs), zweireihige Speichermodule (DIMMs) usw. Alternativ dazu kann der externe Speicher 12 eine oder mehrere Speichervorrichtungen einschließen, die an dem SOC 10 in einer Chip-auf-Chip- oder Package-auf-Package-Implementierung angebaut sind.
-
Zahlreiche Variationen und Modifikationen werden für den Fachmann ersichtlich, sobald die vorstehende Offenbarung vollständig verstanden ist. Es ist beabsichtigt, dass die folgenden Ansprüche so interpretiert werden, dass alle solchen Variationen und Modifikationen eingeschlossen sind.