KR101805346B1 - Soc를 재구성하고 메모리-전용 통신 모드를 지원하는 올웨이즈-온 프로세서를 갖는 시스템 온 어 칩 - Google Patents

Soc를 재구성하고 메모리-전용 통신 모드를 지원하는 올웨이즈-온 프로세서를 갖는 시스템 온 어 칩 Download PDF

Info

Publication number
KR101805346B1
KR101805346B1 KR1020167033147A KR20167033147A KR101805346B1 KR 101805346 B1 KR101805346 B1 KR 101805346B1 KR 1020167033147 A KR1020167033147 A KR 1020167033147A KR 20167033147 A KR20167033147 A KR 20167033147A KR 101805346 B1 KR101805346 B1 KR 101805346B1
Authority
KR
South Korea
Prior art keywords
component
soc
memory
memory controller
processor
Prior art date
Application number
KR1020167033147A
Other languages
English (en)
Other versions
KR20160147954A (ko
Inventor
브리제시 트리파시
샤인 케일
마누 굴라티
정 욱 조
에릭 피. 마크니키
길버트 에이치. 허벡
티모시 제이. 밀레트
조슈아 피. 드 세자르
아난드 달랄
Original Assignee
애플 인크.
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 애플 인크. filed Critical 애플 인크.
Publication of KR20160147954A publication Critical patent/KR20160147954A/ko
Application granted granted Critical
Publication of KR101805346B1 publication Critical patent/KR101805346B1/ko

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
    • Y02B60/121
    • Y02B60/1282
    • Y02B60/32
    • 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

실시예에서, 시스템 온 어 칩(SOC)은, SOC의 나머지가 전력 오프되는 경우 가동되어 유지되는 컴포넌트를 포함한다. 컴포넌트는 다양한 디바이스 센서들로부터 데이터를 캡처하기 위한 센서 캡처 유닛을 포함할 수 있고, 캡처된 센서 데이터를 필터링할 수 있다. 필터링에 응답하여, 컴포넌트는 프로세싱을 허용하기 위해 SOC의 나머지를 웨이크 업시킬 수 있다. 컴포넌트는, 웨이크업 이후 SOC의 다른 컴포넌트들을 리프로그래밍하기 위해, 이들에 대해, SOC가 가장 최근에 전력 차단된 시간의 상태에 매칭하는 프로그래밍가능 구성 데이터를 저장할 수 있다. 일부 실시예들에서, 컴포넌트는, 메모리에 데이터를 기입하기 위해, SOC 내의 메모리 제어기 및 메모리 제어기로의 경로를 웨이크 업시키도록 구성될 수 있다. SOC의 나머지는 전력 차단으로 유지될 수 있다.

Description

SOC를 재구성하고 메모리-전용 통신 모드를 지원하는 올웨이즈-온 프로세서를 갖는 시스템 온 어 칩{SYSTEM ON A CHIP WITH ALWAYS-ON PROCESSOR WHICH RECONFIGURES SOC AND SUPPORTS MEMORY-ONLY COMMUNICATION MODE}
본원에서 설명되는 실시예들은 시스템 온 어 칩(SOC; system on a chip) 분야에 관한 것이고, 더 상세하게는 SOC에서 올웨이즈-온(always-on) 블록에 관한 것이다.
다양한 전자 디바이스들이 현재 소비자들에 의해 매일 사용되고 있다. 특히, 모바일 디바이스들이 편재되어 있다. 모바일 디바이스들은 셀 폰들, 개인 휴대 정보 단말(PDA)들, 다양한 PDA 기능 및/또는 일반적 애플리케이션 지원과 같은 다른 컴퓨팅 기능과 폰 기능을 결합한 스마트 폰들, 태블릿들, 랩탑들, 넷탑(net top)들, 스마트 시계들, 웨어러블 전자기기들 등을 포함할 수 있다. 일반적으로, 모바일 디바이스는, 사용자에 의해 소지되거나 사용자에 의해 착용되도록 설계되는 임의의 전자 디바이스일 수 있다. 모바일 디바이스는 통상적으로 배터리 가동되어, 콘센트(electrical outlet)와 같은 일정한 전력원 없이도 동작할 수 있다.
많은 모바일 디바이스들은 대부분의 시간 동안 "대기" 모드에서 동작할 수 있다. 대기 모드에서, 디바이스는 사용자를 위해 콘텐츠를 활성으로 디스플레이하고 있지 않고 그리고/또는 사용자를 위한 기능을 활성으로 수행하고 있지 않다는 점에서, 디바이스는 "오프(off)"처럼 보일 수 있다. 대기 모드에서, 디바이스 대부분은 실제로 전력 오프될 수 있다. 그러나, 배경에서, 디바이스는 폰 호출들 또는 네트워크 패킷들에 대해 청취하는 중, 경보들에 대해 체크하는 중, 이동에 반응하는 중 등일 수 있다.
모바일 디바이스들은 종종 제한된 서플라이(예를 들어, 배터리)로 동작중이기 때문에, 에너지 보존은 디바이스들에 대한 핵심적인 설계 고려사항이다. 시스템 온 어 칩(SOC)을 포함시키는 것은 에너지 보존을 도울 수 있는데, 이는, 디바이스에서 요구되는 기능 대부분은 SOC에 포함될 수 있기 때문이다. "대기" 모드 및 다른 저전력 모드들에서, SOC를 전력 차단(power down)시켜서, 현대식 집적 회로 기술들의 에너지 소모에서 중요한 팩터인 누설 전류 손실들을 제거하는 것이 바람직하다. 한편, SOC는 앞서 언급된 대기 기능 중 일부를 위해 요구된다.
실시예에서, SOC는, SOC의 나머지가 전력 오프되는 경우 가동되어 유지되는 컴포넌트를 포함한다. 이 컴포넌트는 다양한 디바이스 센서들로부터 데이터를 캡처하도록 구성되는 센서 캡처 유닛을 포함할 수 있다. 캡처된 센서 데이터는 컴포넌트 내의 메모리에 버퍼링될 수 있다. 컴포넌트는 일부 실시예들에서 프로세서를 더 포함할 수 있고, 프로세서는, 캡처된 센서 데이터를 필터링하여, 디바이스에 의한 추가적인 프로세싱을 위한 필요성을 표시할 수 있는 패턴들을 탐색할 수 있다. 추가적인 프로세싱을 위한 필요성이 검출되면, 컴포넌트는 그 프로세싱을 허용하기 위해 SOC의 나머지를 웨이크 업(wake up)시킬(즉, 전력 공급 및 리프로그래밍하게 할) 수 있다. 일부 실시예들에서, 디바이스가 활성으로 사용중이 아닌 시간들 동안 센서 데이터의 캡처를 여전히 지원하면서, 전력/에너지 소모가 감소될 수 있다. 예를 들어, 집적 회로 상에 컴포넌트의 집적을 통해 획득될 수 있는 전력/에너지 효율들은 센서 데이터 캡처를 지원하면서 달성될 수 있다. 컴포넌트는, 웨이크업 이후 SOC의 다른 컴포넌트들을 리프로그래밍하기 위해 이들에 대한 프로그래밍가능 구성 데이터를 저장할 수 있다. 프로그래밍가능 구성 데이터는, SOC가 가장 최근에 전력 차단된 시간에 컴포넌트의 상태에 매칭할 수 있거나(그 컴포넌트는 가동되어 유지되는 동안), 또는 웨이크업에 대해 기대되는 상이한 상태일 수 있다.
일부 실시예들에서, 컴포넌트는, 메모리에 데이터를 기입하고 그리고/또는 메모리로부터 데이터를 판독하기 위해, SOC 내의 메모리 제어기 및 메모리 제어기로의 경로 둘 모두를 웨이크 업시키도록 구성될 수 있다. SOC의 나머지는 전력 차단으로 유지될 수 있다. 이러한 방식으로, 컴포넌트는, 전송을 허용하기 위해 (예를 들어, 중앙 프로세싱 유닛(CPU) 프로세서 또는 프로세서들을 포함하는) 다른 컴포넌트들을 웨이크시키지 않고, 데이터(예를 들어, 센서 데이터)를 저장하기 위해 더 큰 메인 메모리를 이용할 수 있다. 오직 요구된 컴포넌트들만이 전력 공급되기 때문에, 전력/에너지 소모는 감소될 수 있다.
일부 실시예들에서, 프로그래밍가능 구성 데이터의 저장 및 컴포넌트로부터 데이터의 복원은, SOC에서 전력 차단된(예를 들어, 수면) 상태로부터 다시 전력 공급하는 경우의 레이턴시를 감소시킬 수 있다. 일부 실시예들에서, 일 상태(예를 들어, 컴포넌트의 프로세서는 어웨이크(awake)인 한편 SOC는 수면중인 상태)에서 데이터의 프로세싱은, 더 높은 전력/성능 상태가 곧 요구될 수 있다는 추정을 도출할 수 있다. SOC는 추정적으로 그 상태로 전이할 수 있고, 따라서 추정이 정확하다면 어웨이큰(awaken)을 위한 레이턴시는 훨씬 더 작을 수 있다.
하기의 상세한 설명은 첨부 도면들을 참조하며, 이제 도면들이 간단히 설명된다.
도 1은 SOC의 일 실시예의 블록도이다.
도 2는 SOC에서 올웨이즈-온 블록의 일 실시예의 블록도이다.
도 3은 도 2에 도시된 올웨이즈-온 블록에 대한 상태 머신의 일 실시예의 블록도이다.
도 4는 도 2에 도시된 올웨이즈-온 블록에 대한 상태 머신의 다른 실시예의 블록도이다.
도 5는 부트(boot) 또는 구성 변경 동안 SOC의 CPU 상에서 실행되는 소프트웨어의 일 실시예의 동작을 예시하는 흐름도이다.
도 6은 재구성 동안, 도 2에 도시된 올웨이즈-온 블록의 일 실시예의 동작을 예시하는 흐름도이다.
도 7은 메모리-전용 통신 상태에서 SOC의 일 실시예를 예시하는 블록도이다.
도 8은 재구성 접근법을 사용하는 일 실시예에 대한 레이턴시 감소를 예시하는 블록도이다.
도 9는 레이턴시 감소를 위한 추정적 웨이크 업의 일 실시예를 예시하는 블록도이다.
도 10은 도 1에 도시된 SOC를 포함하는 시스템의 일 실시예의 블록도이다.
도 11은 컴퓨터 액세스가능 저장 매체의 일 실시예의 블록도이다.
본 개시에서 설명되는 실시예들에 대해 다양한 수정들 및 대안적인 형태들을 허용하지만, 본 발명의 특정 실시예들은 도면들에 예로서 도시되고 본 명세서에서 상세히 설명될 것이다. 그러나, 본 명세서에 대한 도면들 및 상세한 설명이 개시된 특정 형태로 실시예들을 제한하는 것으로 의도되는 것이 아니라, 그와는 정반대로, 의도는 첨부된 청구항들의 사상 및 범주 내에 속한 모든 수정들, 등가물들 및 대안들을 커버하기 위한 것임을 이해하여야 한다. 본 명세서에서 사용되는 표제들은 오직 구성을 위한 것이며 설명의 범주를 제한하기 위해 사용되는 것으로 의도되지 않는다. 본 출원 전반에 걸쳐 사용되는 바와 같이, "일 수 있다(may)"라는 단어는 의무적인 의미(즉, "이어야만 한다(must)"를 의미)라기보다 오히려 허용의 의미(즉, "~에 대해 가능성을 갖는다"는 의미)로 사용된다. 유사하게, "포함하다(include, includes)" 및 "포함하는(including)"이라는 단어는 포함하지만 이로 제한되지 않음을 의미한다.
다양한 유닛들, 회로들 또는 다른 컴포넌트들이 작업 또는 작업들을 수행"하도록 구성되는" 것으로 설명될 수 있다. 그러한 맥락에서, "~하도록 구성된"은 동작 동안에 작업 또는 작업들을 수행하는 "회로를 갖는"을 일반적으로 의미하는 구조의 광의의 설명이다. 이와 같이, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온(on) 상태가 아닐 시에도 작업을 수행하도록 구성될 수 있다. 일반적으로, "~하도록 구성되는"에 대응하는 구조를 형성하는 회로는 하드웨어 회로들을 포함할 수 있다. 유사하게, 설명의 편의를 위해, 다양한 유닛들/회로들/컴포넌트들은 작업 또는 작업들을 수행하는 것으로 설명될 수 있다. 그러한 설명은 "~하도록 구성된"이라는 문구를 포함하는 것으로 해석되어야 한다.
본 명세서는 "일 실시예" 또는 "실시예"에 대한 참조를 포함한다. 본 명세서에서 명시적으로 부인하지 않는다면, 임의의 특징들의 조합을 포함하는 실시예들이 일반적으로 고려되더라도, "일 실시예에서" 또는 "실시예에서"라는 문구가 나타난다고 해서 반드시 동일한 실시예를 지칭하지는 않는다. 특정 특징들, 구조들 또는 특성들이 본 개시 내용과 일관성을 유지하는 임의의 적합한 방식으로 조합될 수 있다.
이제 도 1을 참조하면, 메모리(12), 적어도 하나의 센서(20) 및 전력 관리 유닛(PMU)(156)에 커플링된 SOC(10)의 일 실시예의 블록도가 도시된다. 이름에서 암시되는 바와 같이, SOC(10)의 컴포넌트들은 집적 회로 "칩"으로서 단일의 반도체 기판 상에 집적될 수 있다. 일부 실시예들에서, 컴포넌트들은 시스템 내의 둘 이상의 별개의 칩 상에서 구현될 수 있다. 그러나, SOC(10)는 본 명세서에서 예로서 사용될 것이다. 예시된 실시예에서, SOC(10)의 컴포넌트들은 중앙 프로세싱 유닛(CPU) 컴플렉스(14), "올웨이즈-온" 컴포넌트(16), 주변 컴포넌트들(18A-18B)(더 간단하게, "주변장치들"), 메모리 제어기(22), 전력 관리자(PMGR)(32) 및 통신 패브릭(communication fabric)(27)을 포함한다. 컴포넌트들(14, 16, 18A-18B, 22, 32)은 모두 통신 패브릭(27)에 커플링될 수 있다. 메모리 제어기(22)는 사용 중에 메모리(12)에 커플링될 수 있다. PMGR(32) 및 올웨이즈-온 컴포넌트(16)는 PMU(156)에 커플링될 수 있다. PMU(156)는 SOC, 메모리(12) 및/또는 센서들(20)에 다양한 전력 공급 전압을 공급하도록 구성될 수 있다. 올웨이즈-온 컴포넌트(16)는 센서들(20)에 커플링될 수 있다. 예시된 실시예에서, CPU 컴플렉스(14)는 하나 이상의 프로세서들(도 1의 P(30))을 포함할 수 있다. 프로세서들(30)은 SOC(10)의 CPU(들)를 형성할 수 있다.
올웨이즈-온 컴포넌트(16)는, SOC(10)의 다른 컴포넌트들(예를 들어, CPU 컴플렉스(14), 주변장치들(18A-18B) 및 PMGR(32))이 전력 차단되는 경우 전력 공급으로 유지되도록 구성될 수 있다. 더 상세하게는, 올웨이즈-온 컴포넌트(16)는, SOC(10)가 PMU(156)로부터 전력을 수신하는 동안에는 항상 온일 수 있다. 따라서, 올웨이즈-온 컴포넌트는, SOC(10)가 임의의 전력을 수신하는 중이면(예를 들어, SOC(10)를 포함하는 디바이스가 대기 모드이거나 활성으로 동작중인 시간들에는) 가동될 수 있지만 SOC(10)가 어떠한 전력도 수신하는 중이 아니면(예를 들어, 디바이스가 완전히 턴 오프되는 시간들에는) 가동되지 않을 수 있다는 관점에서 "올웨이즈-온"이다. 올웨이즈-온 컴포넌트(16)는, SOC(10)의 나머지가 오프인 동안에도 특정 기능들을 지원하여 저전력 동작을 허용할 수 있다.
도 1에서, 올웨이즈-온 컴포넌트(16)를 다른 컴포넌트들로부터 분리시키는 점선(24)은 올웨이즈-온 컴포넌트(16)에 대한 독립적인 전력 도메인을 표시할 수 있다. 유사하게, 예시된 실시예에서, 점선(26)은 메모리 제어기(22)에 대한 독립적인 메모리 제어기 전력 도메인을 표현할 수 있다. 다른 컴포넌트들, 컴포넌트들의 그룹들 및/또는 서브컴포넌트들 또한 독립적인 전력 도메인들을 가질 수 있다. 일반적으로, 전력 도메인은 다른 전력 도메인들과는 독립적으로 공급 전압을 수신하거나(즉, 전력 온되거나) 또는 공급 전압을 수신하지 않도록(즉, 전력 오프되도록) 구성될 수 있다. 일부 실시예들에서, 전력 도메인들은 상이한 공급 전압 크기들을 동시에 공급받을 수 있다. 독립성은 다양한 방식들로 제공될 수 있다. 예를 들어, 독립성은, PMU(156)로부터 별개의 공급 전압 입력들을 제공함으로써, 공급 전압 입력들과 컴포넌트들 사이에 전력 스위치들을 제공하고, 주어진 도메인에 대한 전력 스위치들을 일 단위로 제어함으로써, 및/또는 상기의 조합으로써 제공될 수 있다. 또한 도 1에 예시된 것보다 더 많은 전력 도메인들이 존재할 수 있다. 예를 들어, CPU 컴플렉스(14)는 실시예에서 독립적인 전력 도메인을 가질 수 있다(그리고 각각의 CPU 프로세서(30)는 독립적인 전력 도메인을 또한 가질 수 있다). 하나 이상의 주변장치 컴포넌트들(18A-18B)은 실시예에서 하나 이상의 독립적인 전력 도메인들에 있을 수 있다.
도 1에 예시된 바와 같이, 올웨이즈-온 컴포넌트(16)는 적어도 하나의 센서(20)에 커플링될 수 있다(그리고 다수의 센서들(20)에 커플링될 수 있다). 올웨이즈-온 컴포넌트(16)는, (SOC(10)가 전력 온인 시간들에 추가로) SOC(10)가 전력 오프인 동안 센서들(20)로부터의 센서 데이터를 판독하도록 구성될 수 있다. 올웨이즈-온 컴포넌트(16)는 센서 데이터를 버퍼링하기 위한 메모리(도 1에는 미도시)를 포함할 수 있고, SOC(10)의 나머지는, 메모리(또는 센서 데이터를 저장하도록 할당되는 그 일부)가 데이터로 채워지지 않는 한(또는 충만도(fullness)의 임계 레벨에 도달하지 않는 한) 전력 공급될 필요가 없다. 일부 실시예들에서, 올웨이즈-온 컴포넌트(16)는 또한 일부 방식으로 센서 데이터를 프로세싱하도록 구성될 수 있다. 예를 들어, 올웨이즈-온 컴포넌트(16)는 센서 데이터를 필터링하도록 구성될 수 있다. 데이터를 필터링하는 것은 일반적으로: 센서 데이터가 CPU 컴플렉스(14)의 프로세서들에 의해 추가로 프로세싱되어야 함을 표시하는 패턴 또는 다른 데이터 특성들에 대해 탐색하는 것; 데이터에서 잡음을 검출/제거하기 위해 데이터를 조작하는 것; 잘못된 긍정적 매칭들을 제거하기 위해, 패턴 또는 다른 특성에 매칭하는 것으로 보이는 데이터를 추가로 프로세싱하는 것; 등 중 하나 이상을 지칭할 수 있다.
센서들(20)은, 센서들을 포함하는 디바이스의 물리적 환경의 양태들을 검출 또는 측정하도록 구성되는 임의의 디바이스들일 수 있다. 예를 들어, 센서는 디바이스의 가속도를 측정하는 가속도계를 포함할 수 있다. 가속도계는 (미리 결정된 방향에서 가속도를 측정하는) 지향성 또는 (다수의 차원들에서 가속도를 측정하고, 가속도 및 그 방향을 표시하는 벡터를 생성하는) 벡터성일 수 있다. 지향성 가속도 감지 뿐만 아니라 벡터성 가속도 감지를 허용하기 위해 다수의 지향성 가속도계들이 이용될 수 있다. 센서의 다른 예는 자이로스코프(또는 자이로)일 수 있다. 자이로스코프는 디바이스의 배향 및/또는 배향에서의 변경들을 검출하기 위해 사용될 수 있다. 가속도계와 유사하게, 자이로스코프는 지향성 또는 다중지향성일 수 있고, 그리고/또는 다수의 지향성 자이로스코프들이 사용될 수 있다. 또 다른 센서는 자력계일 수 있고, 이는, 자기 배향을 측정하기 위해 사용될 수 있고, 따라서 나침반을 형성하도록 사용될 수 있다. 다른 실시예들에서, 나침반 기능은 센서에 내장될 수 있다. 다른 센서는 오디오 검출기(예를 들어, 마이크로폰)일 수 있다. 오디오 검출기는 음향을 캡처할 수 있고, 음향을 표시하는 데이터를 생성할 수 있다. 다른 센서는, 광 또는 다른 전자기 에너지를 검출하는 광검출기일 수 있다. 다른 예시적인 센서들은, 고도를 검출하기 위한 고도계, 온도 센서 및/또는 압력 센서를 포함할 수 있다. 또 다른 센서는 사용자 인터페이스 디바이스, 예를 들어, 버튼, 터치 스크린, 키보드, 포인팅 디바이스, 카메라 등일 수 있다. 임의의 세트의 센서들이 이용될 수 있다.
앞서 언급된 바와 같이, 올웨이즈-온 컴포넌트(16)는 컴포넌트 내의 메모리에 데이터를 버퍼링하도록 구성될 수 있다. 버퍼가 거의 풀(full)이면, 올웨이즈-온 컴포넌트(16)는 센서 데이터를 메모리(12)에 기입하기 위해 메모리 제어기(22)를 웨이크시키도록 구성될 수 있다. 일부 실시예들에서, 올웨이즈-온 컴포넌트(16)는 데이터를 필터링한 결과들을 메모리(12)에 기입하도록 구성될 수 있다. 일부 실시예들에서, 올웨이즈-온 컴포넌트(16)는, SOC(10)의 나머지가 전력 차단되는 동안 다른 프로세싱 작업들을 수행할 수 있다. 이러한 작업들이 메모리(12)에 액세스하는 범위까지, 올웨이즈-온 컴포넌트(16)는 메모리 제어기(22)를 웨이크시키도록 구성될 수 있다. 또한, 올웨이즈-온 컴포넌트(16)는 통신 패브릭(27)의 적어도 일부(즉, 올웨이즈-온 컴포넌트(16)를 메모리 제어기(22)에 접속시키는 부분)를 웨이크시키도록 구성될 수 있다.
이러한 메모리-전용 통신 모드를 이용하면, SOC(10)의 나머지는 전력 차단으로 유지되기 때문에, 올웨이즈-온 컴포넌트(16)는 비교적 적은 양의 에너지/전력을 소모하면서, 메모리(12)에 액세스할 수 있고, 메모리(12)에서 이용가능한 상당한 저장소를 이용할 수 있다. 올웨이즈-온 컴포넌트(16) 메모리 제어기(22)에 대한 프로그래밍가능 구성 데이터를 저장할 수 있어서, 올웨이즈-온 컴포넌트(16)는 전력이 복원되면 메모리 제어기(22)를 프로그래밍할 수 있다. 즉, 올웨이즈-온 컴포넌트(16)는, SOC(10)를 포함하는 디바이스의 부트 동안 운영 시스템이 메모리 제어기(22)를 프로그래밍할 방식과 유사한 방식으로 메모리 제어기(22)를 프로그래밍하도록 구성될 수 있다. 올웨이즈-온 컴포넌트(16)에 의해 저장되는 프로그래밍가능 구성 데이터는, 일 실시예에서, (올웨이즈-온 컴포넌트(16)를 제외한) SOC(10)가 가장 최근에 전력 차단되었던 때에 메모리 제어기(22)에 있던 구성 데이터일 수 있다. 다른 실시예에서, 프로그래밍가능 구성 데이터는, 메모리 제어기(22)의 임의의 이전의 구성 및/또는 메모리(12)의 임의의 구성에 대해 작용하도록 공지된 구성일 수 있다. 공지된-양호한 구성은, 예를 들어, 올웨이즈-온 컴포넌트(16)에 의한 메모리 액세스들에 대해 성능에서 허용가능한 구성일 수 있다.
올웨이즈-온 컴포넌트(16)가 가동되어 유지된 채 SOC(10)가 전력 차단된 경우, 전력 차단 시퀀스의 일부는 메모리(12)를 보유(retention) 모드에 둘 수 있다. 예를 들어, 메모리(12)의 동적 랜덤 액세스 메모리(DRAM) 실시예들의 경우, 보유 모드는 "자체-리프레쉬(self-refresh)" 모드일 수 있다. 보유 모드에서, 메모리(12)는, 그 모드가 변경될 때까지 외부적으로 액세스가능하지 않을 수 있다. 그러나, 메모리(12)의 콘텐츠는 보존될 수 있다. 예를 들어, 자체-리프레쉬 모드에서, DRAM은 데이터를 보유하기 위해 필요한 주기적인 리프레쉬들을 수행할 수 있다(이것은, 메모리 제어기(22)가 전력 온인 경우, 통상적으로 메모리 제어기(22)에 의해 수행된다).
일부 실시예들에서, 올웨이즈-온 컴포넌트(16)는 SOC(10)의 다른 컴포넌트들에 대한 프로그래밍가능 구성 데이터를 추가로 저장할 수 있다. 프로그래밍가능 구성 데이터는, SOC(10)의 나머지가 가장 최근에 전력 차단된 시간에 컴포넌트들의 상태를 반영할 수 있다. 올웨이즈-온 컴포넌트(16)는 프로세싱을 위해 SOC(10)를 웨이크시키도록 구성될 수 있고, 저장된 프로그래밍가능 구성 데이터를 이용하여 컴포넌트들을 리프로그래밍할 수 있다. 저장된 프로그래밍가능 구성 데이터에 기초하여 컴포넌트들에 대한 상태를 복원하는 프로세스는 재구성으로 지칭될 수 있다. 또한, 앞서 논의된 메모리 전용 통신 모드와 유사하게, 컴포넌트들에 대해 복원되는 상태는 컴포넌트의 가장 최근에 전력 차단된 상태일 수 있거나, 또는 동작을 위해 SOC(10)를 재시작하기 위해 허용가능한 성능을 갖는 공지된-양호한 상태일 수 있다. 후자의 경우, 이 상태는, 재구성이 완료된 후 더 높은 성능 상태로 수정될 수 있다.
올웨이즈-온 컴포넌트(16)의 재구성 기능을 사용하여 상태를 복원하는 것은, SOC(10)에서 전력을 복원하고, 그 다음 콜드 부트(cold boot)와 유사한 방식으로 SOC(10) 및 운영 시스템을 초기화하는 것보다 낮은 레이턴시 동작일 수 있다. 올웨이즈-온 컴포넌트(16)를 이용하지 않는 초기화 동안, 운영 시스템은, SOC(10)가 메모리(12)에 저장된 시스템 상태로 이전에 전력 차단되었고, 일부 초기화 동작들을 우회한 것을 발견하였다. 그러나, 복원의 레이턴시는 원하는 것보다 컸다. 일 실시예에 대한 추가적인 세부사항들이 아래에서 더 자세히 논의된다.
올웨이즈-온 컴포넌트(16)는 PMU(156)에 대한 PMGR(32)의 통신에 추가로, PMU(156)와 통신하도록 구성될 수 있다. PMU(156)와 올웨이즈-온 컴포넌트(16) 사이의 인터페이스는, PMGR(32)이 전력 차단된 경우 올웨이즈-온 컴포넌트(16)가 컴포넌트들(예를 들어, 메모리 제어기(22) 또는 SOC(10)의 다른 컴포넌트들)을 전력 공급하게 허용할 수 있다. 인터페이스는 또한 올웨이즈-온 컴포넌트(16)가 자기 자신의 전력 상태 또한 제어하게 허용할 수 있다.
일반적으로, 컴포넌트는 전력 온 또는 전력 오프되는 것으로 지칭될 수 있다. 컴포넌트는, 공급 전압을 수신하고 있어서 설계된 대로 동작할 수 있으면 전력 온될 수 있다. 컴포넌트가 전력 오프되면, 컴포넌트는 공급 전압을 수신하고 있지 않고 동작중이 아니다. 컴포넌트는 또한, 전력 온되면 전력 공급으로 지칭될 수 있고, 전력 오프되면 전력 차단으로 지칭될 수 있다. 컴포넌트를 전력 공급하는 것은, 전력 오프된 컴포넌트에 공급 전압을 공급하는 것을 지칭할 수 있고, 컴포넌트를 전력 차단하는 것은 컴포넌트에 대한 공급 전압의 공급을 종료시키는 것을 지칭할 수 있다. 유사하게, 임의의 서브컴포넌트 및/또는 SOC(10)는 전체적으로 전력 공급/차단 등이 되는 것으로 지칭될 수 있다. 컴포넌트는, SOC(10) 내에서 특정 기능을 제공하고 SOC(10)의 나머지에 대한 특정 인터페이스를 갖는 미리 정의된 회로 블록일 수 있다. 따라서, 올웨이즈-온 컴포넌트(16), 주변장치들(18A-18B) 및 CPU 컴플렉스(14), 메모리 제어기(22) 및 PMGR(32) 각각은 컴포넌트의 예들일 수 있다.
컴포넌트는, 전력 공급되고 클럭 게이팅되지(clock gated) 않으면 활성일 수 있다. 따라서, 예를 들어, CPU 컴플렉스(14)의 프로세서는 활성이면, 명령어 실행을 위해 이용가능할 수 있다. 컴포넌트는, 전력 오프되거나, 명령어들이 실행될 수 있기 전에 상당한 지연을 겪게 될 수 있는 다른 저전력 상태인 경우에, 비활성일 수 있다. 예를 들어, 컴포넌트가 위상 고정 루프(PLL)의 리셋 또는 재잠금을 요구하는 경우, 컴포넌트는 가동 상태로 유지되더라도 비활성일 수 있다. 컴포넌트는 또한 클럭 게이팅되면 비활성일 수 있다. 클럭 게이팅은, 컴포넌트의 디지털 회로에 대한 클럭이 일시적으로 "턴 오프되어", 클러킹되는(clocked) 저장 디바이스들, 예를 들어, 플롭(flop)들, 레지스터들 등의 디지털 회로로부터의 상태가 캡처되는 것이 방지되는 기술들을 지칭할 수 있다.
앞서 언급된 바와 같이, CPU 컴플렉스(14)는 SOC(10)의 CPU로서 기능할 수 있는 하나 이상의 프로세서들(30)을 포함할 수 있다. 시스템의 CPU는 시스템의 메인 제어 소프트웨어, 예를 들어 운영 시스템을 실행하는 프로세서(들)를 포함한다. 일반적으로, 사용 중인 CPU에 의해 실행되는 소프트웨어는 시스템의 다른 컴포넌트들을 제어하여 시스템의 원하는 기능성을 실현할 수 있다. 프로세서들은 또한 다른 소프트웨어, 예를 들어, 애플리케이션 프로그램들을 실행할 수 있다. 애플리케이션 프로그램들은 사용자 기능을 제공할 수 있고, 저-레벨 디바이스 제어, 스케줄링, 메모리 관리 등을 위해 운영 시스템에 의존할 수 있다. 따라서, 프로세서들은 또한 애플리케이션 프로세서들로 지칭될 수 있다. CPU 컴플렉스(14)는 다른 하드웨어, 예를 들어, L2 캐시 및/또는 시스템의 다른 컴포넌트들에 대한 인터페이스(예를 들어, 통신 패브릭(27)에 대한 인터페이스)를 더 포함할 수 있다.
동작 포인트는 CPU 컴플렉스(14), 올웨이즈-온 컴포넌트(16), SOC(10)의 다른 컴포넌트들 등에 대한 동작 주파수와 전력 공급 전압 크기의 조합을 지칭할 수 있다. 동작 주파수는, 컴포넌트를 클러킹하는 클럭의 주파수일 수 있다. 동작 주파수는 또한 클럭 주파수 또는 간단히 주파수로 지칭될 수 있다. 동작 포인트는 또한 동작 상태 또는 전력 상태로 지칭될 수 있다. 동작 포인트는, 올웨이즈-온 컴포넌트(16)에 저장될 수 있고, 재구성이 발생하는 경우 컴포넌트들로 리프로그래밍될 수 있는 프로그래밍가능 구성 데이터의 일부일 수 있다.
일반적으로, 프로세서는 프로세서에 의해 구현된 명령어 세트 아키텍처에 정의된 명령어들을 실행하도록 구성된 임의의 회로 및/또는 마이크로코드를 포함할 수 있다. 프로세서들은 시스템 온 칩(SOC(10)) 또는 다른 레벨들의 통합부로서 다른 컴포넌트들과 함께 집적 회로 상에서 구현된 프로세서 코어들을 망라할 수 있다. 프로세서들은 별개의 마이크로프로세서들, 프로세서 코어들 및/또는 멀티칩 모듈 구현부들 내에 집적화된 마이크로프로세서들, 다수의 집적 회로들로서 구현된 프로세서들, 기타 등을 더 망라할 수 있다.
메모리 제어기(22)는 일반적으로, SOC(10)의 다른 컴포넌트들로부터 메모리 동작들을 수신하고, 메모리(12)에 액세스하여 메모리 동작들을 완료하기 위한 회로를 포함할 수 있다. 메모리 제어기(22)는 임의의 유형의 메모리(12)에 액세스하도록 구성될 수 있다. 예를 들어, 메모리(12)는 SRAM(static random access memory), DRAM(dynamic RAM), 예를 들어, 더블 데이터 레이트(DDR, DDR2, DDR3, DDR4 등) DRAM을 포함하는 SDRAM(synchronous DRAM)일 수 있다. 저전력/모바일 버전들의 DDR DRAM(예를 들어, LPDDR, mDDR 등)이 지원될 수 있다. 메모리 제어기(22)는, 동작들을 지시하고(그리고 잠재적으로 재지시하고) 동작들을 메모리(12)에 제시하는, 메모리 동작들을 위한 큐(queue)들을 포함할 수 있다. 메모리 제어기(22)는 메모리로의 기입을 기다리는 기입 데이터 및 메모리 동작의 소스로의 복귀를 기다리는 판독 데이터를 저장하는 데이터 버퍼들을 추가로 포함할 수 있다. 일부 실시예들에서, 메모리 제어기(22)는 최근에 액세스된 메모리 데이터를 저장하는 메모리 캐시를 포함할 수 있다. SOC 구현예들에서, 예를 들어, 메모리 캐시는, 곧 다시 액세스될 것으로 예상되는 경우에 메모리(12)로부터의 데이터의 재-액세스를 피함으로써, SOC에서의 전력 소모를 감소시킬 수 있다. 일부 경우들에서, 메모리 캐시는 또한, 소정의 컴포넌트들만을 서빙하는 전용 캐시(private cache)들, 예를 들어, L2 캐시 또는 프로세서들 내의 캐시들과는 반대로, 시스템 캐시로서 지칭될 수 있다. 추가적으로, 일부 실시예들에서, 시스템 캐시는 메모리 제어기(22) 내에 위치될 필요가 없다.
주변장치들(18A, 18B)은 SOC(10)에 포함된 추가 하드웨어 기능성의 임의의 세트일 수 있다. 예를 들어, 주변장치들(18A-18B)은 비디오 주변장치들, 예를 들어, 카메라 또는 다른 이미지 센서로부터의 이미지 캡처 데이터를 프로세싱하도록 구성된 이미지 신호 프로세서, 하나 이상의 디스플레이 디바이스들 상에 비디오 데이터를 디스플레이하도록 구성된 디스플레이 제어기들, 그래픽 프로세싱 유닛(GPU)들, 비디오 인코더/디코더들, 스케일러(scaler)들, 로테이터(rotator)들, 블렌더(blender)들, 기타 등을 포함할 수 있다. 주변장치들은 오디오 주변장치들, 예를 들어, 마이크로폰들, 스피커들, 마이크로폰들 및 스피커들에 대한 인터페이스들, 오디오 프로세서들, 디지털 신호 프로세서들, 믹서들, 기타 등을 포함할 수 있다. 주변장치들은, 인터페이스들, 예를 들어, 범용 직렬 버스(USB), PCI 익스프레스(PCIe)를 포함한 주변장치 컴포넌트 상호연결부(PCI), 직렬 및 병렬 포트들, 기타 등을 포함한 SOC(10) 외부의 다양한 인터페이스들에 대한 인터페이스 제어기들(예컨대, 주변장치(18B))을 포함할 수 있다. 주변장치들은 네트워킹 주변장치들, 예를 들어, 미디어 액세스 제어기(MAC)들을 포함할 수 있다. 하드웨어의 임의의 세트가 포함될 수 있다.
통신 패브릭(27)은 SOC(10)의 컴포넌트들 간의 통신을 위한 임의의 통신 상호연결부 및 프로토콜일 수 있다. 통신 패브릭(27)은 공유 버스 구성, 크로스 바(cross bar) 구성, 및 브릿지를 이용한 계층적 버스를 포함하는 버스-기반일 수 있다. 또한, 통신 패브릭(27)은 패킷-기반일 수 있고, 브릿지를 이용한 계층, 크로스 바, 포인트-투-포인트(point-to-point), 또는 다른 상호연결부일 수 있다.
PMGR(32)은 PMU(156)로부터 요청된 공급 전압 크기들을 제어하도록 구성될 수 있다. SOC(10)를 위해 PMU(156)에 의해 생성된 다수의 공급 전압들이 있을 수 있다. 예를 들어, VCPU 및 VSOC가 도 1에 도시되어 있다. VCPU는 CPU 컴플렉스(14)에 대한 공급 전압일 수 있다. VSOC는 일반적으로 CPU 컴플렉스(14) 외부의 SOC(10)의 나머지에 대한 공급 전압일 수 있다. 예를 들어, 다른 컴포넌트들에 대한 VSOC에 추가로, 메모리 제어기 전력 도메인 및 올웨이즈-온 전력 도메인을 위한 별개의 공급 전압들이 존재할 수 있다. 다른 실시예에서, VSOC는 메모리 제어기(22), 올웨이즈-온 컴포넌트(16) 및 SOC(10)의 다른 컴포넌트들을 서빙할 수 있고, 전력 도메인들에 기초하여 전력 게이팅이 이용될 수 있다. 일부 실시예들에서, SOC(10)의 나머지에 대한 다수의 공급 전압들이 있을 수 있다. 일부 실시예들에서, CPU 컴플렉스(14) 및/또는 SOC(10) 내의 다양한 메모리 어레이들에 대한 메모리 공급 전압이 또한 있을 수 있다. 메모리 공급 전압은 로직 회로에 공급되는 전압(예를 들어, VCPU 또는 VSOC)과 함께 사용될 수 있으며, 이는 강력한 메모리 동작을 보장하기 위해 요구되는 것보다 더 낮은 전압 크기를 가질 수 있다. PMGR(32)은 직접적인 소프트웨어의 제어(예를 들어 소프트웨어가 컴포넌트들의 전력 공급 및/또는 전력 차단을 직접 요청할 수 있음)를 받을 수 있고/있거나 SOC(10)를 모니터링하고 다양한 컴포넌트들이 언제 전력 공급되거나 전력 차단될지 결정하도록 구성될 수 있다.
PMU(156)는 일반적으로, 공급 전압들을 생성하고 시스템의 다른 컴포넌트들, 예를 들어, SOC(10), 메모리(12)(도 1의 VMEM), 다양한 오프-칩 주변장치 컴포넌트들(도 1에는 미도시), 예를 들어, 디스플레이 디바이스들, 이미지 센서들, 사용자 인터페이스 디바이스들 등에 이러한 공급 전압들을 제공하기 위한 회로를 포함할 수 있다. 따라서, PMU(156)는 프로그래밍가능 전압 레귤레이터들, SOC(10)와 인터페이싱하기 위한 로직 및 더 상세하게는 전압 요청들을 수신하기 위한 PMGR(32) 등을 포함할 수 있다.
SOC(10)의 컴포넌트들의 수(및 CPU 컴플렉스(14) 내에서와 같은, 도 1에 도시된 컴포넌트들에 대한 서브컴포넌트들의 수)는 실시예마다 다를 수 있다는 것에 유의한다. 도 1에 나타난 수보다 각 컴포넌트/서브컴포넌트가 많거나 적을 수 있다.
이제, 도 2를 참조하면, 올웨이즈-온 컴포넌트(16)의 일 실시예의 블록도가 도시되어 있다. 예시된 실시예에서, 올웨이즈-온 컴포넌트(16)는 프로세서(40), 메모리(42), 센서 캡처 모듈(SCM)(44), SOC 재구성 회로(46), 로컬 PMGR(48) 및 상호접속부(50)를 포함할 수 있다. 프로세서(40), 메모리(42), SCM(44), SOC 재구성 회로(46) 및 로컬 PMGR(48)은 상호접속부(50)에 커플링된다. SCM(44)은 또한 센서 캡처 유닛 또는 센서 캡처 회로로 지칭될 수 있다.
센서 캡처 모듈(44)은, SOC(10)가 시스템에 포함되는 경우 센서들(20)에 커플링될 수 있고, 센서들(20)로부터의 데이터를 캡처하도록 구성될 수 있다. 예시된 실시예에서, 센서 캡처 모듈(44)은 캡처된 센서 데이터를 메모리(42)에 기입하도록 구성될 수 있다(SCM 데이터(52)). 메모리(42)는 예를 들어 SRAM일 수 있다. 그러나, 다른 실시예들에서는 임의의 유형의 메모리가 사용될 수 있다.
SCM 데이터(52)는, 캡처된 센서 데이터를 저장하기 위해 올웨이즈-온 컴포넌트(16)에 의해 미리 할당되는 위치들에 저장될 수 있다. 위치들이 소모됨에 따라, 캡처된 데이터를 저장하기 위한 이용가능한 메모리의 양은 감소된다. 센서 캡처 모듈(44)은 워터마크 또는 할당 메모리 영역의 충만도에 대한 다른 표시(일반적으로, 예를 들어, "임계치")로 프로그래밍될 수 있고, 센서 캡처 모듈(44)은 캡처된 센서 데이터를 메모리(12)에 기입하기 위해 메모리 제어기(22)를 웨이크시키도록 구성될 수 있다. 대안적으로, 프로세서(40)는 캡처된 센서 데이터를 메모리(12)에 기입하도록 구성될 수 있다. 이러한 경우, 센서 캡처 모듈(44)은 프로세서(40)를 웨이크시키도록 구성될 수 있다.
프로세서(40)는 메모리(42)에 저장된 코드(프로세서 코드/데이터(54))를 실행하도록 구성될 수 있다. 코드는, 실행되는 경우 프로세서(40)로 하여금 다양한 기능들을 구현하게 하는 일련의 명령어들을 포함할 수 있다. 예를 들어, 코드는, 앞서 논의된 바와 같이 SCM 데이터(52)를 필터링하기 위해 프로세서(40)에 의해 실행될 수 있는 필터 코드를 포함할 수 있다. SCM 데이터(52)에서 원하는 패턴 또는 다른 데이터 속성(들)을 검출하는 것에 대한 응답으로, 프로세서(40)는 메모리(12)를 업데이트하고 그리고/또는 SOC(10)를 웨이크시키기 위해 메모리 제어기(22)를 웨이크시키도록 구성될 수 있다.
프로세서 코드/데이터(54)는 SOC(10)를 포함하는 디바이스의 부트 시에 초기화될 수 있다. 코드는 SOC(10) 상의 비휘발성 메모리에 또는 디바이스의 다른 곳에 저장될 수 있고, 예를 들어, 메모리(42)로 로딩될 수 있다. 판독-전용 메모리(ROM)와 같은 로컬 비휘발성 메모리가 또한 일부 실시예들에서 사용될 수 있다.
실시예에서, 프로세서(40)는 CPU 컴플렉스(14)의 CPU 프로세서들(30)보다 더 작고 더 큰 전력 효율의 프로세서일 수 있다. 따라서, 프로세서(40)는 활성화되는 경우 CPU 프로세서들(30)이 소모하는 것보다 더 적은 전력을 소모할 수 있다. 실시예에서, CPU 프로세서들(30)보다 더 적은 프로세서들(40)이 또한 존재할 수 있다.
SOC 재구성 회로(46)는, 메모리 제어기(22) 및 SOC(10)의 다른 컴포넌트들에 대한 프로그래밍가능 구성 데이터(56)를 저장하고, 전력 오프된 상태로부터 컴포넌트들을 다시 전력 공급하는 것에 대한 응답으로 다양한 컴포넌트들을 리프로그래밍하도록 구성될 수 있다. 대안적으로, 프로그래밍가능 구성 데이터(56)는 메모리(42)에, 또는 메모리(42)와 SOC 재구성 회로(46)의 조합에 저장될 수 있다. 구성 데이터(56)는, 예를 들어, 대응하는 컴포넌트를 프로그래밍하는 것의 일부로서, CPU 프로세서들(30)에 의해 회로(46)에 기입될 수 있다. 즉, (예를 들어, 디바이스의 부트의 일부로서 및/또는 구성이 변경되는 다른 시간들에 운영 시스템 소프트웨어를 실행하는) CPU 프로세서들(30)은 SOC 재구성 회로(46)에 데이터를 기입할 수 있다. 대안적으로, 일부 실시예들에서, SOC 재구성 회로(46)는, 구성 상태를 모니터링하고 섀도우잉(shadow)하는 하드웨어를 가질 수 있다. 일부 실시예들에서, 프로그래밍가능 구성 데이터(56)의 적어도 일부는 미리 결정될 수 있고, 메모리(42) 및/또는 SOC 재구성 회로(46)에 기입되기 보다는 ROM과 같은 비휘발성 메모리에 저장될 수 있다.
실시예에서, SOC 재구성 회로(46)는, 프로그래밍가능 구성 데이터(56)를 프로세싱하고, SOC(10)가 다시 전력 공급된 후 SOC(10)의 대응하는 컴포넌트들에 데이터를 기입하도록 구성되는 로직 회로를 포함할 수 있다. 프로그래밍가능 구성 데이터(56)는 기입될 일련의 레지스터 어드레스들 및 이러한 레지스터들에 기입할 데이터를 포함할 수 있다. 일부 실시예들에서, 프로그래밍가능 구성 데이터(56)는, 예를 들어, 다양한 기입들에 의해 수행된 초기화가 완료된 것 및/또는 대응하는 상태들이 실제로 컴포넌트에 있는 것을 표시하는 예상되는 값을 폴링(polling)하는 것과 같이, 레지스터들을 판독하기 위한 판독 커맨드들을 더 포함할 수 있다. 예상되는 값은 판독된 전체 값일 수 있거나, 또는 값의 일부일 수 있다(예를 들어, 예상되는 값은 비교 전에 판독 값에 적용될 마스크 및 값을 포함할 수 있다). 일부 실시예들에서, 프로그래밍가능 구성 데이터(56)는, 레지스터들을 판독하고, 판독 데이터의 일부를 수정하고, 수정된 데이터를 다시 레지스터에 기입하기 위한 판독-수정-기입 커맨드들을 더 포함할 수 있다. 예를 들어, 레지스터 값의 어느 부분이 업데이트될지를 결정하기 위해 제2 마스크(mask)가 사용될 수 있다. 제2 마스크에 의해 마스킹되는 레지스터의 일부는, 그 값이 레지스터에 기입되는 경우 업데이트되지 않을 수 있다.
다른 실시예에서, SOC 재구성 회로(46)는 다른 프로세서 및 그 프로세서에 대한 코드를 저장하는 대응하는 메모리를 포함할 수 있다(또는 코드가 또한 메모리(42)에 저장될 수 있다). 코드는 프로세서에 의해 실행되는 경우 프로세서로 하여금, 프로그래밍가능 구성 데이터(56)로 SOC(10)의 다양한 컴포넌트들을 구성하게 할 수 있다. 코드는 코드 자체의 구조의 일부로서 앞서 설명된 폴링 특징들을 구현할 수 있거나, 또는 프로그래밍가능 구성 데이터(56)가 상기 논의와 유사하게 폴링할 어드레스 및 예상되는 값을 저장할 수 있다. 다른 실시예에서, 프로세서(40)는 SOC(10)의 컴포넌트들을 리프로그래밍하기 위한 소프트웨어를 실행할 수 있다.
프로그래밍가능 구성 데이터(56)는 메모리 제어기(22)에 대한 데이터를 포함할 수 있고, SOC(10)의 다른 컴포넌트들에 대한 데이터를 분리시킬 수 있고, 프로세서(40)가 전력 공급되는 경우 이를 재구성하기 위한 데이터를 분리시킬 수 있다. SOC(10)의 나머지가 전력 차단된 동안 메모리 제어기(22)를 전력 공급하는 경우, 메모리 제어기(22)에 대한 데이터가 프로세싱될 수 있다. 데이터는 메모리 제어기(22)에 대한 프로그래밍가능 구성 데이터를 포함할 수 있다. 데이터는 실시예에서, 추가적인 프로그래밍가능 구성 데이터를 더 포함할 수 있다. 예를 들어, 통신 패브릭(27)에 대한 프로그래밍가능 구성 데이터가 포함될 수 있다. 프로그래밍가능 구성 데이터는 올웨이즈-온 컴포넌트(16)와 메모리 제어기(22) 사이의 통신에서 사용되는 어떠한 컴포넌트들에 대해서도 포함될 수 있다. SOC(10)의 나머지를 전력 공급하는 경우, 다른 컴포넌트들에 대한 데이터가 프로세싱될 수 있다. 유사하게, 프로세서(40)를 전력 공급하는 경우, 프로세서(40)에 대한 프로그래밍가능 구성 데이터가 프로세싱될 수 있다.
일부 실시예들에서, SOC 재구성 회로(46)는 SOC(10)의 전력 공급 시에 하나보다 많은 포인트에서 SOC(10)의 컴포넌트들에 프로그래밍가능 구성 데이터를 제공하도록 구성될 수 있다. 예를 들어, 일부 프로그래밍가능 구성 데이터는 전력 온으로의 전이의 시작 근처에(예를 들어, 전력 공급 전압이 안정된 직후에) 제공될 수 있고, 다른 프로그래밍가능 구성 데이터는 전력 온으로의 전이의 종료 근처에 제공될 수 있다. 또한, 일부 실시예들에서, 프로그래밍가능 구성 데이터(56)는 SOC(10)의 컴포넌트들에서 설정될 프로그래밍가능 구성의 오직 일부일 수 있다. 프로그래밍가능 구성의 나머지는 메모리(12)에 저장될 수 있다. 예를 들어, CPU 프로세서들(30) 상에서 실행되는 운영 시스템 소프트웨어는 전력 차단 전에 메모리(12)에서 프로그래밍가능 구성을 캡처할 수 있다. 메모리(12)에 저장된 프로그래밍가능 구성 데이터의 복원은, CPU 프로세서들(30)이 리셋으로부터 해제되고 다시 실행을 시작한 후, SOC 재구성 회로(46), 다른 하드웨어 및/또는 운영 시스템 소프트웨어에 의해 수행될 수 있다.
로컬 PMGR(48)은 전체적으로 SOC(10)에 대한 도 1의 PMGR(32)과 유사한 방식으로, 올웨이즈-온 컴포넌트(16) 내의 전력 관리 기능들을 핸들링하도록 구성될 수 있다. 올웨이즈-온 컴포넌트(16)는 다수의 전력 상태들을 지원할 수 있고, 로컬 PMGR(48)은 이러한 상태들 사이의 전이들을 보조할 수 있다. 로컬 PMGR(48)은 상태 변경들을 지원할 뿐만 아니라 다양한 컴포넌트들을 웨이크 업시키거나 수면시키는 것의 일부로서 SOC(10)의 다양한 컴포넌트들로의 공급 전압들의 제공을 관리하기 위해 PMU(156)와 통신하도록 구성될 수 있다.
상호작용부(50)는 도 2에 도시된 다양한 서브컴포넌트들 사이에서 통신들을 송신할 뿐만 아니라 SOC(10)의 다른 컴포넌트들과 통신 패브릭(27)을 통해 통신하기 위한 임의의 상호접속부를 포함할 수 있다. 상호접속부는 다양한 실시예들에서 원하는 대로, 도 1에 대해 앞서 논의된 통신 패브릭(27)의 예들 중 임의의 예를 포함할 수 있다.
이제, 도 3을 참조하면, 올웨이즈-온 컴포넌트(16)의 일 실시예에서 구현될 수 있는 상태 머신의 일 실시예의 블록도가 도시되어 있다. 예시된 실시예에서, 상태는 대기 상태(60), 캡처 상태(62), 프로세스 상태(64), 메모리 액세스 상태(66) 및 SOC 온 상태(68)를 포함한다. 상태들 사이의 전이들은 실선들로 예시되고, 소정의 추가적인 가능한 전이들은 점선들로 표시된다. 도면을 모호하게 하는 것을 피하기 위해 도 3에 모든 가능한 전이들이 예시된 것은 아니다.
도 3에 예시된 상태들은 상대적인 전력/에너지 소모의 순서일 수 있고, 대기 상태(60)는 최저 전력 상태이고, SOC 온 상태(68)는 최고 전력 상태이다. 대기 상태(60)에서, 올웨이즈-온 컴포넌트(16)의 서브컴포넌트들은 전력 게이팅되거나 클럭 게이팅될 수 있다. 예를 들어, 실시예에서, 프로세서(40)는 전력 게이팅될 수 있고, SCM(44)은 클럭 게이팅될 수 있다. 메모리(42)는 보유 모드일 수 있거나 통상적으로 가동될 수 있다. SOC 재구성 회로(46) 및 로컬 PMGR(48)은 클럭 게이팅될 수 있다. 클럭 게이팅 및 전력 게이팅의 임의의 조합이 서브컴포넌트들 사이에서 사용될 수 있다.
대기 상태(60)에서, 올웨이즈-온 컴포넌트(16)는 본질적으로 유휴일 수 있다. 상태 머신은, 센서 데이터가 센서들(20)로부터 SCM(44)에 의해 캡처될 준비가 된 경우 대기 상태(60)로부터 캡처 상태(62)로 전이할 수 있다. 일 실시예에서, 올웨이즈-온 컴포넌트(16) 내의 타이머(예를 들어, 감시(watchdog) 타이머)(도 2에는 명시적으로 도시되지 않음)가 대기 상태(60)로부터 캡처 상태(62)로의 전이를 주기적으로 야기할 수 있다. 이 경우 캡처할 센서 데이터가 존재할 수도 있고 존재하지 않을 수도 있다. 일 실시예에서, 센서들은, 센서 데이터가 캡처를 위해 이용가능함을 표시하는 신호를 올웨이즈-온 컴포넌트(16)에 어서팅할(assert) 수 있다. 어느 경우이든, 캡처 상태(62)로의 전이가 수행될 수 있다.
예시된 실시예에서, 상태 머신은 또한 대기 상태(60)로부터 프로세스 상태(64)로 직접 전이할 수 있다. 이러한 전이는, (프로세서(40)로부터의) 프로세서 지원이 요구되는 것을 센서가 올웨이즈-온 컴포넌트(16)에 시그널링하도록 구성되는 경우 지원될 수 있다. 신호를 구현하는 실시예들에 대해, 신호는 센서 데이터가 이용가능함을 표시하기 위한 신호와는 별개일 수 있다. 이 전이는 예를 들어, 센서 데이터의 신속한 프로세싱(예를 들어, 필터링)을 지원할 수 있거나, 또는 SOC(10)의 신속한 웨이크업이 요구되는 경우(이는 프로세서(40) 상에서 실행되는 소프트웨어에 의해 관리될 수 있음) 사용될 수 있다. 예를 들어, 디바이스와 상호작용하려는 사용자의 소망을 표시하는 버튼 또는 다른 사용자 인터페이스 디바이스가, SOC(10)의 신속한 웨이크업을 야기할 이벤트일 수 있다. 프로세서(40)가 대기 상태(60)에서 전력 게이팅되면, 대기 상태(60)로부터 프로세스 상태(64)로의 전이는, 프로세서(40)를 전력 공급하는 것, 및 프로세서(40)를 리셋 및 초기화하는 것을 포함할 수 있다. 다른 실시예들에서, 대기 상태(60)로부터의 전이는 캡처 상태(62)를 통과할 수 있지만 캡처 상태(62)에 유지되지는 않을 수 있다. 이러한 구현은 프로세서(40)에 대한 다소 더 긴 웨이크업 시간에 의한 복잡도를 감소시킬 수 있다.
캡처 상태(62)에서, SCM(44)은 활성일 수 있고, 센서들(20) 중 하나 이상으로부터의 데이터를 샘플링하고 있을 수 있다. SCM(44)은 캡처된 센서 데이터를 메모리(42)에 기입할 수 있다(SCM 데이터(52)). SCM(44)은 또한 캡처된 센서 데이터와 연관된 타임스탬프(timestamp), 센서 식별자 등과 같은 추가적인 데이터를 메모리(42)에 기입할 수 있다(SCM 데이터(52)). 임의의 원하는 추가적인 데이터가 메모리(42)에 저장될 수 있다. 일 실시예에서, 타임스탬프는, 센서(20)에 의해 센서 데이터가 감지된 시간일 수 있고, SCM(44)에 의해 데이터가 캡처되기 전일 수 있다. 대안적으로, 타임스탬프는 SCM(44)에 의한 센서 데이터 캡처 시간일 수 있다.
SCM(44)은 하나 이상의 임계치들을 검출할 수 있고, 이 임계치에서 SCM(44)은 데이터를 프로세싱하기 위해 프로세서(40)를 웨이크시키도록 구성될 수 있다. 임계치들은, 예를 들어, 메모리(42)의 SCM 데이터(52)의 상대적인 충만도, 취해진 센서 샘플들의 수, 제1 샘플 이후의 경과 시간, 샘플들에 의해 트리거링되지 않는 웨이크업 타이머, 에러 검출 등을 포함할 수 있다. 하나 이상의 임계치들의 임의의 세트가 사용될 수 있고, 상이한 센서들에 대해 상이한 임계치들이 사용될 수 있다. 임계치에 도달되면, 상태 머신은 캡처 상태(62)로부터 프로세스 상태(64)로 전이할 수 있다. 대안적으로, 센서 데이터 캡처가 완료되면, 상태 머신은 캡처 상태(62)로부터 대기 상태(60)로 전이할 수 있다.
프로세스 상태(64)에서, 프로세서(40)는 활성일 수 있고 메모리(42)로부터의(또는 존재한다면 프로세서(40)의 캐시로부터의) 코드를 실행하고 있을 수 있다. 코드는, 예를 들어, 필터 코드를 포함할 수 있다. 프로세스 상태(64) 동안, SCM(44)은 추가적인 센서 데이터를 캡처하기 위해 주기적으로 활성일 수 있거나, 프로세스 상태(64)에서 연속적으로 활성일 수 있다. 프로세서(40) 상에서 실행되는 코드는, 적어도 일시적으로 완료된 것을 결정할 수 있고, 다시 캡처 상태(62)로의 전이를 야기할 수 있다. 대안적으로, 대기 상태(60)로 직접 전이될 수 있다(예를 들어, SCM(44)이 비활성인 경우).
코드는 또한 프로세스 상태(64)에서 메모리(12)와의 통신이 요구된다고 결정할 수 있다. 예를 들어, 메모리(12)와의 통신은 메모리(12)의 더 큰 이용가능한 저장 공간을 이용하기 위해, 메모리(42)로부터의 캡처된 센서 데이터를 메모리(12)에 기입하기 위해 사용될 수 있다. 일부 실시예들에서, 메모리(12)는 또한 메모리(42)에 연속적으로 저장되지 않을 수 있는, 프로세서(40)에 의해 실행가능한 추가적인 코드(예를 들어, 추가적인 필터링 알고리즘들)를 저장할 수 있다. 추가적인 코드는, 메모리(12)와의 통신이 설정된 후 프로세서(40)에 의해 실행될 수 있다. 예를 들어, 추가적인 코드는 메모리(12)로부터 메모리(42)에 페치(fetch)될 수 있고 그리고/또는 프로세서(40)에 의해 캐시될 수 있다. 데이터는, 프로세서(40)가 원하는 패턴 또는 캡처된 센서 데이터의 다른 양태를 검출하는 것에 대한 응답으로 메모리(42)로부터 메모리(12)로 기입될 수 있고, CPU 컴플렉스(14)의 CPU 프로세서들(30)에 의한 추가적인 프로세싱이 보장될 수 있다. 데이터가 메모리(12)에 기입되어, CPU 프로세서들(30)이 이에 액세스할 수 있다. 메모리(12)와의 통신이 요구되면, 상태 머신은 메모리 액세스 상태(66)로 전이할 수 있다. 전이는 메모리 제어기(22)의 상태 뿐만 아니라 올웨이즈-온 컴포넌트(16)로부터 메모리 제어기(22)로의 통신 경로를 프로그래밍하기 위한 SOC 재구성 회로(46)에 의한 동작을 포함할 수 있다. 일부 실시예들에서, 전체 통신 패브릭(27)이 활성화될 수 있다. 다른 실시예들에서, 오직 메모리 제어기(22)와 올웨이즈-온 컴포넌트(16) 사이의 통신에 수반되는 통신 패브릭(27)의 부분만이 활성화될 수 있다. 메모리(12)는 또한 자체 리프레쉬될 수 있다. 실시예에서, 로컬 PMGR(48)이 또한 전이에 수반되어, 메모리 제어기 공급 전압이 PMU(156)에 의해 관리되면 메모리 제어기(22)의 전력 공급을 요청할 수 있다.
메모리 액세스 상태(66)에서, 메모리 제어기(22)는 활성일 수 있고, 올웨이즈-온 컴포넌트(16)는 메모리(12)에 액세스할 수 있다. 올웨이즈-온 컴포넌트(16)(및 더 상세하게는, 실시예에서 프로세서(40))는 메모리(12)에 대한 판독 및 기입 동작들을 생성하도록 구성될 수 있고, 이러한 동작들은 상호접속부(50) 및 통신 패브릭(27)을 통해 메모리 제어기(22)로 전달될 수 있다. 데이터는 유사한 방식으로 메모리 제어기(22)에 의해 (판독들을 위해) 복귀되거나 메모리 제어기(22)에 의해 (기입들을 위해) 수신될 수 있다.
프로세서(40)는, 메모리(12)에 액세스할 필요성이 종료되었다고 결정할 수 있고, 다시 프로세스 상태(64)로의 전이를 야기할 수 있다. 전이는 메모리(12)를 자체 리프레쉬 모드로 복귀시키는 것 및 메모리 제어기(22) 및 통신 패브릭(27)을 전력 차단하는 것을 포함할 수 있다.
프로세서(40)는 또한 SOC(10)가 (예를 들어, 프로세싱을 CPU 컴플렉스(14)로 핸드오프하기 위해) 어웨이큰되는 것으로 결정할 수 있다. 상태 머신은 메모리 액세스 상태(66)로부터 SOC 온 상태(68)로 전이할 수 있다. 전이는 로컬 PMGR(48)이 PMU(156)로부터 SOC(10)에 대한 전력 공급을 요청하는 것을 포함할 수 있고, SOC 재구성 회로(46)가 구성 데이터(56)로부터 다양한 컴포넌트들을 프로그래밍하는 것을 포함할 수 있다. 일 실시예에서, 프로세스 상태(64)로부터 SOC 온 상태(68)로의 직접적인 전이가 지원될 수 있다. 이러한 전이에서, 메모리 제어기(22)의 전력 공급 및 자체 리프레쉬로부터 메모리(12)의 제거가 또한 수행될 수 있다. 대안적으로, 프로세서(40)는 SOC 온 상태(68)로의 전이에 대한 소망을 검출할 수 있지만 전이를 수행하기 위해 메모리 액세스 상태(66)를 통과할 수 있다.
SOC 온 상태(68)로부터, SOC(10)(예를 들어, CPU 프로세서들(30) 상에서 실행되는 소프트웨어 및/또는 PMGR(32))는 SOC(10)가 더 낮은 전력 상태로 전이할 것이라고 결정할 수 있다. 일 실시예에서, 소프트웨어는, 메모리(12)가 자체 리프레쉬에 배치되고 SOC(10) 컴포넌트들이 전력 차단되기 전에, 구성 데이터(56)에 의해 또한 표현되는 상태를 포함하는 다양한 시스템 상태가 메모리(12)에 기입되는 "RAM에 대한 보류" 동작을 수행할 수 있다. 따라서, SOC 온 상태(68)로의 복귀 시에, 구성 데이터(56)로부터 상태의 리프로그래밍이 수행될 수 있고, 그 다음, 소프트웨어는 메모리(12)에 저장된 데이터에 기초하여 실행을 재개할 수 있다. 전이는, 예를 들어, 올웨이즈-온 컴포넌트(16)가 포함되지 않은 경우에 비해 비교적 신속할 수 있다. 이러한 경우, 소프트웨어는 통상적인 콜드 부트 프로세스를 시작할 수 있다. 프로세스의 어떠한 포인트에서, 소프트웨어는, RAM에 대한 보류가 발생했음을 인식할 수 있지만, 프로세스의 이러한 포인트에서 일부 불필요한 초기화 프로세싱이 이미 수행되었다.
일반적으로, 상태 머신이 또한 더 높은 전력 상태들 중 임의의 상태에 있는 동안 더 낮은 전력 상태들에서 수행되는 동작들이 또한 수행될 수 있다. 예를 들어, 상태 머신이 프로세스 상태(64), 메모리 액세스 상태(66) 및 SOC 온 상태(68)에 있는 동안 센서 데이터 캡처가 또한 수행될 수 있다(예를 들어, 상태 머신이 다른 상태들 중 임의의 상태에 있는 동안 SCM(44)이 데이터를 캡처하게 하는 트리거링들 중 하나가 발생한 경우). 유사하게, 프로세서(40)는 프로세스 상태(64), 메모리 액세스 상태(66) 및 SOC 온 상태(68) 중 임의의 상태에서 활성일 수 있고, 따라서 이러한 상태들 중 임의의 상태에서 데이터를 프로세싱할 수 있다.
SOC(10)가 셧 다운되면, 상태 머신은 SOC 온 상태(68)로부터 메모리 액세스 상태(66)로 복귀할 수 있다(그리고 올웨이즈-온 컴포넌트(16)에서의 다른 활동에 기초하여 더 낮은 상태들로 전이할 수 있다). 대안적으로, SOC 온 상태(68)로부터 상태들(60, 62, 64 또는 66) 중 임의의 상태로의 직접적인 전이는, 전이가 발생하는 시간에 올웨이즈-온 컴포넌트(16)에서의 현재 활동에 기초하여 수행될 수 있다.
이제 도 4을 참조하면, 다른 상태 머신의 블록도가 도시된다. 도 4의 상태 머신은 도 3의 상태 머신과 관련하여 구현될 수 있다. 예시된 실시예에서, 상태 머신은 오프 상태(70), SOC 온 상태(72), AO + 메모리 상태(74), AO 상태(76) 및 AO 없음 상태(78)를 포함한다. 이 문맥에서 AO는 올웨이즈-온에 대한 두문자어일 수 있다.
오프 상태(70)는, SOC(10)를 포함하는 디바이스가 완전히 오프인 경우와 같이 SOC(10)에 대한 모든 전력이 오프인 상태일 수 있다. 따라서, 상태 머신은 SOC(10)에 대해 전력이 턴 온되는 것에 대한 응답으로 오프 상태(70)로부터 (예를 들어, SOC 온 상태(72)로) 전이할 수 있다. SOC(10)의 리셋이 수행될 수 있고, 그 다음, SOC(10)는 부트로 진행할 수 있다. 상태 머신은 SOC(10)를 완전히 전력 오프시키는 것에 대한 응답으로 SOC 온 상태(72)로부터 오프 상태(70)로 전이할 수 있다. 전력 오프는, CPU들(30) 상에서 실행되는 소프트웨어가 메모리(12)로부터 임의의 원하는 상태를 비휘발성 메모리에 저장하고, 디바이스가 가질 수 있는 다양한 접속들(예를 들어, 무선 및/또는 유선 네트워크 접속들, 무선 폰 접속들 등)을 종료시키고, 그렇지 않으면 차례대로 셧 다운되도록 디바이스를 준비한 후 발생할 수 있다. SOC 온 상태(72)로부터 오프 상태(70)로의 전이가 도 4에 있지만, 다른 실시예들에서는 다른 상태들로부터 오프 상태(70)로의 전이들이 지원될 수 있다.
SOC 온 상태(72)에서, SOC(10)는 완전히 동작중일 수 있다. SOC(10)의 다양한 컴포넌트들은 원하는 대로 전력 온 또는 전력 오프될 수 있지만, 전체적인 SOC(10)는 일반적으로 SOC 온 상태(72)에서 활성인 것으로 보일 수 있다. SOC 온 상태(72)는 도 3의 실시예의 SOC 온 상태(68)에 대응할 수 있다.
SOC 온 상태(72)에서, CPU 컴플렉스(14) 상에서 실행되는 소프트웨어는, SOC(10)가 저전력 상태(예를 들어, 수면)로 이동해야 한다고 결정할 수 있다. 실시예에서, 소프트웨어는 SOC(10)를 전력 차단하기 전에 다양한 SOC 상태가 메모리(12)에 기입되는 "RAM에 대한 보류" 동작을 수행할 수 있다. 메모리(12)는, 메모리(12)가 메모리 콘텐츠를 유지하지만 메모리 제어기(22)에 대한 메모리 인터페이스 상에서는 활성이 아닌 "자체 리프레쉬" 모드에 배치될 수 있다. PMGR(32)은 전력 차단 커맨드들을 PMU(156)에 통신하여, 메모리 제어기(22), 패브릭(27)(또는 메모리 제어기(22) 사이에서 통신하기 위해 사용되는 그 일부) 및 올웨이즈-온 컴포넌트(16) 이외의 SOC(10)의 컴포넌트들의 전력 차단을 야기할 수 있다. 대안적으로, 로컬 PMGR(48)은 전력 차단 커맨드들을 송신할 수 있다. 상태 머신은 AO + 메모리 상태(74)로 전이할 수 있다. 일부 실시예들에서, SOC 온 상태(72)로부터 AO 상태(76)로의 전이가 또한 지원될 수 있다. 대안적으로, SOC 온 상태(72)로부터 AO 상태(76)로의 전이는 AO + 메모리 상태(74)를 통과할 수 있다. 즉, 타겟 상태가 AO 상태(76)이면, AO 상태(76)로의 전이는 AO + 메모리 상태(74)로의 전이에 후속하여 수행될 수 있다.
AO + 메모리 상태(74)에서, 메모리 제어기(22), 통신 패브릭(27)(또는 올웨이즈-온 컴포넌트(16)에 대한 부분) 및 올웨이즈 온 컴포넌트(16)는 활성일 수 있다. AO + 메모리 상태(74)는 도 3의 메모리 액세스 상태(66)에 대응할 수 있다. SOC를 웨이크 업시키는 이벤트가 검출되면, 상태 머신은 SOC 온 상태(72)(다양한 실시예들에서, PMU(156) 및/또는 SOC(10)의 전력 스위치들과의 통신을 통해 SOC(10)의 다른 컴포넌트들을 전력 공급하는 것, 및 SOC 재구성 회로(46)를 통해 및/또는 메모리(12)의 데이터로부터 컴포넌트들을 재구성하는 것)로 전이할 수 있다.
한편, 올웨이즈-온 컴포넌트(16)는, 메모리 액세스가 완료되었다고 결정할 수 있고, (메모리(12)를 자체-리프레쉬와 같은 보유 모드에 배치한 후) 메모리 제어기(22)를 비활성화시킬 수 있다. 메모리 제어기(22)는 전력 차단될 수 있고, 올웨이즈-온 컴포넌트(16)는 가동되어 유지될 수 있다. 상태 머신은 AO 상태(76)로 전이할 수 있다. AO 상태(76)는, 도 3의 프로세스 상태(64), 캡처 상태(62) 및 대기 상태(60) 중 임의의 상태에 대응할 수 있다. (예를 들어, SCM 데이터(52)의 다양한 임계치들에 도달한 것 또는 프로세서(40)를 통해 패턴들/속성들을 검출한 것에 기인하여) 메모리 액세스가 다시 바람직한 것으로 올웨이즈-온 컴포넌트(16)가 결정하면, 상태 머신은 AO + 메모리 상태(74)(메모리 제어기(22) 및 통신 패브릭(27)을 가동시키고 SOC 재구성 회로(46)를 통해 이들을 재구성하는 것)로 전이할 수 있다. 일부 실시예들에서, 메모리 제어기(22), 통신 패브릭(27) 및 SOC(10)의 다른 컴포넌트들을 전력 공급하는 것 및 SOC 재구성 회로(46)를 통해 이러한 컴포넌트들을 재구성하는 것을 포함하는, AO 상태(76)로부터 SOC 온 상태(72)로의 직접적인 전이가 지원될 수 있다.
일 실시예에서, AO 없음 상태(78)가 지원될 수 있다. AO 없음 상태(78)는, 올웨이즈-온 컴포넌트(16)가 전력 차단되지만 메모리(12)는 보유 모드에서 가동되어 유지되는 상태일 수 있다. AO 없음 상태(78)는 "종래의" RAM에 대한 보류 상태와 유사할 수 있다. AO 없음 상태(78)로부터 SOC 온 상태(72)로의 복귀는 소프트웨어가 올웨이즈-온 컴포넌트(16)를 포함한 SOC(10)의 컴포넌트들을 재구성하는 것을 포함할 수 있다. 소프트웨어는 CPU 프로세서들(30) 상에서 실행될 수 있다. 따라서, AO 없음 상태(78)로부터 SOC 온 상태(72)로의 전이는, 소프트웨어가 SOC(10)를 초기화하고 메모리(12)가 상태를 이미 저장하고 있는 것을 검출할 때까지의 기본적 부트 동작들을 포함할 수 있다.
다음으로 도 5를 참조하면, SOC(10) 상에서 (예를 들어, CPU 프로세서들(30)에 의해) 실행될 수 있는 소프트웨어 코드의 일 실시예의 동작을 예시하는 흐름도가 도시된다. 코드는 SOC(10)를 포함하는 디바이스의 부트 시에 실행될 수 있다. 코드는 유사하게, 컴포넌트의 프로그래밍가능 구성에서의 변경 동안 실행될 수 있다. 구성 변경 동안 실행되는 코드는, 다양한 실시예들에서, 부트 동안 실행되는 코드와 동일할 수 있거나 동일하지 않을 수 있다. 다른 실시예들에서, 도 5에 도시된 동작의 부분들은 하드웨어에서 구현될 수 있다. 코드는, 프로세서 상에서 실행되는 경우 도 5에 예시된 동작을 구현하는 명령어들을 포함할 수 있다. 실시예에서, 도 5에 도시된 동작을 구현하는 코드는 대응하는 컴포넌트에 대한 드라이버 코드의 일부일 수 있고, 따라서 도 5에 예시된 동작은 다수의 코드 시퀀스들에서 구현될 수 있다.
코드는 컴포넌트로 프로그래밍될 구성 파라미터들을 결정할 수 있다(블록(80)). 파라미터들은 컴포넌트 및 컴포넌트의 능력들을 발견하는 것에 기초할 수 있다. SOC(10)의 컴포넌트들은 하드웨어에서 구현되기 때문에 고정될 수 있는 한편, 코드는 일반적으로 SOC(10)의 다수의 버전들 상에서 실행되도록 의도될 수 있다. 또한, SOC(10)는 다수의 상이하게 설계된 디바이스들에 포함될 수 있다. 원하는 파라미터들은, SOC(10)가 인스턴트화되는(instantiated) 특정 디바이스에 의해 영향받을 수 있다.
코드는 컴포넌트에 구성 파라미터들을 기입하여(블록(82)), 컴포넌트를 프로그래밍할 수 있다. 구성 파라미터들이, 수면 상태 또는 다른 전력 차단 상태 이후 SOC(10)를 재가동할 때 복원될 데이터를 포함하면(판정 블록(84), "예" 레그(leg)), 코드는 구성 파라미터들을 프로그래밍가능 구성 데이터(56)에 기입하여, SOC 재구성 회로(46)에서 상태를 섀도우잉할 수 있다(블록(86)). 다른 실시예들에서, SOC 재구성 회로(46)는 원하는 상태를 자동으로 섀도우잉하도록 구성될 수 있다.
일부 실시예들에서, 구성 파라미터들 전부가 SOC(10)의 후속 전력 공급 시에 컴포넌트에 복원되는 재구성 상태의 일부일 필요는 없음을 유의한다. 예를 들어, 컴포넌트와의 기본적 통신에 요구되지 않는 다양한 임의적인 특징들을 설정하는 파라미터들은 재구성 시에 디폴트 값들로 설정될 수 있다. 이러한 임의적인 파라미터들은 컴포넌트로의 복원을 위해 CPU들(30) 상에서의 실행을 재시작한 후 메모리(12)의 RAM에 대한 보류 상태로부터 판독될 수 있다. 따라서, 이러한 파라미터들은 SOC 재구성 회로(46)에 의해 저장된 상태의 일부일 필요가 없다. 또한, 이전에 언급된 바와 같이, 일부 실시예들에서, SOC 재구성 회로(46)에 기입된 파라미터들은, SOC(10)가 전력 차단된 시간에 컴포넌트에 프로그래밍된 파라미터들과는 상이할 수 있다. 이러한 경우, SOC 재구성 회로(46)에 기입된 파라미터들은, SOC(10)의 웨이크업에 대한 응답으로 컴포넌트에 리프로그래밍될 파라미터들일 수 있다.
다음으로 도 6을 참조하면, SOC(10)의 하나 이상의 컴포넌트들이 다시 전력 공급될 것이라는 올웨이즈-온 컴포넌트(16)에서의 결정에 응답하는 올웨이즈-온 컴포넌트(16)의 일 실시예의 동작을 예시하는 흐름도가 도시된다. 예를 들어, 도 6의 동작은 메모리 제어기(22) 및 통신 패브릭(27)을 복원하기 위한 메모리 액세스 상태(66)/AO + 메모리 상태(74)로의 전이의 일부일 수 있다. 도 6의 동작은 SOC(10) 전반에 걸친 컴포넌트들을 복원하기 위한 SOC 온 상태(68)/SOC 온 상태(72)로의 전이의 일부일 수 있다. 올웨이즈-온 컴포넌트(16)는 도 6에 도시된 동작을 구현하도록 구성될 수 있다.
올웨이즈-온 컴포넌트(16)는 전력 공급되고 있는 컴포넌트들의 전력의 복원을 야기하도록 구성될 수 있다(블록(90)). 예를 들어, 로컬 PMGR(48)은, PMU(156)가 SOC(10)의 하나 이상의 공급 전압 레일(rail)들에 대해 공급 전압을 복원하게 요청하도록 구성될 수 있다. 대안적으로, 로컬 PMGR(48) 또는 올웨이즈-온 컴포넌트(16)의 다른 회로는 전력 게이팅된 컴포넌트들에 대한 전력을 복원하기 위해 SOC(10)의 전력 스위치들을 제어하도록 구성될 수 있다. PMU 요청들 및 전력 스위치 제어들의 조합이 또한 사용될 수 있다.
전력이 안정화되고 임의의 컴포넌트 리셋이 완료되면, SOC 재구성 회로(46)는, 컴포넌트에 대응하는 프로그래밍가능 구성 데이터(56)로 컴포넌트들을 프로그래밍하도록 구성될 수 있다(블록(92)). SOC 재구성 회로(46)는 재구성이 완료될 때까지(판정 블록(94)) 프로그래밍가능 구성 데이터(56)를 판독하고 데이터를 컴포넌트에 송신하도록 구성될 수 있다. 재구성이 완료되면(판정 블록(94), "예" 레그), 새로운 상태(예를 들어, 메모리 액세스 상태(66) 또는 SOC 온 상태(68))로의 전이가 완료될 수 있다(블록(96)).
송신은 임의의 형태(예를 들어, 프로그래밍된 입력/출력(PIO) 기입들, 전용 통신 경로들, 메모리-맵핑된 I/O 기입들 등)를 취할 수 있다. 구성 파라미터들의 기입들에 추가로, 일부 실시예들은, 재구성이 완료되었는지 여부의 결정(판정 블록(94))의 일부를 형성할 수 있는, 컴포넌트로부터의 상태를 결정하기 위해 다른 정보를 프로그래밍가능 재구성 데이터(56)에서 지원할 수 있다. 예를 들어, 일련의 구성 파라미터 기입들이 컴포넌트에 송신될 수 있고, 예를 들어, 완료 또는 동작 준비를 표시하기 위해 컴포넌트가 업데이트하는 레지스터에 대한 폴링 판독이 그에 후속할 수 있다.
도 7은, SOC(10)의 컴포넌트들을 예시하고, 메모리 액세스 상태(66)/AO + 메모리 상태(74)에 대한 SOC(10)의 일 실시예에서 어느 컴포넌트들이 온 또는 오프인지를 예시하는 블록도이다. 도 7에서 빗금쳐진 컴포넌트들은 전력 오프되는 한편, 빗금쳐지지 않은 컴포넌트들은 전력 온된다. 또한 다양한 패드들(98A-98D)이 도 7에 예시된다. 패드들은 SOC(10)의 핀(pin)들 상에서 신호들을 구동시키고 핀들로부터 신호들을 수신하도록 구성되는 입력/출력 드라이버/수신기 회로를 포함할 수 있다. 따라서, 패드들(98A-98D)은 공급 전압들을 또한 수신할 수 있다. 이 실시예에서, 올웨이즈-온 컴포넌트(16)로부터 다양한 센서들로의 패드들(98B)이 전력 온될 수 있는 것처럼, 메모리 제어기(22)가 메모리(12)와 통신하기 위한 패드들(98C)이 전력 온될 수 있다. PMGR(32)이 PMU(156)와 통신하기 위한 패드들(98D) 및 주변장치(18B)에 대한 패드들(98A) 둘 모두는 전력 차단될 수 있다. 대안적으로, 적어도 하나의 패드가 전력 온될 때마다 모든 패드들이 전력 온되는 단일 패드 구조가 사용될 수 있다.
도 7에 예시된 바와 같이, 메모리 제어기(22) 및 올웨이즈-온 컴포넌트(16)는 전력 공급될 수 있는 한편, 나머지 컴포넌트들은 전력 차단된다. 추가적으로, 올웨이즈-온 컴포넌트(16)와 메모리 제어기(22) 사이에서 통신하기 위해 사용되는 통신 패브릭(27)의 부분(99)은 전력 공급될 수 있는 한편, 통신 패브릭(27)의 나머지는 전력 차단될 수 있다. 예를 들어, 실시예에서, 통신 패브릭(27)은 소스들, 예를 들어, 주변장치들(18A-18B), CPU 컴플렉스(14) 및 올웨이즈-온 컴포넌트(16)로부터의 트랜잭션들을 메모리 제어기(22)로 라우팅하기 위해, 버스들 및 회로의 계층적 세트를 포함할 수 있다. 패브릭은 또한 데이터를 (기입들을 위해 메모리 제어기(22)에, 판독들을 위해 메모리 제어기(22)로부터) 전달할 수 있고, 메모리 제어기(22)로부터의 응답들을 소스들에 전달할 수 있다. 올웨이즈-온 컴포넌트(16)와 메모리 제어기(22) 사이의 계층적 인터페이스 및 회로의 부분들은 전력 온될 수 있고, 다른 부분들은 전력 오프될 수 있다.
도 8은 일 실시예에 대해, 재구성 메커니즘을 사용한 레이턴시 감소를 예시하는 블록도이다. 도 8의 좌측 상의 화살표에 의해 예시된 바와 같이, 시간은 도 8에서 최상부로부터 바닥부로 증가한다. 좌측에는 집적 회로(10)에 대한 부트 시퀀스가 있고, 우측에는 본 구현의 재구성 메커니즘에 따른 재구성이 있다.
부트 시퀀스는, SOC(10)를 포함하는 디바이스가 초기에 전력 공급되는 경우 수행될 수 있다. 따라서, 메모리(12)에는 프로그래밍가능 재구성 데이터(56)를 포함한 어떠한 데이터도 저장되어 있지 않고, SOC(10)는 초기화되지 않는다. 부트 시퀀스는 판독-전용 메모리(ROM) 로드(load)(100), 저레벨 부트(102) 및 커널(kernel)(104)을 포함한다. ROM 로드(100)는 CPU 프로세서들(30)에 의한 리셋의 이탈 시에 시작할 수 있고, ROM(예를 들어, 보안 ROM)으로부터 저레벨 부트(102)에 대한 저레벨 부트 코드를 판독하는 것, 저레벨 부트 코드를 암호해제 및/또는 인증하는 것, 및 저레벨 부트 코드를 시작하는 것을 포함할 수 있다. 저레벨 부트 코드는 SOC(10)의 다양한 컴포넌트들을 발견할 수 있고, 컴포넌트들을 초기화할 수 있다. 일반적으로, 초기화의 양, 초기화될 컴포넌트들, 및 컴포넌트들이 저레벨 부트 코드에 의해 초기화되는 상태는 커널 코드(커널 블록(104))의 설계에 따라 제어될 수 있다. 즉, 저레벨 부트 코드는, 커널 코드가 자신의 제1 명령어를 실행하는 위치에서 예상되는 시스템/SOC(10)의 상태를 생성할 수 있다. 커널 코드는, 시스템에서 실행되는 다양한 애플리케이션 프로그램들에 의한 사용을 위해 SOC(10)의 자원들을 관리하는, 운영 시스템의 중앙 코어일 수 있다.
재구성 메커니즘을 사용하여 다시 전력 공급하는 경우, ROM 로드(100)는 회피될 수 있다. 재구성 메커니즘(블록(106))은 저레벨 부트(102)와 동일한 효과를 가질 수 있지만, 일부 경우들에서 저레벨 부트 코드보다 더 신속할 수 있다. 최악의 경우, 재구성 메커니즘(106)은 저레벨 부트(102)와 동일한 레이턴시를 가질 수 있다. 재구성 메커니즘(106)의 종료 시에, 커널(104)은 실행이 준비될 수 있다. 재구성 메커니즘을 사용한 레이턴시 감소는 화살표(108)로 표시된다.
다른 실시예에서, 재구성 메커니즘(106)은, 저레벨 부트 코드로부터 재구성 코드를 유도하고, 전력 공급 이벤트 이후 CPU 프로세서들(30)에 의해 액세스가능한 위치에(예를 들어, SOC(10)의 또는 그에 커플링된 플래시 메모리와 같은 비휘발성 메모리에) 코드를 저장함으로써 구현될 수 있다. 전력 공급 및 CPU 프로세서들(30)을 리셋한 후, CPU 프로세서들(30)은 리셋으로부터 그 위치를 가리키는 리셋 벡터로 릴리스(release)되어, 재구성 코드가 실행될 수 있다. 재구성 코드는 커널에 대한 호출로 종료될 수 있다.
도 9는 일 실시예에 대해 웨이크업 레이턴시를 감소시키는 추정의 사용을 예시하는 블록도이다. 일반적으로, 도 9에 도시된 것과 같은 추정은 레이턴시를 감소시키기 위해 임의의 레벨(예를 들어, 도 3 및 도 4의 상태들 사이의 임의의 전이)에서 사용될 수 있다. 회로를 추정적으로 전력 공급하고 이를 다시 전력 차단할 때 추정이 부정확하면 약간의 전력이 소모될 수 있지만, 타당하게 정확한 추정은 양호한 전력/성능 트레이드오프(tradeoff)일 수 있다. 도 8과 유사하게, 도 9에서 시간은 최상부로부터 바닥부로 증가한다.
도 9의 좌측에는 추정 없이 수행되는 시퀀스가 있다. 올웨이즈-온 컴포넌트(16)는 N개의 센서 샘플들을 수집할 수 있다(블록(110)). 즉, 올웨이즈-온 컴포넌트(16)는 대기 상태(60)와 캡처 상태(62) 사이에서 N번 전이하여, 각각의 시간에 센서 데이터를 캡처할 수 있다(여기서 N은 양의 정수이다). 올웨이즈-온 컴포넌트(16)는 이 예에서 N의 임계치로 프로그래밍될 수 있어서, N개의 센서 샘플들 이후, 상태 머신은 (프로세서(40)를 웨이킹시키는) 프로세스 상태(64)로 전이할 수 있다. 프로세서(40)는 센서 데이터를 프로세싱할 수 있지만(블록(112)), 프로세서(40)로 하여금 메모리 제어기(22) 또는 SOC(10)의 다른 부분들을 웨이킹시키는 센서 데이터의 패턴 또는 다른 속성을 검출하지 못할 수 있다. 상태 머신은 캡처 상태(62) 및/또는 대기 상태(60)로 복귀할 수 있다. 후속적으로, N개의 더 많은 센서 샘플들이 수집될 수 있고(블록(114)), 프로세서(40)는 다시 어웨이큰될 수 있고, 센서 데이터를 프로세싱할 수 있다(블록(116)). 이 경우, 프로세서(40)는, SOC(10)가 어웨이큰될 것이어서, CPU 프로세서들(30)이 센서 데이터를 추가로 프로세싱하거나 다른 프로세싱을 수행할 수 있음을 검출할 수 있다. 따라서, 상태 머신은 SOC 온 상태(68/72)로 전이하여, SOC(10)를 어웨이큰시키고 프로세싱을 허용할 수 있다(블록(118)).
도 9의 우측에는 SOC(10)를 턴 온시키기 위한 레이턴시를 감소시키는 추정의 예가 있다. 좌측의 예와 유사하게, 우측의 예는, 올웨이즈-온 컴포넌트(16)가 N개의 센서 샘플들을 수집하는 것, 프로세서(40)를 웨이킹시키는 것(블록(120)), 상태 머신을 프로세스 상태(64)로 전이시키는 것을 포함할 수 있다. 그러나, 이 경우, 프로세서(40)에 의해 실행되는 코드는, 센서 데이터에서 (예를 들어, 도 9의 좌측의 블록들(112 및 116)과 유사한) 즉시적인 SOC 프로세싱을 위한 소망을 표시하는 패턴들/속성들을 탐색할 뿐만 아니라 SOC 프로세싱이 곧 요구될 것임을 예측하기 위한 패턴들/속성들을 탐색한다. 우측의 예에서, 프로세서(40)에 의해 실행되는 코드는, SOC 프로세싱이 요구된다고 예측할 수 있고(블록(122)), 상태 머신들로 하여금 SOC 온 상태(68/72)로 전이하게 할 수 있다(블록(124)). SCM(44)은 또한 병렬적으로 센서 샘플들을 캡처하는 것을 계속할 수 있다. 웨이크업을 야기할 패턴/속성이 검출되는 경우, SOC(10)는 이미 준비될 수 있다. 레이턴시는 좌측의 예에 비해 감소될 수 있고, 이는 화살표(126)로 예시된다. 예측이 부정확하면(도 9에서 잘못 예측), SOC(10)는 수면으로 복귀할 수 있다(블록(128)). 이 경우, SOC(10)를 웨이크 업시키기 위해 사용되는 전력은 낭비되었을 수 있다.
다음으로 도 10을 참조하면, 시스템(150)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 시스템(150)은 하나 이상의 주변장치(154) 및 외부 메모리(12)에 커플링된 SOC(10)의 적어도 하나의 예를 포함한다. SOC(10)에 공급 전압들을 공급할 뿐만 아니라, 메모리(12) 및/또는 주변장치들(154)에 하나 이상의 공급 전압을 공급하는 PMU(156)가 제공된다. 일부 실시예들에서, SOC(10)의 둘 이상의 예가 포함될 수 있다(그리고 둘 이상의 메모리(12) 또한 포함될 수 있다).
주변장치(154)들은 시스템(150)의 유형에 따라, 임의의 원하는 회로를 포함할 수 있다. 예를 들어, 일 실시예에서, 시스템(150)은 모바일 디바이스(예를 들어, 개인 휴대 정보 단말기(personal digital assistant, PDA), 스마트 폰 등)일 수 있고, 주변장치(154)들은 WiFi, 블루투스(Bluetooth), 셀룰러, 글로벌 포지셔닝 시스템 등과 같은 다양한 유형의 무선 통신용 디바이스들을 포함할 수 있다. 또한, 주변장치(154)들은 RAM 저장 장치, 솔리드 스테이트 저장 장치(solid state storage) 또는 디스크 저장 장치를 비롯한 추가적인 저장 장치를 포함할 수 있다. 주변장치들(154)은 터치 디스플레이 스크린 또는 멀티터치 디스플레이 스크린을 포함하는 디스플레이 스크린, 키보드 또는 다른 입력 디바이스들, 마이크로폰, 스피커 등과 같은 사용자 인터페이스 디바이스들을 포함할 수 있다. 도 1의 실시예에서, 주변장치들(154)은 센서들(20)을 포함할 수 있다. 다른 실시예들에서, 시스템(150)은 임의의 유형의 컴퓨팅 시스템(예를 들어, 데스크탑 개인용 컴퓨터, 랩탑, 워크스테이션, 넷탑 등)일 수 있다.
외부 메모리(12)는 임의의 유형의 메모리를 포함할 수 있다. 예를 들어, 외부 메모리(12)는 SRAM, 동적 RAM(DRAM), 예를 들어, 동기 DRAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3, 기타 등) SDRAM, RAMBUS DRAM, 저 전력 버전들의 DDR DRAM(예를 들어, LPDDR, mDDR, 기타 등) 등일 수 있다. 외부 메모리(12)는 메모리 디바이스들이 장착되는 하나 이상의 메모리 모듈들, 예를 들어, 단일 인라인 메모리 모듈(SIMM)들, 듀얼 인라인 메모리 모듈(DIMM)들 등을 포함할 수 있다. 대안적으로, 외부 메모리(12)는 칩-온-칩 또는 패키지-온-패키지 구현예로 SOC(10) 상에 장착되는 하나 이상의 메모리 디바이스들을 포함할 수 있다.
도 11에는 컴퓨터 액세스가능 저장 매체(200)의 일 실시예의 블록도가 도시된다. 일반적으로 말하면, 컴퓨터 액세스가능 저장 매체는 명령어들 및/또는 데이터를 컴퓨터에 제공하기 위하여 사용하는 동안 컴퓨터에 의해 액세스 가능한 임의의 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 액세스가능 저장 매체는, 자기 또는 광학 매체, 예를 들어 디스크(고정 또는 탈착가능), 테이프, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, 또는 블루-레이(Blu-Ray)와 같은 저장 매체를 포함할 수 있다. 저장 매체는, RAM(예를 들어, 동기식 동적 RAM(synchronous dynamic RAM, SDRAM), 램버스 DRAM(RDRAM), 정적 RAM(SRAM) 등), ROM, 또는 플래시 메모리와 같은 휘발성 또는 비휘발성 메모리 매체를 추가로 포함할 수 있다. 저장 매체는 저장 매체가 명령어들/데이터를 제공하는 컴퓨터 내에 물리적으로 포함될 수 있다. 대안적으로, 저장 매체는 컴퓨터에 접속될 수 있다. 예를 들어, 저장 매체는 네트워크 부착형 저장 장치와 같은, 네트워크 또는 무선 링크를 통해 컴퓨터에 접속될 수 있다. 저장 매체는 범용 시리얼 버스(USB)와 같은 주변장치 인터페이스를 통해 접속될 수 있다. 일반적으로, 컴퓨터 액세스 가능 저장 매체(200)는 비일시적 방식으로 데이터를 저장할 수 있고, 본 맥락에서 비일시적이란 신호 상에서 명령어들/데이터를 전송하지 않는 것을 지칭할 수 있다. 예를 들어, 비일시적 저장장치는 휘발성(그리고 전력 차단에 따라 저장된 명령어들/데이터를 상실할 수 있음) 또는 비휘발성일 수 있다.
도 11의 컴퓨터 액세스가능 저장 매체(200)는 올웨이즈-온 컴포넌트 코드(202)를 저장할 수 있다. 올웨이즈-온 컴포넌트 코드(202)는, 프로세서(40)에 의해 실행되는 경우 상기 코드에 대해 설명된 동작을 구현하는 명령어들을 포함할 수 있다. 올웨이즈-온 컴포넌트 코드(202)는, 예를 들어, 도 2에 도시된 프로세서 코드(54)를 포함할 수 있다. 도 11의 컴퓨터 액세스가능 저장 매체(200)는 CPU 코드(204)를 추가로 저장할 수 있다. CPU 코드(204)는 ROM 로드 코드(206), 저레벨 부트 코드(208) 및/또는 커널 코드(210)를 포함할 수 있다. 각각의 코드는, 실행되는 경우, 예를 들어, ROM 로드 블록(100), 저레벨 부트 블록(102) 및 커널 블록(104)에 할당된 동작들을 구현하는 명령어들을 포함할 수 있다. 캐리어 매체는 유선 또는 무선 전송과 같은 전송 매체뿐만 아니라 컴퓨터 액세스가능 저장 매체를 포함할 수 있다.
상기의 개시내용이 완전히 이해된다면, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어서 다수의 변경들 및 수정들이 명백해질 것이다. 하기의 청구범위는 모든 그러한 변경들 및 수정들을 포괄하는 것으로 해석되는 것으로 의도된다.

Claims (18)

  1. 집적 회로로서,
    상기 집적 회로에서 중앙 프로세싱 유닛을 형성하는 적어도 하나의 프로세서;
    상기 집적 회로 외부의 전력 관리 유닛에 전압 요청들을 송신하도록 구성되는 전력 관리 회로 - 상기 전압 요청들은 상기 집적 회로에 하나 이상의 전력 공급 전압들을 공급하기 위한 요청들임 -;
    사용 동안 메모리에 커플링되는 메모리 제어기 - 상기 전력 관리 회로는 상기 전력 관리 유닛과의 통신을 통해 상기 메모리 제어기의 전력 차단을 야기하도록 구성됨 -; 및
    상기 프로세서 및 상기 메모리 제어기에 커플링되는 제1 컴포넌트를 포함하고,
    상기 제1 컴포넌트는, 상기 프로세서, 상기 전력 관리 회로 및 상기 메모리 제어기가 전력 오프(off)되는 동안 가동되어 유지되도록 구성되고, 상기 제1 컴포넌트는 상기 전력 관리 회로와는 별개인 상기 전력 관리 유닛에 커플링되고, 상기 제1 컴포넌트는 상기 메모리 제어기로 하여금 상기 전력 관리 유닛과의 별개의 커플링을 통해 전력 공급되게(power up) 하고, 상기 제1 컴포넌트에 저장된 메모리 제어기 구성 데이터를 사용하여 상기 메모리 제어기를 프로그래밍하고, 상기 프로세서가 전력 차단된(powered down) 시간 동안 상기 메모리 제어기와 통신하도록 구성되는, 집적 회로.
  2. 제1항에 있어서,
    상기 메모리 제어기 구성 데이터는, 상기 메모리 제어기가 전력 차단된 시간에 상기 메모리 제어기의 프로그래밍된 구성을 표현하는, 집적 회로.
  3. 제2항에 있어서,
    상기 프로세서는 복수의 명령어들을 실행하는 것에 대한 응답으로 상기 메모리 제어기를 프로그래밍하도록 구성되고, 상기 프로세서는 상기 복수의 명령어들을 실행하는 것에 대한 응답으로 상기 메모리 제어기 구성 데이터를 상기 제1 컴포넌트에 기입하도록 추가로 구성되는, 집적 회로.
  4. 제2항에 있어서,
    복수의 컴포넌트들을 더 포함하고,
    상기 제1 컴포넌트는, 상기 복수의 컴포넌트들이 전력 차단된 시간에 상기 복수의 컴포넌트들 각각의 프로그래밍된 구성을 표현하는 구성 데이터를 저장하도록 추가로 구성되는, 집적 회로.
  5. 제4항에 있어서,
    상기 제1 컴포넌트는, 상기 복수의 컴포넌트들 각각이 전력 공급되는 것에 대한 응답으로, 상기 저장된 구성 데이터로 상기 복수의 컴포넌트들 각각을 프로그래밍하도록 구성되는, 집적 회로.
  6. 제5항에 있어서,
    상기 프로세서는 운영 시스템 소프트웨어를 실행하도록 구성되고, 상기 제1 컴포넌트는, 상기 운영 시스템이 상기 프로세서 상에서의 실행을 재개하기 전에 상기 메모리 제어기 및 상기 복수의 컴포넌트들을 프로그래밍하도록 구성되는, 집적 회로.
  7. 시스템으로서,
    메모리; 및
    제1항에 기재된 집적 회로를 포함하고,
    상기 집적 회로는 상기 메모리에 커플링되는, 시스템.
  8. 제7항에 있어서,
    상기 프로세서는, 상기 메모리 제어기 및 상기 프로세서가 전력 차단되기 전에 상기 시스템의 상태를 상기 메모리에 기입하도록 구성되는, 시스템.
  9. 제8항에 있어서,
    상기 메모리는, 상기 메모리 제어기가 전력 차단된 시간 동안 자체 리프레쉬(self refresh) 상태에 있는, 시스템.
  10. 방법으로서,
    메모리 제어기, 복수의 컴포넌트들 및 프로세서가 전력 차단된 시간 동안 전력 공급되어 유지되는 제1 컴포넌트를 또한 포함하는 집적 회로에서 상기 메모리 제어기, 상기 복수의 컴포넌트들, 전력 관리 회로 및 상기 프로세서를 전력 차단하는 단계 - 상기 전력 차단하는 단계는 상기 전력 관리 회로로부터 상기 집적 회로 외부의 전력 관리 유닛으로의 요청들을 통해 수행됨 -;
    상기 전력 차단하는 단계에 후속하여 상기 메모리 제어기를 다시 전력 공급하는 단계 - 상기 전력 공급하는 단계는 상기 프로세서가 전력 차단되어 유지되는 동안 상기 제1 컴포넌트에 의해 야기되고, 상기 제1 컴포넌트는 상기 전력 관리 회로와는 별개인 상기 전력 관리 유닛에 커플링되어 상기 메모리 제어기를 전력 공급시킴 -; 및
    상기 제1 컴포넌트로부터의 구성 데이터로 상기 메모리 제어기를 재초기화하는 단계를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 집적 회로를 포함하는 시스템을 부트(boot)시키는 단계 - 상기 부트시키는 단계는 상기 메모리 제어기 및 상기 복수의 컴포넌트들을 초기화하는 단계를 포함함 -;
    상기 메모리 제어기의 프로그래밍된 구성을 표현하는 상기 구성 데이터를 상기 제1 컴포넌트에 기입하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서,
    상기 복수의 컴포넌트들의 상기 구성 데이터를 상기 제1 컴포넌트에 기입하는 단계를 더 포함하는, 방법.
  13. 제10항에 있어서,
    상기 전력 공급하는 단계 및 상기 재초기화하는 단계 동안 상기 복수의 컴포넌트들 및 상기 프로세서를 전력 차단으로 유지하는 단계; 및
    상기 복수의 컴포넌트들 및 상기 프로세서가 전력 차단으로 유지되는 동안 상기 재초기화하는 단계에 후속하여 상기 제1 컴포넌트가 상기 메모리 제어기와 통신하는 단계를 더 포함하는, 방법.
  14. 제13항에 있어서,
    상기 제1 컴포넌트가 상기 메모리 제어기와의 통신이 필요하다고 결정하는 단계를 더 포함하고,
    상기 전력 공급하는 단계는 상기 결정하는 단계에 대한 응답인, 방법.
  15. 제10항에 있어서,
    상기 복수의 컴포넌트들 및 상기 프로세서를 전력 공급하는 단계; 및
    상기 제1 컴포넌트로부터의 상기 구성 데이터로 상기 복수의 컴포넌트들 및 상기 프로세서를 재초기화하는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서,
    상기 프로세서가 운영 시스템 소프트웨어를 실행하는 단계를 더 포함하고,
    상기 재초기화하는 단계는 상기 프로세서가 상기 운영 시스템 소프트웨어의 실행을 시작하기 전에 수행되는, 방법.
  17. 제11항에 있어서,
    동작 동안 상기 프로그래밍된 구성을 변경하는 단계; 및
    상기 변경된 구성을 반영하기 위해 상기 제1 컴포넌트의 상기 구성 데이터를 업데이트하는 단계를 더 포함하는, 방법.
  18. 제17항에 있어서,
    상기 메모리 제어기, 상기 복수의 컴포넌트들 및 상기 프로세서를 전력 차단하기 전에 상기 메모리 제어기가 커플링되는 상기 메모리에 상기 시스템의 상태를 기입하는 단계를 더 포함하는, 방법.
KR1020167033147A 2014-05-29 2015-03-13 Soc를 재구성하고 메모리-전용 통신 모드를 지원하는 올웨이즈-온 프로세서를 갖는 시스템 온 어 칩 KR101805346B1 (ko)

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
KR20160147954A KR20160147954A (ko) 2016-12-23
KR101805346B1 true KR101805346B1 (ko) 2017-12-05

Family

ID=52774591

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033147A KR101805346B1 (ko) 2014-05-29 2015-03-13 Soc를 재구성하고 메모리-전용 통신 모드를 지원하는 올웨이즈-온 프로세서를 갖는 시스템 온 어 칩

Country Status (6)

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

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
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
US10031000B2 (en) 2014-05-29 2018-07-24 Apple Inc. System on a chip with always-on processor
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 瑞昱半导体股份有限公司 具有内存的芯片
US11656673B2 (en) * 2019-12-30 2023-05-23 Micron Technology, Inc. Managing reduced power memory operations
JP2022049552A (ja) * 2020-09-16 2022-03-29 キオクシア株式会社 半導体装置および方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748548B2 (en) 2000-12-29 2004-06-08 Intel Corporation Computer peripheral device that remains operable when central processor operations are suspended
US20080282101A1 (en) 2007-05-09 2008-11-13 Gainspan, Inc. Optimum power management of system on chip based on tiered states of operation
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 (50)

* 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
US6775750B2 (en) 2001-06-29 2004-08-10 Texas Instruments Incorporated System protection map
EP1331539B1 (en) 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
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
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
US8575993B2 (en) * 2011-08-17 2013-11-05 Broadcom Corporation Integrated circuit with pre-heating for reduced subthreshold leakage
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 삼성전자주식회사 데이터 처리 장치와 이를 포함하는 휴대용 장치
US9377830B2 (en) * 2011-12-30 2016-06-28 Samsung Electronics Co., Ltd. Data processing device with power management unit and portable device having the same
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
US20140223214A1 (en) 2013-02-01 2014-08-07 Broadcom Corporation Dynamic power mode switching per rail
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 华为终端(东莞)有限公司 一种上报传感器数据的方法和终端
US9665155B2 (en) * 2013-12-28 2017-05-30 Intel Corporation Techniques for increasing energy efficiency of sensor controllers that receive data from one or more sensors
US9443111B2 (en) 2014-02-28 2016-09-13 Seagate Technology Llc Device security using an encrypted keystore data structure
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
US10031000B2 (en) 2014-05-29 2018-07-24 Apple Inc. System on a chip with always-on processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748548B2 (en) 2000-12-29 2004-06-08 Intel Corporation Computer peripheral device that remains operable when central processor operations are suspended
US20080282101A1 (en) 2007-05-09 2008-11-13 Gainspan, Inc. Optimum power management of system on chip based on tiered states of operation
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
KR20160147954A (ko) 2016-12-23
US9619377B2 (en) 2017-04-11
DE112015002522T5 (de) 2017-03-09
WO2015183377A1 (en) 2015-12-03
US20170177256A1 (en) 2017-06-22
US10261894B2 (en) 2019-04-16
TW201602791A (zh) 2016-01-16
CN106462217B (zh) 2018-12-04
DE112015002522B4 (de) 2022-05-25
US20150347287A1 (en) 2015-12-03
CN106462217A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
US11079261B2 (en) System on a chip with always-on processor
US10915160B2 (en) System on a chip with fast wake from sleep
KR101805346B1 (ko) Soc를 재구성하고 메모리-전용 통신 모드를 지원하는 올웨이즈-온 프로세서를 갖는 시스템 온 어 칩
US9959124B1 (en) Secure bypass of low-level configuration in reconfiguration of a computing system
US20150362980A1 (en) Always-On Processor as a Coprocessor
KR20140050290A (ko) 어플리케이션 프로세서, 이를 구비하는 모바일 기기 및 어플리케이션 프로세서를 위한 클럭 신호 선택 방법
KR102372786B1 (ko) 아키텍처화된 상태 유지
US9898071B2 (en) Processor including multiple dissimilar processor cores
US9659616B2 (en) Configuration fuse data management in a partial power-on state
US20170160788A1 (en) Low power state retention mode for processor

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right