DE112015002522B4 - System-on-a-chip mit always-on-prozessor, der das SOC rekonfiguriert und Nur-Speicher-Kommunikationsmodus unterstützt - Google Patents

System-on-a-chip mit always-on-prozessor, der das SOC rekonfiguriert und Nur-Speicher-Kommunikationsmodus unterstützt Download PDF

Info

Publication number
DE112015002522B4
DE112015002522B4 DE112015002522.7T DE112015002522T DE112015002522B4 DE 112015002522 B4 DE112015002522 B4 DE 112015002522B4 DE 112015002522 T DE112015002522 T DE 112015002522T DE 112015002522 B4 DE112015002522 B4 DE 112015002522B4
Authority
DE
Germany
Prior art keywords
component
memory controller
soc
memory
processor
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.)
Active
Application number
DE112015002522.7T
Other languages
English (en)
Other versions
DE112015002522T5 (de
Inventor
Brijesh Tripathi
Shane KEIL
Manu Gulati
Jung Wook Cho
Erik P. Machnicki
Gilbert H. Herbeck
Timothy J. Millet
Joshua P. de Cesare
Anand Dalal
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of DE112015002522T5 publication Critical patent/DE112015002522T5/de
Application granted granted Critical
Publication of DE112015002522B4 publication Critical patent/DE112015002522B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40615Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)

Abstract

Integrierte Schaltung (10), umfassend:mindestens einen Prozessor (30), der eine Zentraleinheit in der integrierten Schaltung (10) bildet;eine Energieverwaltungsschaltung (32), konfiguriert zum Übertragen von Spannungsanforderungen an eine Energieverwaltungseinheit (156), die extern zur integrierten Schaltung (10) ist, wobei die Spannungsanforderungen Anforderungen sind, um eine oder mehrere Stromversorgungsspannungen zur integrierten Schaltung (10) zu leiten;einen Speicher-Controller (22), gekoppelt mit einem Speicher (12) während des Betriebs, wobei die Energieverwaltungsschaltung (32) konfiguriert ist, um ein Herunterfahren des Speicher-Controllers (22) über eine Kommunikation mit der Energieverwaltungseinheit (156) zu veranlassen; undeine erste, mit dem Prozessor (30) und dem Speicher-Controller (22) gekoppelte Komponente (16), wobei die erste Komponente (16) konfiguriert ist, um eingeschaltet zu bleiben, während der Prozessor (30), die Energieverwaltungsschaltung (32) und der Speicher-Controller (22) abgeschaltet sind, und wobei die erste Komponente (16) separat von der Energieverwaltungsschaltung (32) mit der Energieverwaltungseinheit (156) gekoppelt ist, und wobei die erste Komponente (16) konfiguriert ist, um das Hochfahren des Speicher-Controllers (22) über die separate Kopplung mit der Energieverwaltungseinheit (156) zu veranlassen, um den Speicher-Controller (22) unter Verwendung der in der ersten Komponente (16) gespeicherten Konfigurationsdaten des Speicher-Controllers (22) zu programmieren und um mit dem Speicher-Controller (22) während einer Zeit, in der der Prozessor (30) heruntergefahren ist, zu kommunizieren.

Description

  • HINTERGRUND
  • Technisches Gebiet
  • Hierin beschriebene Ausführungsformen betreffen das Gebiet von Systems-on-a-Chip (SOCs) und insbesondere einen Always-on-Block in einem SOC.
  • Beschreibung Der Verwandten Technik
  • Eine Vielzahl elektronischer Vorrichtungen wird heute täglich von Verbrauchern eingesetzt. Insbesondere mobile Vorrichtungen sind allgegenwärtig geworden. Mobile Vorrichtungen können Mobiltelefone einschließen, persönliche digitale Assistenten (PDAs), Smartphones, die Telefoniefunktionen und andere Computerfunktionen kombinieren, wie z. B. verschiedene PDA-Funktionen und/oder allgemeine Anwendungsunterstützung, Tablets, Laptops, Nettops, Smartwatches, am Körper tragbare Elektronik usw. Generell kann eine mobile Vorrichtung eine beliebige elektronische Vorrichtung sein, die dafür konzipiert ist, durch einen Benutzer mitgeführt oder von einem Benutzer am Körper getragen zu werden. Die mobile Vorrichtung ist üblicherweise batteriebetrieben, sodass sie entfernt von einer konstanten elektrischen Quelle, wie z. B. einem elektrischen Anschluss, betrieben werden kann.
  • Viele mobile Vorrichtungen können über einen Großteil der Zeit in einem „Stand-by“-Modus arbeiten. Im Stand-by-Modus kann die Vorrichtung ausgeschaltet erscheinen, wenn die Vorrichtung nicht aktiv Inhalt für den Benutzer anzeigt und/oder nicht aktiv Funktionen für den Benutzer ausführt. Im Stand-by-Modus kann ein Großteil der Vorrichtung tatsächlich ausgeschaltet sein. Die Vorrichtung kann jedoch im Hintergrund auf Telefonanrufe oder Netzwerkpakete warten, Alarme überprüfen, auf Bewegung reagieren usw.
  • Da die mobilen Vorrichtungen häufig aus einer begrenzten Versorgungsquelle (z. B. einer Batterie) arbeiten, ist Energieerhaltung eine wesentliche Designanforderung an die Vorrichtungen. Die Integration eines Systems auf einem Chip (SOC) kann die Energieerhaltung unterstützen, da ein Großteil des erforderlichen Funktionsumfangs in der Vorrichtung im SOC eingeschlossen sein kann. Im „Stand-by“-Modus und anderen Modi mit geringem Stromverbrauch ist es wünschenswert, das SOC herunterzufahren, um Leckstromverluste zu eliminieren, die ein signifikanter Faktor beim Energieverbrauch in modernen Technologien mit integrierten Schaltungen sind. Andererseits wird das SOC für einige der vorstehend erwähnten Stand-by-Funktionen benötigt.
  • DE 10 2013 224 175 A1 beschreibt ein Verfahren zum Eintreten in einen Energie-Bewahrungs-Zustand aufweisend Auswählen und Eintreten in einen einer Mehrzahl von Niedrig-Leistungs-Zuständen für das Computer-System in Antwort auf ein detektiertes System-Untätigkeits-Ereignis. Die Mehrzahl von Niedrig-Leistungs-Zuständen weist einen ersten Niedrig-Leistungs-Zustand und einen zweiten Niedrig-Leistungs-Zustand für das Computer-System auf. Ein Speicher des Computer-Systems wird während des ersten Niedrig-Leistungs-Zustandes selbst aufgefrischt. Ein Basisband-Modul des Computer-Systems verbleibt angeschaltet und der Speicher ist für das Basisband-Modul während des zweiten Niedrig-Leistungs-Zustandes zugreifbar. Der eine Niedrig-Leistungs-Zustand ist abhängig von einer Basisband-Modul-Aktivität ausgewählt. Das Verfahren umfasst auch Austreten aus dem einen einer Mehrzahl von Niedrig-Leistungs-Zuständen, wenn ein Weck-Ereignis detektiert ist.
  • US 2013 / 0 173 938 A1 beschreibt eine Datenverarbeitungsvorrichtung umfassend eine Vielzahl von Kernen einer zentralen Verarbeitungseinheit (CPU); eine Vielzahl von ersten Schaltern, die jeweils zwischen eine Stromleitung und jeden der Vielzahl von CPU-Kernen geschaltet sind; eine Energieverwaltungseinheit; und eine Steuerschaltung zur dynamischen Spannungs-/Frequenzskalierung, die so konfiguriert ist, dass sie zumindest eine Spannung und/oder eine Frequenz eines Taktsignals skaliert, die jedem der CPU-Kerne gemäß einer Steuerung der Energieverwaltungseinheit zugeführt werden, wobei die Energieverwaltungseinheit konfiguriert ist zum Verringern der Spannung und/oder der Frequenz, die jedem der CPU-Kerne zugeführt werden, und zum Erzeugen jedes der ersten Steuersignale, die einen Schaltvorgang jedes der mehreren ersten Schalter steuern, gemäß einer Steuerung einer der CPUs Kerne.
  • ZUSAMMENFASSUNG
  • Die Erfindung wird durch die Merkmale der unabhängigen Ansprüche definiert. Vorteilhafte Ausführungen werden durch die weiteren Merkmale der abhängigen Ansprüche beschrieben. Bei einer Ausführungsform schließt ein SOC eine Komponente ein, die mit Strom versorgt bleibt, wenn der Rest des SOC heruntergefahren ist. Die Komponente kann eine Sensor-Erfassungseinheit einschließen, die konfiguriert ist, um Daten von verschiedenen Vorrichtungssensoren zu erfassen. Die erfassten Sensordaten können in einem Speicher in der Komponente zwischengespeichert werden. Die Komponente kann bei einigen Ausführungsformen ferner einen Prozessor einschließen, der die erfassten Sensordaten filtern und nach Mustern suchen kann, die das Erfordernis einer weiteren Verarbeitung durch die Vorrichtung angeben können. Falls das Erfordernis weiterer Verarbeitung erkannt wird, kann die Komponente den Rest des SOC aufwecken (d. h. das Einschalten und Neuprogrammieren veranlassen), um die Verarbeitung zu ermöglichen. Bei einigen Ausführungsformen kann der Strom-/Energieverbrauch reduziert sein, während das Erfassen von Sensordaten während der Zeiten, in denen die Vorrichtung nicht aktiv in Betrieb ist, weiterhin unterstützt wird. Beispielsweise können die Strom-/Energie-Effizienzen, die sich durch die Integration der Komponente auf der integrierten Schaltung erzielen lassen, erreicht werden, während die Sensordatenerfassung unterstützt wird. Die Komponente kann programmierbare Konfigurationsdaten für die anderen Komponenten des SOC speichern, um diese nach dem Aufwachen neu zu programmieren. Die programmierbaren Konfigurationsdaten können dem Zustand der Komponente zu dem Zeitpunkt des zuletzt erfolgten Herunterfahrens der SOC entsprechen (während die Komponente eingeschaltet blieb), oder sie können in einem für das Aufwecken erwünschten, unterschiedlichen Zustand sein.
  • Bei einigen Ausführungsformen kann die Komponente konfiguriert sein, um sowohl den Speicher-Controller in dem SOC als auch den Pfad für den Speicher-Controller aufzuwecken, um die Daten in den Speicher zu schreiben und/oder Daten aus dem Speicher auszulesen. Der Rest des SOC kann abgeschaltet bleiben. Auf diese Weise kann die Komponente den größeren Hauptspeicher zum Speichern von Daten (z. B. Sensordaten) nutzen, ohne die anderen Komponenten aufzuwecken (z. B. einschließlich einer Zentraleinheit (CPU) und eines oder mehrerer Prozessoren), um die Übertragung zu ermöglichen. Der Strom-/Energieverbrauch kann reduziert sein, da nur die benötigten Komponenten eingeschaltet sind.
  • Bei einigen Ausführungsformen können das Speichern der programmierbaren Konfigurationsdaten und das Wiederherstellen der Daten aus der Komponente Latenz reduzieren, wenn aus einem heruntergefahrenen Zustand im SOC (z. B. Schlafzustand) erneut hochgefahren wird. Bei einigen Ausführungsformen kann die Verarbeitung von Daten in einem Zustand (z. B. Prozessor in der Komponente im Wachzustand, während das SOC im Schlafzustand ist) zu Spekulationen führen, dass ein höherer Strom-/Performance-Zustand bald erforderlich werden kann. Das SOC kann spekulativ in den Zustand übergehen, und somit kann noch weniger Latenz beim Aufwachen vorliegen, wenn die Spekulation akkurat ist.
  • Figurenliste
  • Die folgende, detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nun kurz beschrieben werden.
    • 1 ist ein Blockdiagramm einer Ausführungsform eines SOC.
    • 2 ist ein Blockdiagramm einer Ausführungsform eines Always-on-Blocks im SOC.
    • 3 ist ein Blockdiagramm einer Ausführungsform einer Zustandsmaschine für den in
    • 2 gezeigten Always-on-Block.
    • 4 ist ein Blockdiagramm einer weiteren Ausführungsform einer Zustandsmaschine für den in 2 gezeigten Always-on-Block.
    • 5 ist ein Ablaufdiagramm mit der Darstellung des Betriebs einer Ausführungsform von Software, die auf einer CPU im SOC während des Bootens oder bei einer Konfigurationsänderung ausgeführt wird.
    • 6 ist ein Ablaufdiagramm mit der Darstellung des Betriebs einer Ausführungsform des in 2 gezeigten Always-on-Blocks während der Neukonfiguration.
    • 7 ist ein Blockdiagramm mit der Darstellung einer Ausführungsform des SOC in einem Nur-Speicher-Kommunikationszustand.
    • 8 ist ein Blockdiagramm mit der Darstellung von Latenzreduktion für eine Ausführungsform unter Verwendung des Neukonfigurationsansatzes.
    • 9 ist ein Blockdiagramm mit der Darstellung einer Ausführungsform spekulativen Aufweckens zur Latenzreduktion.
    • 10 ist ein Blockdiagramm einer Ausführungsform eines Systems, das das in 1 gezeigte SOC einschließt.
    • 11 ist ein Blockdiagramm einer Ausführungsform eines computerzugänglichen Speichermediums.
  • Während die in dieser Offenbarung beschriebenen Ausführungsformen verschiedenen Abänderungen und alternativen Formen unterliegen können, sind spezifische Ausführungsformen davon beispielhaft in den Zeichnungen wiedergegeben 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. Somit kann die Einheit/Schaltung/Komponente so konfiguriert sein, dass sie die Aufgabe ausführt, 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. Ähnlich können verschiedene Einheiten/Schaltungen/Komponenten aus praktischen Gründen in der Beschreibung so beschrieben sein, dass sie eine oder mehrere Aufgaben ausführen. Solche Beschreibungen sollten so interpretiert werden, als würden sie den Ausdruck „konfiguriert“ enthalten.
  • 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
  • Mit Bezug auf 1 ist ein Blockdiagramm einer Ausführungsform eines SOC 10 gezeigt, dass mit einem Speicher 12, mindestens einen Sensor 20 und einer Power-Management-Einheit (PMU) 156 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. Das SOC 10 wird jedoch hierein als ein Beispiel verwendet. Bei der wiedergegebenen Ausführungsform schließen die Komponenten des SOC 10 einen Zentraleinheit-Komplex (CPU) 14 ein sowie eine „Always-on“-Komponente 16, periphere Komponenten 18A-18B (kurz ausgedrückt, „Peripherie“), einen Speicher-Controller 22, einen Power-Manager (PMGR) 32 und eine Kommunikationsstruktur 27. Die Komponenten 14, 16, 18A-18B, 22 und 32 können alle mit der Kommunikationsstruktur 27 gekoppelt sein. Der Speicher-Controller 22 kann im Betrieb mit dem Speicher 12 gekoppelt sein. Der PMGR 32 und die auch Always-on-Komponente 16 können mit der PMU 156 gekoppelt sein. Die PMU 156 kann konfiguriert sein, um unterschiedliche Stromversorgungsspannungen zum SOC, zum Speicher 12 und/oder zu den Sensoren 20 zu leiten. Die Always-on-Komponente 16 kann mit den Sensoren 20 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 CPU(s) des SOC 10 bilden.
  • Die Always-on-Komponente 16 kann konfiguriert sein, um eingeschaltet zu bleiben, wenn andere Komponenten des SOC 10 (z. B. der CPU-Komplex 14, die Peripherie 18A-18B und der PMGR 32) abgeschaltet sind. Insbesondere kann die Always-on-Komponente 16 immer dann eingeschaltet sein, wenn das SOC 10 Strom von der PMU 156 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 empfängt (z. B. zu Zeitpunkten, wenn 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.
  • 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. Auf ähnliche Weise kann bei der dargestellten Ausführungsform eine gepunktete Linie 26 einen Strombereich des unabhängigen Speicher-Controllers für den Speicher-Controller 22 wiedergeben. 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 PMU 156 erfolgen, indem Energieschalter zwischen den Versorgungsspannungseingaben und -Komponenten bereitgestellt werden und die Stromschalter für einen gegebenen Bereich als eine Einheit und/oder eine Kombination der vorstehenden Einrichtungen 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.
  • Entsprechend der Darstellung in 1 kann die Always-on-Komponente 16 mit mindestens einem Sensor 20 gekoppelt sein (und sie kann mit mehreren Sensoren 20 gekoppelt sein). Die Always-on-Komponente 16 kann konfiguriert sein, um die Sensordaten von den Sensoren 20 auszulesen, während das SOC 10 abgeschaltet ist (zusätzlich zu den Zeiten, zu denen das SOC 10 eingeschaltet ist). Die Always-on-Komponente 16 kann einen Speicher einschließen (in 1 nicht dargestellt), um die Sensordaten zu puffern, und es ist möglich, dass der Rest des SOC 10 nicht eingeschaltet sein muss, sofern sich der Speicher (oder ein zum Speichern von Sensordaten zugeordneter Teil davon) nicht mit Daten füllt (oder einen Schwellenwert für „voll“ erreicht). Bei einigen Ausführungsformen kann die Always-on-Komponente 16 konfiguriert sein, um auch die Sensordaten auf eine bestimmte Weise zu verarbeiten. Beispielsweise kann die Always-on-Komponente 16 zum Filtern der Sensordaten konfiguriert sein. Das Filtern von Daten kann sich generell auf einen oder mehrere der folgenden Vorgänge beziehen: Suchen nach einem Muster oder anderen Dateneigenschaften, die angeben, dass die Sensordaten von den Prozessoren im CPU-Komplex 14 weiterverarbeitet werden sollen; Manipulieren der Daten zum Erkennen/Entfernen von Rauschen in den Daten; Weiterverarbeitung von Daten, die einem Muster oder einer anderen Eigenschaft zu entsprechen scheinen, um falsche positive Treffer zu eliminieren usw.
  • Die Sensoren 20 können beliebige Vorrichtungen sein, die konfiguriert sind, um Aspekte der physikalischen Umgebung einer Vorrichtung, die die Sensoren einschließt, zu erkennen oder zu messen. Beispielsweise kann ein Sensor einen Beschleunigungsmesser einschließen, der die Beschleunigung der Vorrichtung misst. Ein Beschleunigungsmesser kann richtungsorientiert sein (Messen der Beschleunigung in einer vorbestimmten Richtung) oder vektororientiert (Messen der Beschleunigung in mehreren Dimensionen und Erzeugen eines Vektors, der die Beschleunigung und deren Richtung angibt). Mehrere richtungsorientierte Beschleunigungsmesser können eingesetzt werden, um das Abtasten der Vektorbeschleunigung sowie das Abtasten der Richtungsbeschleunigung zu ermöglichen. Ein weiteres Beispiel eines Sensors kann ein Gyroskop (oder Kreisel) sein. Das Gyroskop kann verwendet werden, um die Ausrichtung der Vorrichtung und/oder Änderungen in der Ausrichtung zu erkennen. Wie der Beschleunigungsmesser kann das Gyroskop richtungsorientiert oder mehrdimensional sein, und/oder mehrere richtungsorientierte Gyroskope können verwendet werden. Noch ein weiterer Sensor kann ein Magnetometer sein, das zum Messen der magnetischen Ausrichtung eingesetzt und somit verwendet werden kann, um einen Kompass zu bilden. Bei anderen Ausführungsformen kann die Kompassfunktionalität im Sensor integriert sein. Ein weiterer Sensor kann ein Audio-Detektor sein (z. B. ein Mikrofon). Der Audio-Detektor kann Schall erfassen und Daten erzeugen, die den Schall angeben. Ein weiterer Sensor kann ein Fotodetektor sein, der Licht oder andere elektromagnetische Energie erkennt. Weitere beispielhafte Sensoren können ein Altimeter zum Erkennen der Höhe, einen Temperatursensor und/oder einen Drucksensor einschließen. Noch ein weiterer Sensor kann eine Benutzerschnittstellenvorrichtung sein, wie z. B. eine Schaltfläche, ein Touchscreen, eine Tastatur, eine Zeigervorrichtung, eine Kamera usw. Jeder beliebige Satz an Sensoren kann eingesetzt werden.
  • Wie vorstehend erwähnt, kann die Always-on-Komponente 16 konfiguriert sein, um Daten in einem Speicher in der Komponente zwischenzuspeichern. Wenn sich der Puffer dem vollen Zustand annähert, kann die Always-on-Komponente 16 konfiguriert sein, um den Speicher-Controller 22 aufzuwecken, um die Sensordaten in den Speicher 12 zu schreiben. Bei anderen Ausführungsformen kann die Always-on-Komponente 16 konfiguriert sein, um Ergebnisse der Datenfilterung in den Speicher 12 zu schreiben. Bei einigen Ausführungsformen kann die Always-on-Komponente 16 andere Verarbeitungsaufgaben ausführen, während der Rest des SOC 10 heruntergefahren ist. In dem Ausmaß, in dem diese Aufgaben auf den Speicher 12 zugreifen, kann die Always-on-Komponente 16 konfiguriert sein, um den Speicher-Controller 22 aufzuwecken. Zusätzlich kann die Always-on-Komponente 16 konfiguriert sein, um mindestens einen Teil der Kommunikationsstruktur 27 (d. h. den Teil, der die Always-on-Komponente 16 mit dem Speicher-Controller 22 verbindet) aufzuwecken.
  • Unter Verwendung dieses Nur-Speicher-Kommunikationsmodus kann die Always-on-Komponente 16 in der Lage sein, auf den Speicher 12 zuzugreifen und den im Speicher 12 verfügbaren, signifikanten Speicherplatz auszunutzen, während eine relativ geringe Energie-/Strom-Menge verwendet wird, da der Rest des SOC 10 heruntergefahren bleibt. Die Always-on-Komponente 16 kann programmierbare Konfigurationsdaten für den Speicher-Controller 22 speichern, sodass die Always-on-Komponente 16 den Speicher-Controller 22 programmieren kann, wenn die Stromversorgung wiederhergestellt ist. Das bedeutet, dass die Always-on-Komponente 16 konfiguriert sein, kann um den Speicher-Controller 22 auf eine Weise zu programmieren, die der Weise ähnelt, in der das Betriebssystem den Speicher-Controller 22 während des Bootens der Vorrichtung einschließlich des SOC 10 programmieren würde. Die in der Always-on-Komponente 16 gespeicherten programmierbaren Konfigurationsdaten können bei einer Ausführungsform die Konfigurationsdaten sein, die im Speicher-Controller 22 waren, als das SOC 10 (mit Ausnahme der Always-on-Komponente 16) zuletzt heruntergefahren wurde. Bei einer anderen Ausführungsform können die programmierbaren Konfigurationsdaten eine Konfiguration sein, von der bekannt ist, dass sie bei beliebigen vorangegangenen Konfigurationen des Speicher-Controllers 22 und/oder beliebigen Konfigurationen des Speichers 12 funktioniert hat. Die Konfiguration, die sich als gut erwiesen hat, kann z. B. eine Konfiguration sein, die zur Ausführung der Speicherzugriffe durch die Always-on-Komponente 16 akzeptabel ist.
  • Wenn das SOC 10 heruntergefahren ist und die Always-on-Komponente 16 eingeschaltet bleibt, kann es Teil der Abschaltsequenz sein, den Speicher 12 in einen Erhaltungsmodus zu versetzen. Beispielsweise kann bei DRAM-Ausführungen (Dynamic Random Access Memory) des Speichers 12 der Erhaltungsmodus ein „Auto-Aktualisierungsmodus“ sein. Im Erhaltungsmodus ist der Speicher 12 möglicherweise nicht extern zugänglich, bis der Modus geändert worden ist. Der Inhalt des Speichers 12 kann jedoch erhalten bleiben. Beispielsweise kann der DRAM im Auto-Aktualisierungsmodus die zum Erhalt der Daten erforderlichen periodischen Auffrischungen ausführen (die normalerweise durch den Speicher-Controller 22 durchgeführt werden, wenn der Speicher-Controller 22 eingeschaltet ist).
  • Bei einigen Ausführungsformen kann die Always-on-Komponente 16 ferner programmierbare Konfigurationsdaten für andere Komponenten im SOC 10 speichern. Die programmierbaren Konfigurationsdaten können den Zustand der Komponenten zu dem Zeitpunkt wiedergeben, zu dem der Rest des SOC 10 zuletzt heruntergefahren wurde. Die Always-on-Komponente 16 kann konfiguriert sein, um das SOC 10 für die Verarbeitung aufzuwecken, und sie kann die Komponenten mit den gespeicherten, programmierbaren Konfigurationsdaten neu programmieren. Der Prozess der Wiederherstellung des Zustands der Komponenten auf der Basis der gespeicherten, programmierbaren Konfigurationsdaten kann als Neukonfiguration bezeichnet werden. Ähnlich dem weiter oben erörterten Nur-Speicher-Kommunikationsmodus kann der Zustand, der in den Komponenten wiederhergestellt wird, wiederum der Zustand beim zuletzt erfolgten Herunterfahren der Komponente sein, oder es kann ein als gut bekannter Zustand mit akzeptablen Leistungsdaten für den Neustart des SOC 10 zum Betrieb sein. Im letzteren Fall kann der Zustand zu einem Zustand mit höherer Performance modifiziert werden, nachdem die Neukonfiguration abgeschlossen ist.
  • Die Wiederherstellung des Zustands unter Verwendung der Neukonfigurationsfunktion in der Always-on-Komponente 16 kann ein Vorgang mit niedrigerer Latenz sein als die Wiederherstellung der Stromversorgung im SOC 10 und die anschließende Initialisierung des SOC 10 und des Betriebssystems auf eine einem Kaltstart ähnliche Weise. Während der Initialisierung ohne die Always-on-Komponente 16 erkannte das Betriebssystem, dass das SOC 10 zuvor mit im Speicher 12 gespeichertem Systemstatus heruntergefahren war und einige Initialisierungsvorgänge umgangen hatte. Die Latenz der Wiederherstellung war jedoch größer als erwünscht. Weitere Einzelheiten einer Ausführungsform werden im Folgenden detaillierter beschrieben.
  • Die Always-on-Komponente 16 kann konfiguriert sein, um mit der PMU 156 zusätzlich zur Kommunikation des PMGR 32 mit der PMU 156 zu kommunizieren. Die Schnittstelle zwischen der PMU 156 und der Always-on-Komponente 16 kann es der Always-on-Komponente 16 ermöglichen, das Hochfahren von Komponenten zu veranlassen (z. B. des Speicher-Controllers 22 oder der anderen Komponenten des SOC 10), wenn der PMGR 32 heruntergefahren ist. Die Schnittstelle kann es der Always-on-Komponente 16 auch ermöglichen, ihren eigenen Stromversorgungszustand ebenfalls zu kontrollieren.
  • 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 CPU des 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 ein System-on-Chip (SOC 10) implementiert sind, oder andere Ebenen der Integration umfassen. 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 beinhalten, um die Speicheroperationen durchzuführen. Die Speichersteuereinheiten 22 können dafür ausgelegt 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 beinhalten. Die Speichersteuereinheit 22 kann ferner Datenpuffer beinhalten, um Schreibdaten zu speichern, die auf das Schreiben in den Speicher warten, und Lesedaten, die auf die Ausgabe an die Quelle der Speicheroperation warten. In manchen Ausführungsformen kann die Speichersteuereinheit 22 einen Speicher-Cache beinhalten, 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, um die von der PMU 156 angeforderten Größen der Versorgungsspannung zu steuern. Es kann mehrere von der PMU 156 für das SOC 10 erzeugte Versorgungsspannungen geben. Beispielsweise sind in 1 ein VCPU und eine Vsoc dargestellt. Die VCPU kann die Versorgungsspannung für den CPU-Komplex 14 sein. Die Vsoc kann allgemein die Versorgungsspannung für den Rest des SOC 10 außerhalb des CPU-Komplexes 14 sein. Beispielsweise kann es zusätzlich zur Vsoc für die anderen Komponenten separate Versorgungsspannungen für den Strombereich des Speicher-Controllers und den Always-on-Strombereich geben. Bei einer anderen Ausführungsform kann Vsoc für den Speicher-Controller 22, die Always-on-Komponente 16 und die anderen Komponenten des SOC 10 dienen, und basierend auf den Strombereichen kann Strom-Gating eingesetzt werden. Bei einigen Ausführungsformen kann es mehrere Versorgungsspannungen für den Rest des SOC 10 geben. Bei einigen Ausführungsformen kann es auch eine Speicher-Versorgungsspannung für verschiedene Speicher-Arrays im CPU-Komplex 14 und/oder dem SOC 10 geben. Die Speicher-Versorgungsspannung kann mit der zur Logikschaltung zugeführten Spannung (z. B. VCPU oder Vsoc) verwendet werden, die eine niedrigere Spannungsgröße aufweisen kann als zur Sicherstellung eines stabilen Speicherbetriebs erforderlich. Der PMGR 32 kann unter direkter Softwaresteuerung stehen (z. B. Software kann direkt das Hochfahren und/oder Herunterfahren von Komponenten anfordern), und/oder er kann konfiguriert sein, um das SOC 10 zu überwachen, und bestimmen, wenn bestimmte Komponenten hochgefahren oder heruntergefahren werden sollen.
  • Die PMU 156 kann generell die Schaltung einschließen, um Versorgungsspannungen zu erzeugen, und um diese Versorgungsspannungen für andere Komponenten des Systems bereitzustellen, wie zum Beispiel das SOC 10, den Speicher 12 (VMEM in 1), verschiedene Peripheriekomponenten außerhalb des Chips (in 1 nicht dargestellt), wie z. B. Anzeigevorrichtungen, Bildsensoren, Benutzerschnittstellenvorrichtungen usw. Die PMU 156 kann damit programmierbare Spannungsregler einschließen, Logik zur Schnittstelle zum SOC 10 und insbesondere zum PMGR 32, um Spannungsanforderungen zu empfangen usw.
  • 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 variieren kann. Es kann mehr oder weniger von jeder Komponente/Teilkomponente geben als die in 1 gezeigte Anzahl.
  • In 2 wird nun ein Blockdiagramm einer Ausführungsform der Always-on-Komponente 16 gezeigt. Bei der dargestellten Ausführungsform kann die Always-on-Komponente 16 einen Prozessor 40, einen Speicher 42, ein Sensor-Erfassungsmodul (SCM) 44, eine SOC-Neukonfigurationsschaltung 46, einen lokalen PMGR 48 und eine Verbindung 50 einschließen. Der Prozessor 40, der Speicher 42, das SCM 44, die SOC-Neukonfigurationsschaltung 46 und der lokale PMGR 48 sind mit der Verbindung 50 gekoppelt. Das SCM 44 kann auch als Sensorerfassungseinheit oder Sensorerfassungsschaltung bezeichnet werden.
  • Das Sensorerfassungsmodul 44 kann mit den Sensoren 20 gekoppelt sein, wenn das SOC 10 in einem System eingeschlossen ist, und es kann konfiguriert sein, um Daten von den Sensoren 20 zu erfassen. Bei der dargestellten Ausführungsform kann das Sensorerfassungsmodul 44 konfiguriert sein, um die erfassten Sensordaten in den Speicher 42 (SCM Daten 52) zu schreiben. Der Speicher 42 kann beispielsweise ein SRAM sein. Bei anderen Ausführungsformen kann jedoch ein beliebiger Speichertyp verwendet werden.
  • Die SCM-Daten 52 können an Positionen gespeichert werden, die zuvor durch die Always-on-Komponente 16 zugewiesen wurden, um erfasste Sensordaten zu speichern. Bei der Belegung von Positionen nimmt die Menge verfügbaren Speichers zum Speichern erfasster Daten ab. Das Sensorerfassungsmodul 44 kann mit einem Wasserzeichen oder einer anderen Angabe der Füllung im Zuordnungsspeicherbereich (allgemein z. B. ein „Schwellenwert“) programmiert sein, und das Sensorerfassungsmodul 44 kann konfiguriert sein, um den Speicher-Controller 22 aufzuwecken, um die erfassten Sensordaten in den Speicher 12 zu schreiben. Alternativ dazu kann der Prozessor 40 konfiguriert sein, um die erfassten Sensordaten in den Speicher 12 zu schreiben. In diesem Fall kann das Sensorerfassungsmodul 44 konfiguriert sein, um den Prozessor 40 aufzuwecken.
  • Der Prozessor 40 kann konfiguriert sein, um im Speicher 42 gespeicherten Code (Prozessor-Code/Daten 54) auszuführen. Der Code kann eine Reihe von Anweisungen einschließen, die bei ihrer Ausführung den Prozessor 40 veranlassen, verschiedene Funktionen zu implementieren. Beispielsweise kann der Code Filtercode einschließen, der durch den Prozessor 40 ausgeführt werden kann, um die SCM-Daten 52, wie vorstehend erörtert, zu filtern. Der Prozessor 40 kann als Reaktion auf das Erkennen eines erwünschten Musters oder anderer Datenattribute in den SCM-Daten 52 konfiguriert sein, um den Speicher-Controller 22 aufzuwecken, um den Speicher 12 zu aktualisieren, und/oder um das SOC 10 aufzuwecken.
  • Prozessor-Codes/Daten 54 können beim Booten einer Vorrichtung einschließlich des SOC 10 initialisiert werden. Der Code kann in einem nichtflüchtigen Speicher des SOC 10 oder an anderer Stelle in der Vorrichtung gespeichert sein, und er kann beispielsweise in den Speicher 42 geladen werden. Ein lokaler, nichtflüchtiger Speicher wie Nur-LeseSpeicher (ROM) kann bei einigen Ausführungsformen ebenfalls verwendet werden.
  • Bei einer Ausführungsform kann der Prozessor 40 ein kleinerer, leistungseffizienterer Prozessor sein als die CPU-Prozessoren 30 im CPU-Komplex 14. Somit kann der Prozessor 40, wenn er aktiv ist, weniger Energie verbrauchen als die CPU-Prozessoren 30 verbrauchen. Bei einer Ausführungsform kann es auch weniger Prozessoren 40 geben, als CPU-Prozessoren 30 vorhanden sind.
  • Die SOC-Neukonfigurationsschaltung 46 kann konfiguriert sein, um die programmierbaren Konfigurationsdaten 56 für den Speicher-Controller 22 und die anderen Komponenten des SOC 10 zu speichern, um verschiedene Komponenten, die auf das Wiederhochfahren der Komponenten aus einem heruntergefahrenen Zustand reagieren, neu zu programmieren. Alternativ dazu können die programmierbaren Konfigurationsdaten 56 im Speicher 42 oder in einer Kombination des Speichers 42 und der SOC-Neukonfigurationsschaltung 46 gespeichert sein. Die Konfigurationsdaten 56 können durch die CPU-Prozessoren 30 in die Schaltung 46 geschrieben werden, z. B. als Teil der Programmierung der dazugehörigen Komponente. Das bedeutet, dass die CPU Prozessoren 30 (die beispielsweise als Teil des Bootens der Vorrichtung und/oder zu anderen Zeitpunkten, an denen die Konfiguration geändert wird, Betriebssystem-Software ausführen) die Daten in die SOC-Neukonfigurationsschaltung 46 schreiben können. Alternativ dazu kann die SOC-Neukonfigurationsschaltung 46 bei einigen Ausführungsformen Hardware aufweisen, die den Konfigurationsstatus überwacht und verfolgt. Bei einigen Ausführungsformen kann zumindest ein Teil der programmierbaren Konfigurationsdaten 56 vorbestimmt sein, und er kann in einem nichtflüchtigen Speicher, wie einem ROM, gespeichert werden, statt in den Speicher 42 und/oder die SOC-Neukonfigurationsschaltung 46 geschrieben zu werden.
  • Bei einer Ausführungsform kann die SOC-Neukonfigurationsschaltung 46 Logikschaltung einschließen, die konfiguriert ist, um die programmierbaren Konfigurationsdaten 56 zu verarbeiten und die Daten in die entsprechenden Komponenten des SOC 10 zu schreiben, nachdem das SOC 10 wieder hochgefahren wurde. Die programmierbaren Konfigurationsdaten 56 können eine Reihe von Registeradressen einschließen, in die geschrieben werden soll, sowie die Daten, die in diese Register geschrieben werden sollen. Bei einigen Ausführungsformen können die programmierbaren Konfigurationsdaten 56 weiter Lesebefehle zum Auslesen von Registern einschließen, z. B. die Suche nach einem erwarteten Wert, der angibt, dass die durch die verschiedenen Schreibvorgänge ausgeführte Initialisierung abgeschlossen ist, und/oder dass der entsprechende Zustand in der Komponente vorliegt. Der erwartete Wert kann der gesamte ausgewiesene Wert sein, oder es kann ein Teil des Werts sein (z. B. kann der erwartete Wert einen Wert sowie eine Maske einschließen, die vor einem Vergleich auf den ausgelesenen Wert angewandt werden soll). Bei einigen Ausführungsformen können die programmierbaren Konfigurationsdaten 56 weiter Read-Modify-Write-Befehle einschließen, um Register auszulesen, einen Teil der ausgelesenen Daten zu ändern und die abgeänderten Daten in das Register zurückzuschreiben. Beispielsweise kann eine zweite Maske eingesetzt werden, um zu bestimmen, welcher Teil des Registerwerts aktualisiert werden soll. Der durch die zweite Maske maskierte Teil des Registers kann nicht aktualisiert werden, wenn der Wert in das Register geschrieben wird.
  • Bei einer anderen Ausführungsform kann die SOC-Neukonfigurationsschaltung 46 einen weiteren Prozessor und dazugehörigen Speicher einschließen, der Code für den Prozessor speichert (oder der Code kann ebenfalls im Speicher 42 gespeichert sein). Der Code kann bei seiner Ausführung durch den Prozessor den Prozessor veranlassen, die verschiedenen Komponenten im SOC 10 mit den programmierbaren Konfigurationsdaten 56 zu konfigurieren. Der Code kann die vorstehend beschriebenen Suchmerkmale als Teil der Struktur des Codes selbst implementieren, oder die programmierbaren Konfigurationsdaten 56 können die Adresse für die Suche und den erwarteten Wert, ähnlich der Erörterung weiter oben, speichern. Bei einer anderen Ausführungsform kann der Prozessor 40 Software zum Neuprogrammieren der Komponenten des SOC 10 ausführen.
  • Die programmierbaren Konfigurationsdaten 56 können Daten für den Speicher-Controller 22 einschließen sowie separate Daten für andere Komponenten des SOC 10 und separate Daten zur Neukonfiguration des Prozessors 40, wenn dieser hochgefahren wird. Beim Hochfahren des Speicher-Controllers 22 können, während der Rest des SOC 10 heruntergefahren ist, die Daten für den Speicher-Controller 22 verarbeitet werden. Die Daten können programmierbare Konfigurationsdaten für den Speicher-Controller 22 einschließen. Bei einer Ausführungsform können die Daten weiter zusätzliche programmierbare Konfigurationsdaten einschließen. Beispielsweise können programmierbare Konfigurationsdaten für die Kommunikationsstruktur 27 eingeschlossen sein. Programmierbare Konfigurationsdaten können für beliebige Komponenten eingeschlossen sein, die zur Kommunikation zwischen der Always-on-Komponente 16 und dem Speicher-Controller 22 verwendet werden. Beim Hochfahren des Rests des SOC 10 können die Daten für die anderen Komponenten verarbeitet werden. Beim Hochfahren des Prozessors 40 können auf ähnliche Weise die programmierbaren Konfigurationsdaten für den Prozessor 40 verarbeitet werden.
  • Bei einigen Ausführungsformen kann die SOC-Neukonfigurationsschaltung 46 konfiguriert sein, um programmierbare Konfigurationsdaten für die Komponenten des SOC 10 an mehr als einer Stelle beim Hochfahren des SOC 10 bereitzustellen. Beispielsweise können einige programmierbare Neukonfigurationsdaten in der Nähe des Beginns des Übergangs zum eingeschalteten Zustand bereitgestellt werden (z. B. kurz nachdem die Stromversorgungsspannung stabil ist), und andere programmierbare Neukonfigurationsdaten können in der Nähe des Endes des Übergangs zum eingeschalteten Zustand bereitgestellt werden. Weiter können die programmierbaren Konfigurationsdaten 56 bei einigen Ausführungsformen auch nur ein in den Komponenten des SOC 10 zu bestimmender Teil der programmierbaren Konfiguration sein. Der Rest der programmierbaren Konfiguration kann im Speicher 12 gespeichert sein. Beispielsweise kann auf den CPU-Prozessoren 30 ausgeführte Betriebssystem-Software die programmierbare Konfiguration im Speicher 12 vor dem Herunterfahren erfassen. Die Wiederherstellung von programmierbaren Konfigurationsdaten, die im Speicher 12 gespeichert sind, kann durch die SOC-Neukonfigurationsschaltung 46, andere Hardware und/oder die Betriebssystem-Software ausgeführt werden, nachdem die CPU-Prozessoren 30 vom Rücksetzen freigegeben worden sind und die Ausführung erneut beginnen.
  • Der lokale PMGR 48 kann konfiguriert sein, um Energiemanagement-Funktionen in der Always-on-Komponente 16 auf eine ähnliche Weise wie der PMGR 32 in 1 für das SOC 10 insgesamt zu behandeln. Die Always-on-Komponente 16 kann mehrere Energiezustände unterstützen, und der lokale PMGR 48 kann Übergänge zwischen diesen Zuständen unterstützen. Der lokale PMGR 48 kann konfiguriert sein, um mit der PMU 156 zur Unterstützung von Zustandsänderungen zu kommunizieren, sowie um das Bereitstellen von Versorgungsspannungen zu verschiedenen Komponenten des SOC 10 als Teil des Aufweckens oder Inaktivierens von verschiedenen Komponenten zu verwalten.
  • Die Verwendung 50 kann beliebige Verbindungen umfassen, um Kommunikationen zwischen den verschiedenen, in 2 gezeigten Unterkomponenten zu übertragen, sowie um über die Kommunikationsstruktur 27 mit anderen Komponenten des SOC 10 zu kommunizieren. Die Verbindung kann bei verschiedenen Ausführungsformen beliebige gewünschte der vorstehend mit Bezug auf 1 erörterten Beispiele der Kommunikationsstruktur 27 einschließen.
  • In 3 ist nun ein Blockdiagramm einer Ausführungsform einer Zustandsmaschine gezeigt, die bei einer Ausführungsform der Always-on-Komponente 16 implementiert sein kann. Bei der dargestellten Ausführungsform schließen die Zustände einen Wartezustand 60 ein sowie einen Erfassungszustand 62, einen Prozesszustand 64, einen Speicherzugriffszustand 66 und einen SOC-On-Zustand 68. Übergänge zwischen den Zuständen sind mit durchgehenden Linien dargestellt, und bestimmte mögliche zusätzliche Übergänge sind mit gepunkteten Linien angegeben. Nicht alle möglichen Übergänge sind in 3 dargestellt, um eine Unübersichtlichkeit der Zeichnung zu vermeiden.
  • Die in 3 dargestellten Zustände können in der Reihenfolge des relativen Strom-/Energieverbrauchs sein, wobei der Wartezustand 60 der Zustand mit geringster Energie ist und der SOC-On-Zustand 68 der Zustand mit höchster Energie ist. Im Wartezustand 60 können die Unterkomponenten der Always-on-Komponente 16 entweder mit geteilter Energie oder mit geteiltem Takt arbeiten. Beispielsweise kann der Prozessor 40 bei einer Ausführungsform mit geteilter Energie arbeiten, und das SCM 44 kann mit geteiltem Takt arbeiten. Der Speicher 42 kann im Erhaltungsmodus sein, oder er kann normal mit Strom versorgt werden. Die SOC-Neukonfigurationsschaltung 46 und der lokale PMGR 48 können mit geteiltem Takt arbeiten. Bei den Unterkomponenten können beliebige Kombinationen aus Clock-Gating und Power-Gating verwendet werden.
  • Im Wartezustand 60 kann die Always-on-Komponente 16 im Wesentlichen im Leerlauf sein. Die Zustandsmaschine kann aus dem Wartezustand 60 in den Erfassungszustand 62 übergehen, wenn die Sensordaten zur Erfassung durch das SCM 44 von den Sensoren 20 bereit sind. Bei einer Ausführungsform kann ein Timer (z. B. eine Laufzeitüberwachung) in der Always-on-Komponente 16 (in 2 nicht ausdrücklich dargestellt) den Übergang vom Wartezustand 60 in den Erfassungszustand 62 periodisch bewirken. In diesem Fall können Sensordaten oder keine Sensordaten zu erfassen sein. Bei einer Ausführungsform können die Sensoren ein Signal zur Always-on-Komponente 16 setzen, um anzugeben, dass Sensordaten zur Erfassung verfügbar sind. In jedem Fall kann der Übergang zum Erfassungszustand 62 durchgeführt werden.
  • Bei der dargestellten Ausführungsform kann die Zustandsmaschine auch direkt aus dem Wartezustand 60 in den Prozesszustand 64 übergehen. Dieser Übergang kann unterstützt werden, falls ein Sensor konfiguriert ist, um der Always-on-Komponente 16 zu signalisieren, dass Prozessorunterstützung (vom Prozessor 40) gewünscht wird. Bei Ausführungsformen, die das Signal implementieren, kann das Signal separat vom Signal zur Angabe sein, dass Sensordaten verfügbar sind. Der Übergang kann beispielsweise eine schnelle Bearbeitung der Sensordaten (z. B. Filtern) unterstützen, oder er kann verwendet werden, falls ein schnelles Aufwecken des SOC 10 gewünscht ist (kann mittels Ausführung von Software auf dem Prozessor 40 verwaltet werden). Beispielsweise kann eine Schaltfläche oder eine andere Benutzerschnittstellenvorrichtung, die den Wunsch eines Benutzers angibt, mit der Vorrichtung zu interagieren, ein Ereignis sein, dass ein schnelles Aufwecken des SOC 10 veranlassen würde. Falls der Prozessor 40 im Wartezustand 60 mit geteilter Energie arbeitet, kann der Übergang aus dem Wartezustand 60 in den Prozesszustand 64 das Hochfahren des Prozessors 40 sowie das Rücksetzen und Initialisieren des Prozessors 40 einschließen. Bei weiteren Ausführungsformen kann der Übergang aus dem Wartezustand 60 durch den Erfassungszustand 62 verlaufen, aber nicht im Erfassungszustand 62 verbleiben. Diese Implementierung kann die Komplexität bei einer geringfügig längeren Aufweckzeit für den Prozessor 40 reduzieren.
  • Im Erfassungszustand 62 kann das SCM 44 aktiv sein, und es kann Daten von einem oder mehreren der Sensoren 20 abrufen. Das SCM 44 kann die erfassten Sensordaten in den Speicher 42 schreiben (SCM-Daten 52). Das SCM 44 kann auch zusätzliche Daten in den Speicher 42 (SCM-Daten 52) schreiben, wie z. B. einen den erfassten Sensordaten zugeordneten Zeitstempel, eine Sensorkennung usw. Alle gewünschten zusätzlichen Daten können im Speicher 42 gespeichert werden. Bei einer Ausführungsform kann der Zeitstempel die Zeit sein, zu der die Sensordaten vom Sensor 20 abgetastet worden, und somit vor dem Zeitpunkt liegen, an dem die Daten vom SCM 44 erfasst wurden. Alternativ dazu kann der Zeitstempel der Zeitpunkt sein, zu dem die Sensordaten vom SCM 44 erfasst werden.
  • Das SCM 44 kann einen oder mehrere Schwellenwerte erkennen, bei denen das SCM 44 konfiguriert sein kann, um den Prozessor 40 zum Verarbeiten der Daten aufzuwecken. Die Schwellenwerte können zum Beispiel einen relativen Füllstand der SCM-Daten 52 im Speicher 42, eine Anzahl von erfassten Sensorproben, eine verstrichene Zeit seit der ersten Probe, einen Aufweck-Timer, der nicht durch Proben ausgelöst wird; eine Fehlerdetektion usw. einschließen. Beliebige Sätze aus einem oder mehreren Schwellenwerten können verwendet werden, und unterschiedliche Schwellenwerte können für unterschiedliche Sensoren eingesetzt werden. Wenn der Schwellenwert erreicht ist, kann die Zustandsmaschine aus dem Erfassungszustand 62 in den Prozesszustand 64 übergehen. Alternativ dazu kann die Zustandsmaschine, falls die Erfassung der Sensordaten abgeschlossen ist, aus dem Erfassungszustand 62 in den Wartezustand 60 übergehen.
  • Im Prozesszustand 64 kann der Prozessor 40 aktiv sein und Code aus dem Speicher 42 (oder aus dem Cache des Prozessors 40, sofern vorhanden) ausführen. Der Code kann beispielsweise Filtercode einschließen. Während des Prozesszustands 64 kann das SCM 44 periodisch aktiv sein, um zusätzliche Sensordaten zu erfassen, oder es kann kontinuierlich im Prozesszustand 64 aktiv sein. Der auf dem Prozessor 40 ausgeführte Code kann bestimmen, dass er zumindest vorübergehend abgeschlossen ist, und er kann einen Übergang zurück zum Erfassungszustand 62 bewirken. Alternativ dazu kann der Übergang direkt zum Wartezustand 60 erfolgen (z. B. falls das SCM 44 inaktiv ist).
  • Der Code kann auch bestimmen, dass im Prozesszustand 64 Kommunikation mit dem Speicher 12 erwünscht ist. Beispielsweise kann Kommunikation mit dem Speicher 12 verwendet werden, um erfasste Sensordaten aus dem Speicher 42 in den Speicher 12 zu schreiben, um den größeren verfügbaren Speicherplatz im Speicher 12 zu nutzen. Bei einigen Ausführungsformen kann der Speicher 12 auch zusätzlichen, durch den Prozessor 40 ausführbaren Code speichern (z. B. zusätzliche Filteralgorithmen), der möglicherweise nicht kontinuierlich im Speicher 42 gespeichert wird. Der zusätzliche Code kann vom Prozessor 40 ausgeführt werden, nachdem die Kommunikation mit dem Speicher 12 aufgebaut ist. Beispielsweise kann der zusätzliche Code aus dem Speicher 12 in den Speicher 42 übernommen werden, und/oder er kann durch den Prozessor 40 im Cache gespeichert werden. Die Daten können aus dem Speicher 42 als Reaktion darauf, dass der Prozessor 40 ein erwünschtes Muster oder einen anderen Aspekt in den erfassten Sensordaten erkennt, in den Speicher 12 geschrieben werden, und eine zusätzliche Verarbeitung durch die CPU-Prozessoren 30 im CPU-Komplex 14 kann übernommen werden. Die Daten können in den Speicher 12 geschrieben werden, sodass die CPU-Prozessoren 30 darauf zugreifen können. Falls eine Kommunikation mit dem Speicher 12 erwünscht ist, kann die Zustandsmaschine in den Speicherzugriffszustand 66 übergehen. Der Übergang kann einen Vorgang durch die SOC-Neukonfigurationsschaltung 46 einschließen, um den Zustand des Speicher-Controllers 22 sowie einen Kommunikationspfad von der Always-on-Komponente 16 zum Speicher-Controller 22 zu programmieren. Bei einigen Ausführungsformen kann die gesamte Kommunikationsstruktur 27 aktiviert sein. Bei weiteren Ausführungsformen kann nur der Teil der Kommunikationsstruktur 27, der in die Kommunikation zwischen dem Speicher-Controller 22 und der Always-on-Komponente 16 eingezogen ist, aktiviert sein. Der Speicher 12 kann auch aus der Auto-Aktualisierung genommen werden. Bei einer Ausführungsform kann der lokale PMGR 48 ebenfalls in den Übergang einbezogen sein und das Hochfahren des Speicher-Controllers 22 anfordern, falls die Versorgungsspannung des Speicher-Controllers durch die PMU 156 verwaltet wird.
  • Im Speicherzugriffszustand 66 kann der Speicher-Controller 22 aktiv sein, und die Always-on-Komponente 16 kann Zugriff auf den Speicher 12 haben. Die Always-on-Komponente 16 (und bei einer Ausführungsform insbesondere der Prozessor 40) kann konfiguriert sein, um Lese-und-Schreib-Vorgänge im Speicher 12 zu erzeugen, die über die Verbindung 50 und die Kommunikationsstruktur 27 zum Speicher-Controller 22 durchgeführt werden können. Daten können (für Lesevorgänge) durch den Speicher-Controller 22 zurückgeleitet oder (für Schreibvorgänge) durch den Speicher-Controller 22 auf entsprechende Weise empfangen werden.
  • Der Prozessor 40 kann bestimmen, dass der Bedarf zum Zugriff auf den Speicher 12 beendet ist, und er kann einen Übergang zurück zum Prozesszustand 64 bewirken. Der Übergang kann die Rückkehr des Speichers 12 zum Auto-Aktualisierungsmodus und das Herunterfahren des Speicher-Controllers 22 und der Kommunikationsstruktur 27 einschließen.
  • Der Prozessor 40 kann auch bestimmen, dass das SOC 10 aufgeweckt wird (z. B. zur Übergabe der Verarbeitung an den CPU-Komplex 14). Die Zustandsmaschine kann aus dem Speicherzugriffszustand 66 in den SOC-On-Zustand 68 übergehen. Der Übergang kann einschließen, dass der lokale PMGR 48 das Herunterfahren für das SOC 10 von der PMU 156 anfordert, und er kann einschließen, dass die SOC-Neukonfigurationsschaltung 46 verschiedene Komponenten aus den Konfigurationsdaten 56 programmiert. Bei einer Ausführungsform kann ein Übergang direkt aus dem Prozesszustand 64 in den SOC-On-Zustand 68 unterstützt werden. Bei einem derartigen Übergang können auch das Hochfahren des Speicher-Controllers 22 und die Herausnahme des Speichers 12 aus der Auto-Aktualisierung durchgeführt werden. Alternativ dazu kann der Prozessor 40 einen erwünschten Übergang in den SOC-On-Zustand 68 detektieren, aber den Speicherzugriffszustand 66 durchlaufen, um den Übergang auszuführen.
  • Aus dem SOC-On-Zustand 68 können das SOC 10 (z. B. der PMGR 32 und/oder die auf den CPU-Prozessoren 30 ausgeführte Software) bestimmen, dass das SOC 10 in einen Zustand mit niedriger Energie übergehen soll. Bei einer Ausführungsform kann die Software einen Vorgang „in RAM suspendieren“ ausführen, in dem verschiedene Systemzustände, einschließlich des auch durch die Konfigurationsdaten 56 wiedergegebenen Zustands, in den Speicher 12 geschrieben werden, bevor der Speicher 12 auf Auto-Aktualisierung gesetzt wird und die Komponenten des SOC 10 heruntergefahren werden. Somit kann bei der Rückkehr zum SOC-On-Zustand 68 die Neuprogrammierung des Zustands aus den Konfigurationsdaten 56 ausgeführt werden, und anschließend kann die Software die Ausführung basierend auf den im Speicher 12 gespeicherten Daten wiederaufnehmen. Der Übergang kann relativ schnell erfolgen, z. B. in Bezug auf die Situation, wobei die Always-on-Komponente 16 nicht eingeschlossen ist. In einem derartigen Fall kann die Software den normalen Kalt-Boot-Prozess beginnen. An einer bestimmten Stelle im Prozess kann die Software erkennen, dass die Suspension zum RAM erfolgt ist, dass aber am betreffenden Punkt im Prozess eine unnötige Initialisierungsverarbeitung bereits ausgeführt worden ist.
  • Generell können in Zuständen mit niedriger Energie ausgeführte Vorgänge auch ausgeführt werden, während die Zustandsmaschine in einem der Zustände mit höherer Energie ist. Beispielsweise kann die Erfassung von Sensordaten auch ausgeführt werden, während die Zustandsmaschine im Prozesszustand 64 und dem Speicherzugriffszustand 66 und im SOC-On-Zustand 68 ist (z. B. falls einer der Trigger auftritt, die das Erfassen von Daten durch das SCM 44 bewirken, während die Zustandsmaschine in einem der anderen Zustände ist). Auf ähnliche Weise kann der Prozessor 40 im Prozesszustand 64, im Speicherzugriffszustand 66 und im SOC-On-Zustand 68 aktiv sein, und er kann somit Daten in allen dieser Zustände verarbeiten.
  • Falls das SOC 10 herunterfährt, kann die Zustandsmaschine aus dem SOC-On-Zustand 68 zum Speicherzugriffszustand 66 zurückkehren (und sie kann basierend auf anderen Aktivitäten in der Always-on-Komponente 16 zu niedrigeren Zuständen übergehen). Alternativ dazu kann ein Übergang vom SOC-On-Zustand 68 direkt zu einem der Zustände 60, 62, 64 oder 66 basierend auf der aktuellen Aktivität in der Always-on-Komponente 16 zum Zeitpunkt, zu dem der Übergang erfolgt, durchgeführt werden.
  • In 4 wird nun ein Blockdiagramm einer weiteren Zustandsmaschine gezeigt. Die Zustandsmaschine in 4 kann gemeinsam mit der Zustandsmaschine aus 3 implementiert werden. Bei der dargestellten Ausführungsform schließt die Zustandsmaschine einen Off-Zustand 70, einen SOC-On-Zustand 72, einen AO+-Speicherzustand 74, einen AO-Zustand 76 und einen No-AO-Zustand 78 ein. AO kann in diesem Kontext ein Kürzel für Always-on sein.
  • Der Off-Zustand 70 kann der Zustand sein, in dem die gesamte Energie zum SOC 10 abgeschaltet ist, wie z. B. wenn die Vorrichtung, einschließlich des SOC 10, vollständig ausgeschaltet ist. Dementsprechend kann die Zustandsmaschine als Reaktion darauf, dass die Stromversorgung zum SOC 10 eingeschaltet wird, aus dem Off-Zustand 70 (z. B. in den SOC-On-Zustand 72) übergehen. Ein Rücksetzen des SOC 10 kann durchgeführt werden, und anschließend kann das SOC 10 mit dem Booten fortfahren. Die Zustandsmaschine kann als Reaktion auf das vollständige Herunterfahren des SOC 10 aus dem SOC-On-Zustand 72 in den Off-Zustand 70 übergehen. Die Energieabschaltung kann erfolgen, nachdem die auf den CPUs 30 ausgeführte Software einen erwünschten Zustand aus dem Speicher 12 in nichtflüchtigen Speicher gespeichert hat, verschiedene Verbindungen geschlossen hat, die die Vorrichtung eventuell hat (z. B. drahtlose und/oder kabelgebundene Netzwerkverbindungen, drahtlose Telefonieverbindungen usw.), und nachdem die Vorrichtung auf sonstige Weise für ein geordnetes Herunterfahren vorbereitet worden ist. Während der Übergang in 4 aus dem SOC-On-Zustand 72 in den Off-Zustand 70 erfolgt, können bei anderen Ausführungsformen Übergänge aus den anderen Zuständen in den Off-Zustand 70 unterstützt werden.
  • Im SOC-On-Zustand 72 kann das SOC 10 in vollem Betrieb sein. Verschiedene Komponenten des SOC 10 können wie gewünscht eingeschaltet oder ausgeschaltet sein, doch das SOC 10 insgesamt kann generell als im SOC-On-Zustand 72 aktiv betrachtet werden. Der SOC-On-Zustand 72 kann dem SOC-On-Zustand 68 bei der Ausführungsform in 3 entsprechen.
  • Im SOC-On-Zustand 72 kann die im CPU-Komplex 14 ausgeführte Software bestimmen, dass das SOC 10 in einen niedrigen Energiezustand (z. B. Schlafzustand) gehen soll. Bei einer Ausführungsform kann die Software einen Vorgang „in RAM suspendieren“ ausführen, in dem verschiedene SOC-Zustände vor dem Herunterfahren des SOC 10 in den Speicher 12 geschrieben werden. Der Speicher 12 kann in einen „Auto-Aktualisierungsmodus“ gesetzt werden, in dem er den Speicherinhalt erhält, aber nicht an der Speicherschnittstelle des Speicher-Controllers 22 aktiv ist. Der PMGR 32 kann Abschaltbefehle zur PMU 156 kommunizieren, um das Herunterfahren der anderen Komponenten im SOC 10 als dem Speicher-Controller 22, der Struktur 27 (oder des Teils davon, der zum Kommunizieren mit dem Speicher-Controller 22 verwendet wird) und der Always-on-Komponente 16 zu veranlassen. Alternativ dazu kann der lokale PMGR 48 die Abschaltbefehle übertragen. Die Zustandsmaschine kann in den AO+-Speicherzustand 74 übergehen. Bei einigen Ausführungsformen kann auch ein Übergang vom SOC-On-Zustand 72 in den AO-Zustand 76 unterstützt werden. Alternativ dazu kann der Übergang vom SOC-On-Zustand 72 in den AO-Zustand 76 den AO+-Speicherzustand 74 durchlaufen. Das bedeutet, dass, falls der Zielzustand der AO-Zustand 76 ist, der Übergang in den AO+-Speicherzustand 74 erfolgen kann, gefolgt vom Übergang in den AO-Zustand 76.
  • Im AO+-Speicherzustand 74 können der Speicher-Controller 22, die Kommunikationsstruktur 27 (oder der Teil zur Always-on-Komponente 16) und die Always-on-Komponente 16 aktiv sein. Der AO+-Speicherzustand 74 kann dem Speicherzugriffszustand 66 in 3 entsprechen. Falls ein Ereignis erkannt wird, dass das Aufwachen des SOC bewirkt, kann die Zustandsmaschine in den SOC-On-Zustand 72 übergehen (und die anderen Komponenten des SOC 10 über die Kommunikation mit der PMU 156 und/oder Stromschaltvorgänge im SOC 10 hochfahren und die Komponenten über die SOC-Neukonfigurationsschaltung 46 und/oder bei verschiedenen Ausführungsformen aus Daten im Speicher 12 neu konfigurieren).
  • Andererseits kann die Always-on-Komponente 16 bestimmen, dass der Speicherzugriff abgeschlossen ist, und sie kann den Speicher-Controller 22 deaktivieren (nachdem der Speicher 12 in einen Erhaltungsmodus wie z. B. Auto-Aktualisierung gesetzt worden ist). Der Speicher-Controller 22 kann heruntergefahren werden, und die Always-on-Komponente 16 kann eingeschaltet bleiben. Die Zustandsmaschine kann in den AO-Zustand 76 übergehen. Der AO-Zustand 76 kann einem der Zustände Prozesszustand 64, Erfassungszustand 62 und Wartezustand 60 in 3 entsprechen. Falls die Always-on-Komponente 16 bestimmt, dass Speicherzugriff wieder erwünscht ist (z. B. aufgrund des Erreichens verschiedener Schwellenwerte in den SCM-Daten 52 oder des Erkennens von Mustern/Attributen über den Prozessor 40), kann die Zustandsmaschine in den AO+-Speicherzustand 76 übergehen (und den Speicher-Controller 22 und die Kommunikationsstruktur 27 herunterschalten und diese über die SOC-Neukonfigurationsschaltung 46 neu konfigurieren). Bei einigen Ausführungsformen kann ein direkter Übergang aus dem AO-Zustand 76 in den SOC-On-Zustand 72 unterstützt werden, einschließlich des Hochfahrens des Speicher-Controllers 22, der Kommunikationsstruktur 27 und anderer Komponenten des SOC 10 und der Neukonfiguration dieser Komponenten über die SOC-Neukonfigurationsschaltung 46.
  • Bei einer Ausführungsform kann der No-AO-Zustand 78 unterstützt werden. Der No-AO-Zustand 78 kann ein Zustand sein, in dem die Always-on-Komponente 16 heruntergefahren ist, wobei aber der Speicher 12 im Erhaltungsmodus eingeschaltet bleibt. Der No-AO-Zustand 78 kann ähnlich dem „klassischen“ Suspendieren in RAM-Zustand sein. Die Rückkehr aus dem No-AO-Zustand 78 in den SOC-On-Zustand 72 kann die durch Software veranlasste Neukonfiguration der Komponenten des SOC 10 beinhalten, einschließlich der Always-on-Komponente 16. Die Software kann auf den CPU-Prozessoren 30 ausgeführt werden. Somit kann der Übergang aus dem No-AO-Zustand 78 in den SOC-On-Zustand 72 grundlegende Boot-Vorgänge einschließen, bis die Software das SOC 10 initialisiert hat und erkannt hat, dass der Speicher 12 den Zustand bereits speichert.
  • In 5 ist nun ein Ablaufdiagramm gezeigt, das den Betrieb einer Ausführungsform von Softwarecode darstellt, der auf dem SOC 10 ausgeführt werden kann (z. B. durch die CPU-Prozessoren 30). Der Code kann beim Booten einer Vorrichtung, die das SOC 10 einschließt, ausgeführt werden. Auf ähnliche Weise kann der Code während einer Änderung der programmierbaren Konfiguration einer Komponente ausgeführt werden. Der während einer Konfigurationsänderung ausgeführte Code kann bei verschiedenen Ausführungsformen der gleiche Code sein, der während des Bootens ausgeführt wird, oder nicht. Bei anderen Ausführungsformen können Teile des in 5 gezeigten Betriebs in Hardware implementiert sein. Der Code kann Anweisungen einschließen, die bei der Ausführung auf einem Prozessor den in 5 dargestellten Betrieb implementieren. Bei einer Ausführungsform kann der Code, der den in 5 gezeigten Betrieb implementiert, Teil des Treibercodes für eine dazugehörige Komponente sein, und somit kann der in 5 dargestellte Betrieb in mehreren Codesequenzen implementiert werden.
  • Der Code kann die Konfigurationsparameter bestimmen, die in die Komponente programmiert werden sollen (Block 80). Die Parameter können auf der Erkennung der Komponente und ihrer Möglichkeiten basieren. Während Komponenten im SOC 10 fest sein können, weil sie in Hardware implementiert sind, kann der Code allgemeine Zwecke verfolgen, um auf mehreren Versionen des SOC 10 lauffähig zu sein. Des Weiteren kann das SOC 10 in mehreren, unterschiedlich konzipierten Vorrichtungen eingeschlossen sein. Die gewünschten Parameter können durch die bestimmte Vorrichtung beeinflusst werden, in denen das SOC 10 konkretisiert wird.
  • Der Code kann die Konfigurationsparameter in die Komponente schreiben (Block 82) und die Komponente programmieren. Falls die Konfigurationsparameter Daten einschließen, die beim Wiedereinschalten des SOC 10 nach einem Schlafzustand oder einem anderen heruntergefahrenen Zustand wiederhergestellt werden sollen (Entscheidungsblock 84, „Ja“-Zweig), kann der Code die Konfigurationsparameter in die programmierbaren Konfigurationsdaten 56 schreiben und somit den Zustand in der SOC-Neukonfigurationsschaltung 46 nachverfolgen (Block 86). Bei anderen Ausführungsformen kann die SOC-Neukonfigurationsschaltung 46 konfiguriert sein, um den gewünschten Zustand automatisch nachzuverfolgen.
  • Es wird angemerkt, dass bei einigen Ausführungsformen nicht alle Konfigurationsparameter Teil des Neukonfigurationsstatus sein müssen, der in der Komponente bei einem anschließenden Hochfahren des SOC 10 wiederhergestellt wird. Beispielsweise können Parameter, die verschiedene wahlfreie Merkmale setzen, die für die grundlegende Kommunikation mit der Komponente nicht erforderlich sind, bei der Neukonfiguration auf Standardwerte gesetzt werden. Derartige wahlfreie Parameter können aus dem Zustand „in RAM suspendieren“ im Speicher 12 ausgelesen werden, nachdem die Ausführung auf den CPUs 30 zum Wiederherstellen der Komponente erneut gestartet worden ist. Dementsprechend brauchen derartige Parameter nicht Teil des durch die SOC-Neukonfigurationsschaltung 46 gespeicherten Zustands zu sein. Des Weiteren können bei einigen Ausführungsformen, wie weiter oben erwähnt, die in die SOC-Neukonfigurationsschaltung 46 geschriebenen Parameter von denen abweichen, die zum Zeitpunkt des Herunterfahrens des SOC 10 in die Komponente programmiert wurden. In solch einem Fall können die in die SOC-Neukonfigurationsschaltung 46 geschriebenen Parameter diejenigen sein, die als Reaktion auf ein Aufwecken des SOC 10 neu in die Komponente programmiert werden sollen.
  • In 6 ist nun ein Ablaufdiagramm mit der Darstellung des Betriebs einer Ausführungsform der Always-on-Komponente 16 gezeigt als Reaktion auf eine Bestimmung in der Always-on-Komponente 16, dass eine oder mehrere Komponenten des SOC 10 erneut hochgefahren werden sollen. Beispielsweise kann der Betrieb aus 6 Teil des Übergangs in den Speicherzugriffszustand 66/AO+-Speicherzustand 74 sein, um den Speicher-Controller 22 und die Kommunikationsstruktur 27 wiederherzustellen. Der Betrieb aus 6 kann Teil des Übergangs in den SOC-On-Zustand 68/SOC-On-Zustand 72 sein, um Komponenten im gesamten SOC 10 wiederherzustellen. Die Always-on-Komponente 16 kann konfiguriert sein, um den in 6 gezeigten Betrieb zu implementieren.
  • Die Always-on-Komponente 16 kann konfiguriert sein, um eine Wiederherstellung der Stromversorgung der Komponenten, die hochgefahren werden, wiederherzustellen (Block 90). Beispielsweise kann der lokale PMGR 48 konfiguriert sein, um anzufordern, dass die PMU 156 die Versorgungsspannung zu einer oder mehreren Versorgungsspannungsschienen des SOC 10 wiederherstellt. Alternativ dazu kann der lokale PMGR 48 oder sonstige Schaltung in der Always-on-Komponente 16 konfiguriert sein, um die Stromschalter im SOC 10 zu steuern, um die Stromversorgung zu Komponenten mit Stromteilung wiederherzustellen. Eine Kombination aus PMU-Anforderungen und Stromschalt-Steuerelementen kann ebenfalls verwendet werden.
  • Nachdem der Strom stabilisiert und ein Rücksetzen von Komponenten abgeschlossen worden ist, kann die SOC-Neukonfigurationsschaltung 46 konfiguriert sein, um die Komponenten in den programmierbaren Konfigurationsdaten 56 zu programmieren, die der Komponente entsprechen (Block 92). Die SOC-Neukonfigurationsschaltung 46 kann konfiguriert sein, um die programmierbaren Konfigurationsdaten 56 auszulesen und die Daten zur Komponente zu übertragen, bis die Neukonfiguration abgeschlossen ist (Entscheidungsblock 94). Nachdem diese Neukonfiguration abgeschlossen ist (Entscheidungsblock 94, „Ja“-Zweig), kann der Übergang in den neuen Zustand abgeschlossen werden (z. B. in den Speicherzugriffszustand 66 oder SOC-On-Zustand 68) (Block 96).
  • Die Übertragung kann in beliebiger Form erfolgen (z. B. programmierte Input/Output-Schreibvorgänge (PIO-Schreibvorgänge), dedizierte Kommunikationspfade, Memory-Mapped-I/O-Schreibvorgänge usw.). Zusätzlich zu den Schreibvorgängen von Konfigurationsparametern können einige Ausführungsformen sonstige Informationen in den programmierbaren Neukonfigurationsdaten 56 unterstützen, um den Zustand aus einer Komponente zu bestimmen, wobei dies einen Teil der Bestimmung bilden kann, ob die Neukonfiguration abgeschlossen ist oder nicht (Entscheidungsblock 94). Beispielsweise kann eine Reihe von Konfigurationsparameter-Schreibvorgängen zu einer Komponente übertragen werden, gefolgt von einem Abfrage-Lesevorgang zu einem Register, das die Komponente aktualisiert, um beispielsweise den Abschluss oder die Betriebsbereitschaft anzugeben.
  • 7 ist ein Blockdiagramm mit der Darstellung der Komponenten des SOC 10 und welcher Komponenten bei einer Ausführungsform des SOC 10 für den Speicherzugriffszustand 66/AO+-Speicherzustand 74 ein- oder ausgeschaltet sind. Die schraffierten Komponenten in 7 sind abgeschaltet, während die nicht schraffierten Komponenten eingeschaltet sind. In 7 ebenfalls dargestellt sind verschiedene Auflagen 98A-98D. Die Auflagen können Eingabe/Ausgabe-Treiber/Empfänger-Schaltung einschließen, die konfiguriert ist, um Signale an Pins des SOC 10 anzusteuern und Signale von diesen Pins zu empfangen. Dementsprechend können die Auflagen 98A-98D auch Versorgungsspannungen empfangen. Bei dieser Ausführungsform können die Auflagen 98C für den Speicher-Controller 22 zur Kommunikation mit dem Speicher 12 eingeschaltet sein, wie auch die Auflagen 98B von der Always-on-Komponente 16 zu verschiedenen Sensoren. Die Auflagen 98D für den PMGR 32 zur Kommunikation mit der PMU 156 und die Auflagen 98A für die Peripherieeinheit 18B können beide abgeschaltet sein. Alternativ dazu kann eine einzelne Aufnahmestruktur verwendet werden, bei der alle Auflagen eingeschaltet sind, wenn mindestens eine Auflage eingeschaltet ist.
  • Entsprechend der Darstellung in 7 können der Speicher-Controller 22 und die Always-on-Komponente 16 hochgefahren sein, während die restlichen Komponenten heruntergefahren sind. Zusätzlich kann ein Teil 99 der Kommunikationsstruktur 27, der zur Kommunikation zwischen der Always-on-Komponente 16 und dem Speicher-Controller 22 verwendet wird, hochgefahren sein, während der Rest der Kommunikationsstruktur 27 heruntergefahren sein kann. Beispielsweise kann bei einer Ausführungsform die Kommunikationsstruktur 27 eine hierarchische Gruppe von Bussen und Schaltung zum Routen von Transaktionen von Quellen, wie z. B. den Peripherieeinheiten 18A-18B, dem CPU-Komplex 14 und der Always-on-Komponente 16, zum Speicher-Controller 22 einschließen. Die Struktur kann auch Daten führen (zum Speicher-Controller 22 für Schreibvorgänge, vom Speicher-Controller 22 für Lesevorgänge) sowie Reaktionen des Speicher-Controllers 22 zu den Quellen. Die Abschnitte der hierarchischen Schnittstelle und Schaltung zwischen der Always-on-Komponente 16 und dem Speicher-Controller 22 können eingeschaltet sein, und andere Abschnitte können ausgeschaltet sein.
  • 8 ist ein Blockdiagramm mit der Darstellung der Latenzreduktion unter Verwendung des Neukonfigurationsmechanismus bei einer Ausführungsform. In 8 nimmt die Zeit von oben nach unten zu, was durch den Pfeil auf der linken Seite von 8 dargestellt ist. Links ist eine Boot-Sequenz für die integrierte Schaltung 10, und rechts ist eine Neukonfiguration gemäß dem Neukonfigurationsmechanismus der vorliegenden Implementierung.
  • Die Boot-Sequenz kann ausgeführt werden, wenn eine Vorrichtung einschließlich des SOC 10 anfänglich hochgefahren wird. Dementsprechend werden keine Daten im Speicher 12 gespeichert, und das SOC 10 wird nicht initialisiert, einschließlich der programmierbaren Neukonfigurationsdaten 56. Die Boot-Sequenz schließt einen Nur-Lese-Speicherladevorgang (ROM-Ladevorgang) 100, einen Low-Level-Bootvorgang 102 und einen Kernel 104 ein. Der ROM-Ladevorgang 100 kann am Ende des Rücksetzens durch die CPU-Prozessoren 30 beginnen und das Auslesen von Low-Level-Boot-Code für den Low-Level-Bootvorgang 102 aus einem ROM (z. B. einem sicheren ROM), das Entschlüsseln und/oder Authentifizieren des Low-Level-Boot-Codes und das Starten des Low-Level-Boot-Codes einschließen. Der Low-Level-Boot-Code kann die verschiedenen Komponenten des SOC 10 erkennen und diese Komponenten initialisieren. Allgemein können der Umfang der Initialisierung, die zu initialisierenden Komponenten und der Zustand, in den die Komponenten durch den Low-Level-Boot-Code initialisiert werden, entsprechend dem Design des Kernel-Codes (Kernel-Block 104) gesteuert werden. Das bedeutet, dass der Low-Level-Boot-Code einen Zustand im System/SOC 10 erzeugen kann, dessen Vorliegen erwartet wird, wenn der Kernel-Code seine erste Anweisung ausführt. Der Kernel-Code kann der zentrale Kern des Betriebssystems sein und die Ressourcen des SOC 10 zur Verwendung durch verschiedene Anwendungsprogramme, die im System ausgeführt werden, verwalten.
  • Beim erneuten Hochfahren unter Verwendung des Neukonfigurationsmechanismus kann der ROM-Ladevorgang 100 vermieden werden. Der Neukonfigurationsmechanismus (Block 106) kann die gleiche Wirkung haben wie der Low-Level-Bootvorgang 102, er kann aber in einigen Fällen schneller ablaufen als der Low-Level-Boot-Code. Im schlimmsten Fall kann der Neukonfigurationsmechanismus 106 die gleiche Latenz aufweisen wie der Low-Level-Bootvorgang 102. Beim Abschluss des Neukonfigurationsmechanismus 106 kann der Kernel 104 zur Ausführung bereit sein. Die Latenzreduktion unter Verwendung des Neukonfigurationsmechanismus ist durch den Pfeil 108 angegeben.
  • Bei einer anderen Ausführungsform kann der Neukonfigurationsmechanismus 106 durch die Ableitung von Neukonfigurationscode aus dem Low-Level-Boot-Code und das Speichern des Codes an einer für die CPU-Prozessoren 30 nach dem Einschaltereignis zugänglichen Position implementiert sein (z. B. in einem nichtflüchtigen Speicher wie z. B. Flash-Speicher im SOC 10 oder daran gekoppelten Speicher). Nach dem Hochfahren und Rücksetzen der CPU-Prozessoren 30 können die CPU-Prozessoren 30 vom Rücksetzen auf einen Reset-Vektor freigegeben werden, der auf die Position weist, sodass der Neukonfigurationscode ausgeführt werden kann. Der Neukonfigurationscodes kann mit einem Aufruf des Kernels enden.
  • 9 ist ein Blockdiagramm mit der Darstellung der Verwendung von Spekulation bei einer Ausführungsform, um die Aufweck-Latenz zu reduzieren. Allgemein kann Spekulation entsprechend der Darstellung in 9 auf beliebigen Ebenen eingesetzt werden, um Latenz zu reduzieren (z. B. bei jedem Übergang zwischen Zuständen in 3 und 4). Während ein Teil des Stroms beim spekulativen Hochfahren von Schaltung und beim erneuten Herunterfahren verbraucht werden kann, kann, falls die Spekulation inkorrekt ist, eine angemessen akkurate Spekulation ein gutes Gleichgewicht zwischen Energie und Performance schaffen. Ähnlich wie in 8 nimmt die Zeit in 9 von oben nach unten zu.
  • Links in 9 ist eine ohne Spekulation ausgeführte Sequenz gezeigt. Die Always-on-Komponente 16 kann N Sensorproben sammeln (Block 110). Das bedeutet, dass die Always-on-Komponente 16 N-mal zwischen dem Wartezustand 60 und dem Erfassungszustand 62 übergehen und dabei jedes Mal Sensordaten erfassen kann (wobei N eine positive Ganzzahl ist). Die Always-on-Komponente 16 kann bei diesem Beispiel mit einem Schwellenwert von N programmiert werden, sodass die Zustandsmaschine nach den N Sensorproben zum Prozesszustand 64 übergeht (und den Prozessor 40 aufweckt). Der Prozessor 40 kann die Sensordaten verarbeiten (Block 112), aber er kann kein Muster oder anderes Attribut der Sensordaten erkennen, das den Prozessor 40 veranlasst, den Speicher-Controller 22 oder andere Teile des SOC 10 aufzuwecken. Die Zustandsmaschine kann in den Erfassungszustand 62 und/oder Wartezustand 60 zurückkehren. Anschließend können N weitere Sensorproben gesammelt werden (Block 114), und der Prozessor 40 kann erneut aufgeweckt werden und die Sensordaten verarbeiten (Block 116). In diesem Fall kann der Prozessor 40 erkennen, dass das SOC 10 aufgeweckt werden soll, sodass die CPU-Prozessoren 30 die Sensordaten weiter verarbeiten können oder andere Verarbeitungsvorgänge ausführen können. Somit kann die Zustandsmaschine in den SOC-On-Zustand 68/72 übergehen und das SOC 10 aufwecken und die Verarbeitung ermöglichen (Block 118).
  • Rechts in 9 ist ein Beispiel von Spekulation wiedergegeben, um die Latenz beim Einschalten des SOC 10 zu reduzieren. Ähnlich wie beim Beispiel links kann das Beispiel auf der rechten Seite die Always-on-Komponente 16 einschließen, die N Sensorproben sammelt und den Prozessor 40 aufweckt (Block 120), wobei die Zustandsmaschine in den Prozesszustand 64 übergeht. In diesem Fall sucht der durch den Prozessor 40 ausgeführte Code jedoch nicht nur nach Mustern/Attributen in den Sensordaten, die eine gewünschte unmittelbare SOC-Verarbeitung angeben (z. B. ähnlich den Blöcken 112 und 116 auf der linken Seite von 9), sondern er sucht auch nach Mustern/Attributen zur Vorhersage, dass die SOC-Verarbeitung bald erwünscht wird. Bei dem Beispiel rechts kann der durch den Prozessor 40 ausgeführte Code vorhersagen, dass die SOC-Verarbeitung erwünscht ist (Block 122), und er kann veranlassen, dass die Zustandsmaschinen in den SOC-On-Zustand 68/72 übergehen (Block 124). Das SCM 44 kann ebenfalls mit der parallelen Erfassung von Sensorproben fortfahren. Wenn das Muster/Attribut erkannt wird, das ein Aufwecken veranlassen würde, kann das SOC 10 bereits betriebsbereit sein. Im Vergleich zum Beispiel auf der linken Seite kann die Latenz entsprechend der Darstellung durch den Pfeil 126 reduziert sein. Falls die Vorhersage inkorrekt ist (Vorhersagefehler in 9), kann das SOC 10 in den Schlafzustand zurückkehren (Block 128). In diesem Fall war die zum Aufwecken des SOC 10 aufgewendete Energie möglicherweise verschwendet.
  • Unter Hinwendung zu 10 wird ein Blockdiagramm einer bestimmten Ausführungsform eines Systems 150 gezeigt. Bei der dargestellten Ausführungsform schließt das System 150 zumindest ein Vorkommen des SOC 10 ein, gekoppelt mit einer oder mehreren Peripherieeinheiten 154 und dem externen Speicher 12. Die PMU 156 ist bereitgestellt, die die Versorgungsspannungen zum SOC 10 liefert sowie eine oder mehrere Versorgungsspannungen zum Speicher 12 und/oder zu den Peripherieeinheiten 154. 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 Peripherieeinheiten 154 können jede gewünschte Schaltlogik beinhalten, 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 beinhalten, wie Wi-Fi, Bluetooth, Mobilfunk, globales Positionsbestimmungssystem usw. Die Peripherieeinheiten 154 können auch zusätzlichen Speicher beinhalten, einschließlich RAM-Speicher, Festspeicher oder Plattenspeicher. Die Peripherieeinheiten 154 können Benutzerschnittstellenvorrichtungen einschließen, wie z. B. einen Anzeigebildschirm, einschließlich Touchscreens oder Multi-Touch-Displays, eine Tastatur oder andere Eingabevorrichtungen, Mikrofone, Lautsprecher usw. Bei der Ausführungsform in 1 können die Peripherieeinheiten 154 die Sensoren 20 einschließen. In anderen Ausführungsformen kann es sich bei dem System 150 um einen beliebigen Typ von Rechensystem handeln (z. B. Desktop-PC, Laptop, Workstation, Nettop usw.).
  • Der externe Speicher 12 kann jeden beliebigen Speichertyp beinhalten. Zum Beispiel kann es sich bei dem externen Speicher 12 um einen SRAM, einen dynamischen RAM (DRAM), wie einen synchronen DRAM (SDRAM), einen Double Data Rate (DDR, DDR2, DDR3 etc.) 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 beinhalten, an denen die Speichervorrichtungen angebaut sind, beispielsweise einzelreihige Speichermodule (SIMMs), zweireihige Speichermodule (DIMMs) usw. Alternativ dazu kann der externe Speicher 12 eine oder mehrere Speichervorrichtungen beinhalten, die an dem SOC 10 in einer Chipauf-Chip- oder Packung-auf-Packung-Implementierung angebaut sind.
  • In 11 ist ein Blockdiagramm einer Ausführungsform eines computerzugänglichen Speichermediums 200 gezeigt. Allgemein ausgedrückt, kann ein computerzugängliches Speichermedium ein beliebiges Speichermedium einschließen, auf das durch einen Computer während der Verwendung zugegriffen werden kann, um Anweisungen und/oder Daten zum Computer bereitzustellen. Beispielsweise kann ein computerzugängliches Speichermedium Speichermedien einschließen wie z. B. magnetische oder optische Medien, z. B. Platten (fest oder portabel), Bänder, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW oder Blu-Ray. Speichermedien können weiter flüchtige oder nichtflüchtige Speichermedien einschließen wie z. B. RAM (z. B. synchronen dynamischen RAM (SDRAM), Rambus-DRAM (RDRAM), statischen RAM (SRAM) usw.), ROM oder Flash-Speicher. Die Speichermedien können physisch innerhalb des Computers eingeschlossen sein, für den die Speichermedien Anweisungen/Daten bereitstellen. Alternativ dazu können die Speichermedien mit dem Computer verbunden sein. Beispielsweise können die Speichermedien über ein Netzwerk oder eine drahtlose Verbindung wie z. B. Netzwerk-Speicher mit dem Computer verbunden sein. Die Speichermedien können über eine Peripherieschnittstelle wie z. B. den Universal Serial Bus (USB) angeschlossen sein. Allgemein kann das computerzugängliche Speichermedium 200 Daten in einer nicht flüchtigen Weise speichern, wobei sich in diesem Kontext nicht flüchtig auf die Nicht-Übertragung der Anweisungen/Daten über ein Signal beziehen kann. Beispielsweise kann die nicht vorübergehende Speicherung flüchtig sein (und die gespeicherten Anweisungen/Daten als Reaktion auf ein Herunterfahren verlieren), oder sie kann nichtflüchtig sein.
  • Das computerzugängliche Speichermedium 200 in 11 kann stets einen Komponentencode 202 speichern. Der Always-on-Komponentencode 202 kann Anweisungen einschließen, die bei ihrer Ausführung durch den Prozessor 40 den vorstehend für den Code beschriebenen Vorgang implementieren. Der Always-on-Komponentencode 202 kann beispielsweise den in 2 gezeigten Prozessorcode 54 einschließen. Das computerzugängliche Speichermedium 200 in 11 kann ferner CPU-Code 204 einschließen. Der CPU-Code 204 kann ROM-Ladecode 206, Low-Level-Boot-Code 208 und/oder Kernel-Code 210 einschließen. Jeder Code kann die Anweisungen einschließen, die bei ihrer Ausführung beispielsweise die dem ROM-Ladeblock 100, dem Low-Level-Boot-Code 102 und dem Kernel-Code 104 zugewiesenen Vorgänge implementieren. Ein Trägermedium kann computerzugängliche Speichermedien einschließen sowie Übertragungsmedien wie z. B. für kabelgebundene oder drahtlose Übertragung.

Claims (15)

  1. Integrierte Schaltung (10), umfassend: mindestens einen Prozessor (30), der eine Zentraleinheit in der integrierten Schaltung (10) bildet; eine Energieverwaltungsschaltung (32), konfiguriert zum Übertragen von Spannungsanforderungen an eine Energieverwaltungseinheit (156), die extern zur integrierten Schaltung (10) ist, wobei die Spannungsanforderungen Anforderungen sind, um eine oder mehrere Stromversorgungsspannungen zur integrierten Schaltung (10) zu leiten; einen Speicher-Controller (22), gekoppelt mit einem Speicher (12) während des Betriebs, wobei die Energieverwaltungsschaltung (32) konfiguriert ist, um ein Herunterfahren des Speicher-Controllers (22) über eine Kommunikation mit der Energieverwaltungseinheit (156) zu veranlassen; und eine erste, mit dem Prozessor (30) und dem Speicher-Controller (22) gekoppelte Komponente (16), wobei die erste Komponente (16) konfiguriert ist, um eingeschaltet zu bleiben, während der Prozessor (30), die Energieverwaltungsschaltung (32) und der Speicher-Controller (22) abgeschaltet sind, und wobei die erste Komponente (16) separat von der Energieverwaltungsschaltung (32) mit der Energieverwaltungseinheit (156) gekoppelt ist, und wobei die erste Komponente (16) konfiguriert ist, um das Hochfahren des Speicher-Controllers (22) über die separate Kopplung mit der Energieverwaltungseinheit (156) zu veranlassen, um den Speicher-Controller (22) unter Verwendung der in der ersten Komponente (16) gespeicherten Konfigurationsdaten des Speicher-Controllers (22) zu programmieren und um mit dem Speicher-Controller (22) während einer Zeit, in der der Prozessor (30) heruntergefahren ist, zu kommunizieren.
  2. Integrierte Schaltung (10) nach Anspruch 1, wobei die Konfigurationsdaten des Speicher-Controllers (22) eine programmierte Konfiguration des Speicher-Controllers (22) zu einem Zeitpunkt wiedergeben, zu dem der Speicher-Controller (22) heruntergefahren war.
  3. Integrierte Schaltung (10) nach Anspruch 2, ferner umfassend eine Vielzahl von Komponenten, wobei die erste Komponente (16) ferner konfiguriert ist, um Konfigurationsdaten zu speichern, die die programmierte Konfiguration von jeder aus der Vielzahl von Komponenten zum Zeitpunkt wiedergeben, zu dem die Vielzahl von Komponenten heruntergefahren war.
  4. Integrierte Schaltung (10) nach Anspruch 3, wobei die erste Komponente (16) konfiguriert ist, um jede aus der Vielzahl von Komponenten als Reaktion auf das Hochfahren von jeder aus der Vielzahl von Komponenten mit den gespeicherten Konfigurationsdaten zu programmieren.
  5. Integrierte Schaltung (10) nach Anspruch 4, wobei der Prozessor (30) konfiguriert ist, um Betriebssystem-Software auszuführen, und wobei die erste Komponente (16) konfiguriert ist, um den Speicher-Controller (22) und die Vielzahl von Komponenten zu programmieren, bevor das Betriebssystem die Ausführung auf dem Prozessor (30) wiederaufnimmt.
  6. System, Folgendes umfassend: einen Speicher (12); und die integrierte Schaltung (10) nach einem der vorstehenden Ansprüche, wobei die integrierte Schaltung (10) mit dem Speicher (12) gekoppelt ist.
  7. Verfahren, Folgendes umfassend: Herunterfahren eines Speicher-Controllers (22), einer Vielzahl von Komponenten, einer Energieverwaltungsschaltung (32) und eines Prozessors (30) in einer integrierten Schaltung (10), die auch eine erste Komponente einschließt (16), die während einer Zeit eingeschaltet bleibt, in der der Speicher-Controller (22), die Vielzahl von Komponenten und der Prozessor (30) abgeschaltet sind, wobei das Herunterfahren über Anforderungen von der Energieverwaltungsschaltung (32) an eine Energieverwaltungseinheit (156), die extern zur integrierten Schaltung (10) ist, erfolgt; erneutes Hochfahren des Speicher-Controllers (22) im Anschluss an das Herunterfahren, wobei das Hochfahren durch die erste Komponente (16) veranlasst wird, während der Prozessor (30) heruntergefahren bleibt, wobei die erste Komponente (16) mit der von der Energieverwaltungsschaltung (32) separaten Energieverwaltungseinheit (156) gekoppelt ist, um das Hochfahren des Speicher-Controllers (22) zu veranlassen; und Neuinitialisieren des Speicher-Controllers (22) mit Konfigurationsdaten von der ersten Komponente (16).
  8. Verfahren nach Anspruch 7, ferner Folgendes umfassend: Booten eines Systems, einschließlich der integrierten Schaltung (10), wobei das Booten das Initialisieren des Speicher-Controllers (22) und der Vielzahl von Komponenten einschließt; Schreiben der Konfigurationsdaten, die eine programmierte Konfiguration des Speicher-Controllers (22) wiedergeben, in die erste Komponente (16).
  9. Verfahren nach Anspruch 8, ferner umfassend das Schreiben der Konfigurationsdaten der Vielzahl von Komponenten in die erste Komponente (16).
  10. Verfahren nach einem der Ansprüche 7 bis 9, ferner Folgendes umfassend: Beibehaltung der Abschaltung der Vielzahl von Komponenten und des Prozessors (30) während des Hochfahrens und der Neuinitialisierung; und Kommunikation der ersten Komponente (16) mit dem Speicher-Controller (22) im Anschluss an die Neuinitialisierung, während die Vielzahl von Komponenten und der Prozessor (30) abgeschaltet bleiben.
  11. Verfahren nach Anspruch 10, ferner umfassend, dass die erste Komponente (16) bestimmt, dass Kommunikation mit dem Speicher-Controller (22) erforderlich ist, wobei das Hochfahren als Reaktion auf die Bestimmung erfolgt.
  12. Verfahren nach einem der Ansprüche 7 bis 11, ferner Folgendes umfassend: Hochfahren der Vielzahl von Komponenten und des Prozessors (30); und Neuinitialisieren der Vielzahl von Komponenten und des Prozessors (30) mit den Konfigurationsdaten aus der ersten Komponente (16).
  13. Verfahren nach Anspruch 12, ferner umfassend, dass der Prozessor (30) Betriebssystem-Software ausführt, wobei die Neuinitialisierung ausgeführt wird, bevor der Prozessor (30) mit der Ausführung der Betriebssystem-Software beginnt.
  14. Verfahren nach einem der Ansprüche 8 bis 13, ferner Folgendes umfassend: Ändern der programmierten Konfiguration während des Betriebs; und Aktualisieren der Konfigurationsdaten in der ersten Komponente (16), um die geänderte Konfiguration wiederzugeben.
  15. Verfahren nach Anspruch 14, ferner umfassend das Schreiben eines Zustands des Systems in den Speicher (12), mit dem der Speicher-Controller (22) gekoppelt ist, vor dem Herunterfahren des Speicher-Controllers (22), der Vielzahl von Komponenten und des Prozessors (30).
DE112015002522.7T 2014-05-29 2015-03-13 System-on-a-chip mit always-on-prozessor, der das SOC rekonfiguriert und Nur-Speicher-Kommunikationsmodus unterstützt Active DE112015002522B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462004319P 2014-05-29 2014-05-29
US62/004,319 2014-05-29
US14/458,949 2014-08-13
US14/458,949 US9619377B2 (en) 2014-05-29 2014-08-13 System on a chip with always-on processor which reconfigures SOC and supports memory-only communication mode
PCT/US2015/020330 WO2015183377A1 (en) 2014-05-29 2015-03-13 System on a chip with always-on processor which reconfigures soc and supports memory-only communication mode

Publications (2)

Publication Number Publication Date
DE112015002522T5 DE112015002522T5 (de) 2017-03-09
DE112015002522B4 true DE112015002522B4 (de) 2022-05-25

Family

ID=52774591

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015002522.7T Active DE112015002522B4 (de) 2014-05-29 2015-03-13 System-on-a-chip mit always-on-prozessor, der das SOC rekonfiguriert und Nur-Speicher-Kommunikationsmodus unterstützt

Country Status (6)

Country Link
US (2) US9619377B2 (de)
KR (1) KR101805346B1 (de)
CN (1) CN106462217B (de)
DE (1) DE112015002522B4 (de)
TW (1) TW201602791A (de)
WO (1) WO2015183377A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10079019B2 (en) 2013-11-12 2018-09-18 Apple Inc. Always-on audio control for mobile device
US10031000B2 (en) 2014-05-29 2018-07-24 Apple Inc. System on a chip with always-on processor
US9778728B2 (en) 2014-05-29 2017-10-03 Apple Inc. System on a chip with fast wake from sleep
US9619377B2 (en) 2014-05-29 2017-04-11 Apple Inc. System on a chip with always-on processor which reconfigures SOC and supports memory-only communication mode
KR102581808B1 (ko) 2014-12-18 2023-09-21 가부시키가이샤 한도오따이 에네루기 켄큐쇼 반도체 장치, 센서 장치, 및 전자 기기
US10582636B2 (en) * 2017-08-07 2020-03-03 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Server having a dual-mode serial bus port enabling selective access to a baseboard management controller
CN108446009A (zh) * 2018-03-10 2018-08-24 北京联想核芯科技有限公司 掉电控制方法、装置、设备及介质
GB201810663D0 (en) 2018-06-28 2018-08-15 Nordic Semiconductor Asa Peripheral Power Domains
US11172882B2 (en) * 2018-09-05 2021-11-16 Vital Connect, Inc. Monitoring system
KR20200046282A (ko) * 2018-10-24 2020-05-07 삼성전자주식회사 집적 회로 장치 및 고 대역폭 메모리 장치
KR20200069905A (ko) 2018-12-07 2020-06-17 삼성전자주식회사 스토리지 시스템 및 스토리지 시스템의 동작 방법
US20200409762A1 (en) * 2019-06-26 2020-12-31 Advanced Micro Devices, Inc. Method and apparatus for servicing an interrupt
TWI739227B (zh) * 2019-12-03 2021-09-11 智成電子股份有限公司 避免多餘記憶體存取的系統單晶片模組
CN112948320B (zh) 2019-12-11 2024-01-16 瑞昱半导体股份有限公司 具有内存的芯片
CN113126740A (zh) * 2019-12-30 2021-07-16 美光科技公司 管理降低功率的存储器操作
JP2022049552A (ja) * 2020-09-16 2022-03-29 キオクシア株式会社 半導体装置および方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130173938A1 (en) 2011-12-30 2013-07-04 Samsung Electronics Co., Ltd. Data processing device and portable device having the same
DE102013224175A1 (de) 2012-11-27 2014-05-28 Nvidia Corporation Niedrig-Leistungs-Zustände für ein Computer-System mit integriertem Basis-Band

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6593845B1 (en) 1998-01-09 2003-07-15 Intermac Ip Corp. Active RF tag with wake-up circuit to prolong battery life
US6748548B2 (en) * 2000-12-29 2004-06-08 Intel Corporation Computer peripheral device that remains operable when central processor operations are suspended
US6775750B2 (en) 2001-06-29 2004-08-10 Texas Instruments Incorporated System protection map
EP1331539B1 (de) 2002-01-16 2016-09-28 Texas Instruments France Sicherer Modus für Prozessoren, die Speicherverwaltung und Unterbrechungen unterstützen
US7134028B2 (en) 2003-05-01 2006-11-07 International Business Machines Corporation Processor with low overhead predictive supply voltage gating for leakage power reduction
US8112618B2 (en) 2004-04-08 2012-02-07 Texas Instruments Incorporated Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making
JP2006107127A (ja) * 2004-10-05 2006-04-20 Nec Electronics Corp 半導体集積回路装置
US7797523B2 (en) 2006-09-25 2010-09-14 Hewlett-Packard Development Company, L.P. Method and system of executing stack-based memory reference code
US8041968B2 (en) * 2007-01-04 2011-10-18 Apple Inc. Power management for driving display with baseband portion when application portion is in low power mode
US7991992B2 (en) 2007-03-13 2011-08-02 Intel Corporation Power reduction for system on chip
US7941682B2 (en) * 2007-05-09 2011-05-10 Gainspan, Inc. Optimum power management of system on chip based on tiered states of operation
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
US20090259865A1 (en) 2008-04-11 2009-10-15 Qualcomm Incorporated Power Management Using At Least One Of A Special Purpose Processor And Motion Sensing
US8065540B2 (en) * 2008-10-31 2011-11-22 Dell Products, Lp Power control for information handling system having shared resources
US8103803B2 (en) 2008-11-21 2012-01-24 Nvidia Corporation Communication between a processor and a controller
US8405505B2 (en) 2009-05-26 2013-03-26 Qualcomm Incorporated Power management of sensors within a mobile device
GB2472050B (en) * 2009-07-22 2013-06-19 Wolfson Microelectronics Plc Power management apparatus and methods
KR101624903B1 (ko) 2009-09-16 2016-05-30 삼성전자주식회사 휴대용 단말기에서 전력 소모를 줄이기 위한 장치 및 방법
JP2011129041A (ja) 2009-12-21 2011-06-30 Fujitsu Ltd 情報処理装置、認証処理制御プログラムおよび認証処理制御方法
US8656198B2 (en) * 2010-04-26 2014-02-18 Advanced Micro Devices Method and apparatus for memory power management
US8751802B2 (en) 2010-06-30 2014-06-10 Sandisk Il Ltd. Storage device and method and for storage device state recovery
US8438416B2 (en) * 2010-10-21 2013-05-07 Advanced Micro Devices, Inc. Function based dynamic power control
US8706172B2 (en) 2010-10-26 2014-04-22 Miscrosoft Corporation Energy efficient continuous sensing for communications devices
US9135213B2 (en) 2011-01-13 2015-09-15 Xilinx, Inc. Extending a processor system within an integrated circuit and offloading processes to process-specific circuits
US20120254878A1 (en) 2011-04-01 2012-10-04 Lama Nachman Mechanism for outsourcing context-aware application-related functionalities to a sensor hub
US9229489B2 (en) * 2011-05-03 2016-01-05 Facebook, Inc. Adjusting mobile device state based on user intentions and/or identity
US20130124891A1 (en) * 2011-07-15 2013-05-16 Aliphcom Efficient control of power consumption in portable sensing devices
US8954017B2 (en) * 2011-08-17 2015-02-10 Broadcom Corporation Clock signal multiplication to reduce noise coupled onto a transmission communication signal of a communications device
US8862917B2 (en) 2011-09-19 2014-10-14 Qualcomm Incorporated Dynamic sleep for multicore computing devices
US8812761B2 (en) 2011-10-28 2014-08-19 Apple Inc. System and method for adjusting power usage to reduce interrupt latency
KR20130079076A (ko) 2011-12-30 2013-07-10 삼성전자주식회사 데이터 처리 장치와 이를 포함하는 휴대용 장치
US8892269B2 (en) 2012-03-30 2014-11-18 Intel Corporation Power down and quick start of thermal sensor
TWI594188B (zh) 2012-04-10 2017-08-01 祥碩科技股份有限公司 系統單晶片及其開機方法
US20130318382A1 (en) * 2012-05-23 2013-11-28 Canon Kabushiki Kaisha Power management apparatus, image forming apparatus and power management method
US9182999B2 (en) 2012-05-30 2015-11-10 Advanced Micro Devices, Inc. Reintialization of a processing system from volatile memory upon resuming from a low-power state
KR101896666B1 (ko) 2012-07-05 2018-09-07 삼성전자주식회사 이미지 센서 칩, 이의 동작 방법, 및 이를 포함하는 시스템
KR102045511B1 (ko) * 2012-07-18 2019-11-15 삼성전자 주식회사 센서 허브를 포함하는 단말기 및 단말기의 제어 방법
US9063731B2 (en) 2012-08-27 2015-06-23 Samsung Electronics Co., Ltd. Ultra low power apparatus and method to wake up a main processor
US9081571B2 (en) 2012-11-29 2015-07-14 Amazon Technologies, Inc. Gesture detection management for an electronic device
US9430323B2 (en) 2013-02-01 2016-08-30 Broadcom Corporation Power mode register reduction and power rail bring up enhancement
US9541984B2 (en) * 2013-06-05 2017-01-10 Apple Inc. L2 flush and memory fabric teardown
US9338003B2 (en) 2013-06-18 2016-05-10 Maxim Integrated Products, Inc. Secure modules using unique identification elements
US20150089245A1 (en) 2013-09-26 2015-03-26 Asher M. Altman Data storage in persistent memory
US9171133B2 (en) 2013-10-11 2015-10-27 Landis+Gyr Innovations, Inc. Securing a device and data within the device
US20150127300A1 (en) * 2013-11-03 2015-05-07 Microsoft Corporation Sensor Selection Based on Context and Policy
CN103619056B (zh) 2013-12-02 2018-01-12 华为终端(东莞)有限公司 一种上报传感器数据的方法和终端
WO2015099802A1 (en) * 2013-12-28 2015-07-02 Intel Corporation Techniques for increasing energy efficiency of sensor controllers
US9443111B2 (en) 2014-02-28 2016-09-13 Seagate Technology Llc Device security using an encrypted keystore data structure
US9619377B2 (en) 2014-05-29 2017-04-11 Apple Inc. System on a chip with always-on processor which reconfigures SOC and supports memory-only communication mode
US10031000B2 (en) 2014-05-29 2018-07-24 Apple Inc. System on a chip with always-on processor
US9778728B2 (en) 2014-05-29 2017-10-03 Apple Inc. System on a chip with fast wake from sleep

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130173938A1 (en) 2011-12-30 2013-07-04 Samsung Electronics Co., Ltd. Data processing device and portable device having the same
DE102013224175A1 (de) 2012-11-27 2014-05-28 Nvidia Corporation Niedrig-Leistungs-Zustände für ein Computer-System mit integriertem Basis-Band

Also Published As

Publication number Publication date
US20150347287A1 (en) 2015-12-03
TW201602791A (zh) 2016-01-16
WO2015183377A1 (en) 2015-12-03
US9619377B2 (en) 2017-04-11
KR101805346B1 (ko) 2017-12-05
CN106462217A (zh) 2017-02-22
KR20160147954A (ko) 2016-12-23
DE112015002522T5 (de) 2017-03-09
US10261894B2 (en) 2019-04-16
US20170177256A1 (en) 2017-06-22
CN106462217B (zh) 2018-12-04

Similar Documents

Publication Publication Date Title
DE112015002522B4 (de) System-on-a-chip mit always-on-prozessor, der das SOC rekonfiguriert und Nur-Speicher-Kommunikationsmodus unterstützt
US10915160B2 (en) System on a chip with fast wake from sleep
US11079261B2 (en) System on a chip with always-on processor
US9959124B1 (en) Secure bypass of low-level configuration in reconfiguration of a computing system
DE112006003575B4 (de) Verfahren und Vorrichtung für einen Nullspannungs-Prozessorschlafzustand
DE112006002835B4 (de) Verfahren und System zum Optimieren der Latenz bei dynamischer Speichereinteilung
DE102013111229A1 (de) Anwendungsprozessor, Mobiltelefonvorrichtung mit demselben und Verfahren zum Auswählen eines Taktsignals für einen Anwendungsprozessor
US20150362980A1 (en) Always-On Processor as a Coprocessor
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors
US9659616B2 (en) Configuration fuse data management in a partial power-on state
DE102019100218A1 (de) Latenzarmer Systemstart aus Nullenergiezustand
CN106814840A (zh) 用于处理器的低电力状态保持模式
Ramos et al. Flexible, ultra-low power sensor nodes through configurable finite state machines

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: BARDEHLE PAGENBERG PARTNERSCHAFT MBB PATENTANW, DE

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final