KR102372786B1 - 아키텍처화된 상태 유지 - Google Patents

아키텍처화된 상태 유지 Download PDF

Info

Publication number
KR102372786B1
KR102372786B1 KR1020197031865A KR20197031865A KR102372786B1 KR 102372786 B1 KR102372786 B1 KR 102372786B1 KR 1020197031865 A KR1020197031865 A KR 1020197031865A KR 20197031865 A KR20197031865 A KR 20197031865A KR 102372786 B1 KR102372786 B1 KR 102372786B1
Authority
KR
South Korea
Prior art keywords
processor
subset
storage elements
state information
state
Prior art date
Application number
KR1020197031865A
Other languages
English (en)
Other versions
KR20190134693A (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 KR20190134693A publication Critical patent/KR20190134693A/ko
Application granted granted Critical
Publication of KR102372786B1 publication Critical patent/KR102372786B1/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/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/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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)

Abstract

슬립 상태와 활성 동작 상태 사이에서의 비교적 빈번한 스위칭을 위해 아키텍처화된 상태를 유지하기 위한 시스템들, 장치들, 및 방법들이 설명된다. 프로세서는 활성 상태로부터 슬립 상태로 전환하기 위한 표시를 수신한다. 프로세서는, 전력이 턴 오프된 이후 저장을 유지할 수 있는 온-다이 저장 요소들에 아키텍처화된 상태 정보의 제1 서브세트의 사본을 저장한다. 프로세서는 슬립 상태 동안 특정 저장된 정보의 프로그래밍가능 입력/출력(PIO) 액세스를 지원한다. 웨이크업 이벤트가 검출될 때, 프로세서 내의 회로부는 다시 전원 공급된다. 부트 시퀀스 및 오프-칩 메모리로부터의 아키텍처화된 상태의 복원이 수행되지 않는다. 리셋 베이스 어드레스 레지스터에 의해 지적되는 메모리 위치로부터 페칭하기보다는, 프로세서는 대신, 아키텍처화된 상태 정보의 유지된 서브세트의 복원된 프로그램 카운터에 의해 지적되는 메모리 위치로부터 명령어를 페칭한다.

Description

아키텍처화된 상태 유지
본 명세서에 설명된 실시예들은 프로세서들의 분야에 관한 것으로, 보다 상세하게는, 슬립 상태와 활성 동작 상태 사이에서의 비교적 빈번한 스위칭을 위해 아키텍처화된 상태를 유지하는 것에 관한 것이다.
반도체 칩과 같은 컴퓨팅 시스템은, 데이터를 각각 프로세싱할 수 있는 다수의 기능 블록들 또는 유닛들을 포함한다. 다양한 실시예들에서, 다수의 기능 유닛들은 시스템 온 칩(system on a chip, SOC), 멀티-칩 모듈(MCM) 또는 인쇄 회로 보드 중 하나 상에 있는 개별 다이들이다. 운영 체제는, 더 이상 프로세싱할 애플리케이션들이 없다는 것 뿐만 아니라 지속기간 임계치가 경과했다는 것을 검출하는 것에 부가하여, 특정 프로세서가 유휴(idle)일 때를 결정한다. 그러한 경우들에서, 운영 체제는 슬립 상태로 전환하기 위해 특정 프로세서가 실행하기 위한 셧다운 절차(shutdown procedure)의 명령어들을 전송한다.
프로세서는 셧다운 절차의 일부로서, 아키텍처화된 상태를 오프-칩 메모리에 저장한다. 그렇게 하는 것은 슬립 상태에 진입하기 위한 레이턴시를 증가시킬 뿐만 아니라 전력 소비를 증가시킨다. 나중에, 웨이크업 이벤트가 검출되고, 프로세서는 다시 전원 공급(power up)되고, 오프-칩 메모리로부터 아키텍처화된 상태를 복원하며, 리셋 베이스 어드레스 레지스터에 저장된 어드레스에 의해 지적되는 메모리 위치에 저장된 명령어를 페칭(fetch)한다. 프로세서는 부트 시퀀스를 시작한다. 반복적으로 프로세서를 슬립 상태에 두고 나중에 프로세서를 웨이크 업시키기 위해 상당한 양의 시간 및 전력이 소비된다. 부가적으로, 셧다운 절차 및 전원 공급 절차를 위해 상당한 수의 명령어들이 사용된다. 일부 경우들에서, 프로세서는 활성 상태와 슬립 상태 사이에서 초당 수백 회 전환한다. 결과적으로, 프로세서는 상당한 양의 전력을 소비할 뿐만 아니라 비효율적으로 사용된다.
슬립 상태와 활성 동작 상태 사이에서의 비교적 빈번한 스위칭을 위해 아키텍처화된 상태를 유지하기 위한 시스템들 및 방법들이 고려된다. 다양한 실시예들에서 시스템 온 칩(SOC)과 같은 컴퓨팅 시스템은 하나 이상의 소프트웨어 애플리케이션들의 명령어들 및 데이터를 위한 외부(오프-칩) 메모리에 액세스한다. 명령어들 및 데이터는 초기에, SOC 내의 하나 이상의 프로세서들에 의해 페칭되기 전에 캐시 메모리 서브시스템에 저장된다. 소프트웨어 애플리케이션들의 프로세싱 동안, 각각의 프로세서는 각자의 아키텍처화된 상태 정보를 유지한다. 특정 프로세서가 유휴인지를 운영 체제 스케줄러가 결정할 때, 더 이상 프로세싱할 애플리케이션들이 없다는 것 뿐만 아니라 지속기간 임계치가 경과했다는 것에 부가하여, 스케줄러는 슬립 상태로 전환하기 위해 특정 프로세서에 대한 셧다운 프로세스를 시작한다.
다양한 실시예들에서, 셧다운 프로세스 동안, 특정 프로세서는 아키텍처화된 상태 정보의 제1 서브세트의 사본을 온-다이 저장 요소들에 저장한다. 다양한 실시예들에서, 이들 유지 저장 요소들은 나중의 전원-공급 시퀀스의 발생 시에 비교적 빠른 복원을 위해 아키텍처화된 상태를 효율적으로 저장하기 위한 벌룬 래치 방식(balloon latch scheme), 섀도우 래치 방식(shadow latch scheme) 또는 유사한 메커니즘을 사용한다.
일부 실시예들에서, 제1 서브세트는 프로그램 카운터(PC), 스택 포인터(SP), 링크 레지스터(LR), 예외 레벨 및 수반되는 정보, 소프트웨어 스텝 값, 및 다른 유사한 정보 중 하나 이상을 포함한다. 컨텍스트 스위치와 대조적으로, 슬립 상태로부터 활성 상태로의 나중의 복귀 시에, 아키텍처화된 상태 모두가 다시 사용되지는 않는다. 예를 들어, 정수 및 부동-소수점 범용 레지스터(GPR)들에 저장된 값들은, 이들이 활성 상태로의 나중의 복귀 시에 다시 사용되지 않으므로 유지되지 않는다. 오히려, 이들 값들은 프로세서 활성 상태로의 나중의 복귀 시에 초기화된다.
일 실시예에서, 프로세서는 슬립 상태 동안 특정 저장된 정보의 프로그래밍가능 입력/출력(PIO) 액세스를 지원한다. 판독 액세스들에 대해서도 유효 액세스들만을 허용하기 위해 허가 검사가 발생할 수 있다. 웨이크업 이벤트가 검출될 때, 프로세서 내의 회로부는 다시 전원 공급된다. 부트 시퀀스 및 오프-칩 메모리로부터의 아키텍처화된 상태의 복원의 단계들은 이들 단계들이 필요하지 않으므로 수행되지 않는다. 프로세서가 다시 전원 공급된 이후, 리셋 베이스 어드레스 레지스터에 의해 지적되는 메모리 위치로부터 페칭하는 것과 같은 부트 업 시퀀스를 사용하기보다는, 프로세서는 대신, 아키텍처화된 상태 정보의 유지된 서브세트의 복원된 프로그램 카운터에 저장된 어드레스에 의해 지적되는 메모리 위치로부터 명령어를 페칭한다. 일부 실시예들에서, 페칭된 명령어는 인터럽트 서비스 루틴(ISR)의 일부이다.
이들 및 다른 실시예들이 다음의 설명 및 도면들을 참조하여 추가로 이해될 것이다.
방법들 및 메커니즘들의 상기 장점 및 추가 장점들은 첨부된 도면과 함께 다음의 설명을 참조로 하여 더욱 잘 이해될 수 있다.
도 1은 동작 시퀀스들에서의 웨이크업 및 슬립 레이턴시들의 일 실시예의 블록 다이어그램이다.
도 2는 컴퓨팅 시스템의 일 실시예의 블록 다이어그램이다.
도 3은 유지 저장 요소의 일 실시예의 블록 다이어그램이다.
도 4는 유지 저장 요소에 대한 타이밍 다이어그램의 일 실시예의 블록 다이어그램이다.
도 5는 프로세서 활성 상태로부터 프로세서 슬립 상태로 스위칭할 때 아키텍처화된 상태를 유지하기 위한 방법의 일 실시예의 흐름도이다.
도 6은 프로세서 슬립 상태 동안, 유지된 아키텍처화된 상태에 액세스하기 위한 방법의 일 실시예의 흐름도이다.
도 7은 프로세서 슬립 상태로부터 프로세서 활성 상태로 스위칭할 때 아키텍처화된 상태를 복귀시키기 위한 방법의 일 실시예의 흐름도이다.
도 8은 시스템의 다른 실시예의 블록 다이어그램이다.
본 개시내용에서 설명되는 실시예들이 다양한 수정들 및 대안적인 형태들을 허용할 수 있지만, 그의 특정 실시예들은 도면들에 예로서 도시되고 본 명세서에서 상세히 설명될 것이다. 그러나, 그에 대한 도면들 및 상세한 설명은 실시예들을 개시된 특정 형태로 제한하는 것으로 의도되는 것이 아니라, 그와는 반대로, 의도는 첨부된 청구범위의 사상 및 범주 내에 속한 모든 수정들, 등가물들 및 대안들을 커버하기 위한 것임을 이해하여야 한다. 본 출원 전반에 걸쳐 사용되는 바와 같이, "~일 수 있다(may)"라는 단어는 의무적인 의미(즉, "~이어야만 한다(must)"를 의미)라기보다 오히려 허용의 의미(즉, "~에 대해 가능성을 갖는다"는 의미)로 사용된다. 유사하게, "포함하다(include, includes)" 및 "포함하는(including)"이라는 단어들은, 포함하지만 그로 제한되지 않음을 의미한다.
다양한 유닛들, 회로들 또는 다른 컴포넌트들이 태스크 또는 태스크들을 수행하도록 "구성되는 것"으로 설명될 수 있다. 그러한 맥락들에서, "~하도록 구성된"은 동작 동안에 태스크 또는 태스크들을 수행하는 "회로부를 갖는"을 일반적으로 의미하는 구조의 광의의 설명이다. 그와 같이, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온(on) 상태가 아닐 시에도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "~하도록 구성된"에 대응되는 구조를 형성하는 회로부는 하드웨어 회로들을 포함할 수 있다. 유사하게, 다양한 유닛들/회로들/컴포넌트들은 설명의 편의상 태스크 또는 태스크들을 수행하는 것으로 설명될 수 있다. 그러한 설명은 "~하도록 구성된"이라는 문구를 포함하는 것으로 해석되어야 한다. 하나 이상의 태스크들을 수행하도록 구성된 유닛/회로/컴포넌트를 언급하는 것은 그 유닛/회로/컴포넌트에 대해 35 U.S.C. § 112(f)항을 적용하지 않고자 명확히 의도된다.
아래의 설명에서, 본 개시내용에 설명된 실시예들의 철저한 이해를 제공하기 위해 다수의 특정 세부사항들이 기재된다. 그러나, 기술분야의 통상의 기술자는 이러한 특정 세부사항들이 없이도 실시예들이 실시될 수 있음을 인지하여야 한다. 일부 예들에서, 잘-알려진 회로들, 구조들, 및 기법들은 예시의 용이함을 위해, 그리고 실시예들의 설명이 모호해지는 것을 피하기 위해 상세히 도시되지 않았다.
도 1을 참조하면, 동작 시퀀스들(100)에서의 웨이크업 및 슬립 레이턴시들의 일 실시예의 일반화된 블록 다이어그램이 도시된다. 예시된 실시예에서, 일련의 시퀀스들(S1 내지 S7)은 외부 메모리로의 저장 없이, 아키텍처화된 상태를 유지하는 컴퓨팅 시스템에 대한 상이한 동작 기간들을 설명하는 데 사용된다. 시퀀스들은, 스레드들이 활성 상태의 프로세서에 의해 실행될 때 시작되고, 프로세서에 대한 유휴 상태 및 추후 슬립 상태로 전환되며, 웨이크업 이벤트에 기초하여 다시 전환된다. 웨이크업 이벤트는 프로세서로 하여금 활성 상태로 재진입하게 하고 스레드들을 다시 실행하게 한다. 프로세서 외부의 메모리에서 아키텍처화된 상태를 유지하지 않는 것으로 인해, 시퀀스들에 대한 레이턴시들이 감소되고, 에너지 소비가 감소되며, 전환들을 수행하도록 프로세싱된 소프트웨어 명령어들의 양이 또한 감소된다. 도시된 바와 같이, 시퀀스(S8)는 단축된 시퀀스(S2)로 대체된다. 시퀀스(S9)는 시퀀스들(S5 및 S6) 사이에서 발생하는 것으로부터 제거된다. 시퀀스들의 설명은 다음과 같다.
시퀀스(S1)에서, 스레드들은 프로세서에 의해 실행된다. 프로세서는 다수의 어웨이크(활성) 상태들 중 하나로 동작하고 있다. 사용 중인 활성 상태는 전력 관리자에 의해 표시되는 동작 모드 및 전력-성능 상태(P-상태) 중 하나 이상에 기초하여 선택될 수 있다. 운영 체제의 커널은 하나 이상의 소프트웨어 애플리케이션들을 프로세스들로 분할한다. 다양한 실시예들에서, 각각의 프로세스는 애플리케이션의 명령어들, 애플리케이션에 대한 데이터, 히프(heap), 스택, 아키텍처화된 상태 정보, 이를테면 스택 포인터들, 일반 및 부동-소수점 레지스터들, 프로그램 카운터 등을 저장하기 위해 사용되는 메모리 위치들을 표시하기 위해 어드레스 공간을 사용한다. 커널은 프로세스들을 스레드들로 추가로 분할하고, 어떤 스레드들이 프로세서에 할당되는지를 결정한다. 커널 내의 운영 체제 스케줄러는 스레드들의 할당(스케줄링)을 수행한다. 다수의 프로세서들이 컴퓨팅 시스템에서 사용될 수 있지만, 다음의 설명은 용이함을 위한 단일 프로세서를 지칭한다.
시퀀스(S2)에서, 운영 체제 스케줄러는 상당한 양의 시간 동안 실행을 위해 어떠한 스레드들도 이용가능하지 않다는 것을 검출한다. 일부 실시예들에서, 스케줄러가 마지막 스레드를 스케줄링했으므로, 프로그래밍가능 임계 지속기간이 경과하였다. 커널은 셧다운 절차의 명령어들을 프로세서에 할당하기 시작한다. 일부 실시예들에서, 셧다운 절차를 위한 명령어들의 수는 3,000개의 명령어들을 초과한다. 그러나, 시퀀스(S2)에서, 아키텍처화된 상태는 오프-칩 메모리로 이동되지 않으며, 명령어들의 수는 감소된다. 오히려, 적어도 아키텍처화된 상태의 서브세트가 온-다이 저장 요소들에서 유지된다. 프로세서는 오프-칩 메모리에 아키텍처화된 상태 정보의 임의의 사본을 저장하는 것을 보류한다.
다양한 실시예들에서, 유지 저장 요소들은, 오프-칩 메모리에 아키텍처화된 상태의 사본을 저장하는 대신에 프로세서 내에서 아키텍처화된 상태를 유지하기 위해 사용된다. 유지 저장 요소들은 정보의 상대적으로 효율적인 저장 및 검색을 위해 플립-플롭(마스터-슬레이브 래치들) 회로 내에서 제3 래치를 사용한다. 제3 래치는 플립-플롭 회로의 마스터 및 슬레이브 래치들에 사용되는 전력 공급부와 별개의 전력 공급부에 의해 전력공급된다. 다양한 실시예들에서, 제3 래치에 대한 전력 공급부는 마스터 및 슬레이브 래치들에 사용되는 전력 공급부보다 더 작은 공급 전압 크기를 사용한다. 유지 저장 요소들의 추가적인 설명이 나중에 제공된다.
아키텍처화된 상태가 프로세서 외부의 메모리로 이동되지 않으므로, 셧다운 절차에 대해 수행되는 명령어들의 수가 상당히 감소된다. 예시의 목적들을 위해, 시퀀스(S8)는 시스템 메모리(예를 들어, DRAM)와 같은 외부 메모리로 전달된 프로세서 아키텍처화된 상태에 대한 셧다운 절차를 표현한다. 시퀀스(S8)는, 프로세서 아키텍처화된 상태가 외부 메모리로 전달되지 않는 시퀀스(S2)보다 상당히 더 크다.
오프-칩에서 유지되기보다는 온-칩에서 유지되는 아키텍처화된 상태의 예들은 프로그램 카운터(PC), 스택 포인터(SP), 링크 레지스터(LR), 특수-목적 레지스터(SPR)들에 저장된 값들, 슈퍼바이저 플래그(supervisor flag)들, 인터럽트 플래그(interrupt flag)들, 예외 레벨들 및 수반되는 정보, 소프트웨어 스텝 값, 및 다른 유사한 정보이다. 프로세서가 활성 상태로부터 유휴 상태로 그리고 추가로 다가올 슬립 상태로 전환하고 있으므로, 아키텍처화된 상태 모두가 유지되지는 않는다. 컨텍스트 스위치와 대조적으로, 활성 상태로의 나중의 복귀 시에, 아키텍처화된 상태 모두가 다시 사용되지는 않는다. 예를 들어, 다양한 실시예들에서, 정수 및 부동-소수점 범용 레지스터(GPR)들에 저장된 값들은, 이들이 활성 상태로의 나중의 복귀 시에 다시 사용되지 않으므로 유지되지 않는다.
다양한 실시예들에서, 조건 코드들(플래그들)은 (프로그램 순서에서) 이전의 명령어의 결과에 기초하여 명령어가 어떻게 프로세싱되는지를 결정하기 위해 사용된다. 조건 코드들의 일부 예들은 네거티브 플래그(N), 제로 플래그(Z), 캐리 플래그(carry flag)(C), 및 오버플로우 플래그(V)이다. 다양한 실시예들에서, 이들 조건 코드들은 시퀀스(S2)에서 유지되지 않는다. 부가적으로, 전자 퓨즈(eFuse)들은 일회용 프로그래밍가능, 비-휘발성, 및 비-소거가능 설정들을 제공하는 데 사용된다. 이들 설정들의 예들은 부트 이미지 인증 및 암호화이다. 다양한 실시예들에서, 이들 설정들은 또한 시퀀스(S2)에서 유지되지 않는다. 따라서, 아키텍처화된 상태의 제1 서브세트는 온-다이 저장 요소들에서 유지되지만, 아키텍처화된 상태의 제2 서브세트는 유지되지 않는다.
시퀀스(S2) 동안 아키텍처화된 상태 정보의 제1 서브세트를 온-칩에서 유지하는 것에 부가하여, 프로세서는 셧다운 절차의 명령어들에 의해 지시되어, 비-아키텍처화된 상태 정보의 온-칩 유지를 또한 수행한다. 비-아키텍처화된 상태 정보의 예들은 다양한 암호화 동작들을 위해 사용되는 하나 이상의 개인 키들, 하나 이상의 성능 카운터들, 분기 예측 값들, 하나 이상의 오류 레지스터들, 사용되고 있는 특정 주변 디바이스의 통신 프로토콜 또는 식별자를 표시하는 하나 이상의 주변기기 제어 타이머들 및 레지스터들 등이다.
아키텍처화된 상태의 제1 서브세트 및 임의의 비-아키텍처화된 상태가 시퀀스(S2)에서 유지된 이후, 프로세서는 캐시 메모리 서브시스템의 하나 이상의 레벨들을 플러싱(flush)하도록 셧다운 절차의 명령어들에 의해 지시된다. 일부 실시예들에서, 특정 명령어는 셧다운 절차에 의해 사용된다. 예를 들어, 인터럽트-대기(wait-for-interrupt, WFI) 명령어는 프로세서로 하여금, 유휴 또는 저전력 상태에 진입하기 전에, 프로세서 내의 스레드들로부터의 임의의 나머지 다른 명령어들이 폐기(retire)되는 것을 대기하게 한다. WFI 명령어는 프로그램 순서에서 WFI 명령어가 폐기되기 전에, 각각의 명시적인 메모리 액세스 명령어를 보장하도록 프로세서에게 지시한다. 그 후에, 프로세서가 리셋되고 전력 스위치들이 턴 오프된다. 시퀀스(S3)는 프로세서 내의 회로부가 정상 상태들에 도달하는 데 경과된 시간을 표현한다. 시퀀스(S4)는 프로세서가 슬립 상태에 있는 시간의 양을 표현한다.
프로세서가 슬립 상태에 있는 시퀀스(S4) 동안, 프로세서는 프로세서에 저장된 특정 정보의 프로그래밍가능 입력/출력(PIO) 액세스를 지원한다. 이들 액세스들을 위해, 프로세서는 일시적으로 프로세서의 일부에 전원 공급하고, 판독 또는 기록 액세스를 수행하며, 이어서 프로세서의 일부를 전원 차단(power down)한다. 예를 들어, 성능 카운터들이 액세스될 수 있다. 유지된 정보의 다양한 다른 예들이 또한 액세스될 수 있다. 다양한 실시예들에서, 판독 액세스들에 대해서도 유효 액세스들만을 허용하기 위해 허가 검사가 발생한다.
시퀀스(S5)에서, 웨이크업 이벤트가 검출되고, 프로세서 내의 회로부가 다시 전원 공급된다. 예를 들어, 운영 체제 스케줄러는, 새로운 작업부하가 도착함에 따라 스레드들이 실행을 위해 다시 한번 이용가능하다는 것을 검출할 수 있다. 도시된 바와 같이, 부트 시퀀스 및 오프-칩 메모리로부터의 아키텍처화된 상태의 복원의 단계들이 스킵된다. 이들 단계들은 일련의 시퀀스들(S1 내지 S7)에 포함되지 않은 시퀀스(S9)에 의해 표현된다.
프로세서가 다시 전원 공급된 이후, 리셋 베이스 어드레스 레지스터에 의해 지적되는 메모리 위치로부터 페칭하는 것과 같은 부트 업 시퀀스를 사용하기보다는, 시퀀스(S6)에서 프로세서는 대신, 아키텍처화된 상태 정보의 유지된 제1 서브세트의 복원된 프로그램 카운터에 의해 지적되는 메모리 위치로부터 명령어를 페칭한다. 어떠한 아키텍처화된 상태 정보가 오프-칩 메모리에서 유지되지 않았으므로, 시퀀스(S6)에서 오프-칩 메모리로부터 복원하기 위한 어떠한 아키텍처화된 상태 정보도 존재하지 않는다.
시퀀스(S6)에서, 프로세서는 유휴 상태를 빠져나가고, 유지되지 않았던 아키텍처화된 상태 정보의 제2 서브세트를 초기화하고, 이를테면 캐시 제어기들 및 프로세서의 다른 부분들에 대한 제어 로직을 리셋하고, 활성 상태로 복귀하며, 복원된 프로그램 카운터로부터 페칭한다. 일부 실시예들에서, 복원된 프로그램 카운터의 증분된 어드레스인 어드레스는 인터럽트 핸들러를 지적한다. 일단 대응하는 서브루틴이 완료되면, 시퀀스(S7)가 시작된다. 시퀀스(S1)와 유사한 시퀀스(S7)에서, 프로세서는 스레드들을 실행한다.
도 2를 참조하면, 컴퓨터 시스템(200)의 일 실시예의 일반화된 블록 다이어그램이 도시된다. 도시된 바와 같이, 통신 패브릭(communication fabric)(250)은 디바이스(260), 메모리(270), 전력 관리자(280) 및 프로세서 복합체(processor complex)(240) 사이의 트래픽을 라우팅한다. 다양한 실시예들에서, 컴퓨팅 시스템(200)은 단일 반도체 다이 상에 다수의 유형들의 집적 회로들을 포함하는 시스템 온 칩(SOC)이며, 각각의 집적 회로는 별개의 기능을 제공한다. 다른 실시예들에서, 다수의 기능 유닛들은 멀티-칩 모듈(MCM)과 같은 패키지 내의 개별 다이들이다. 또 다른 실시예들에서, 다수의 기능 유닛들은 인쇄 회로 보드 상의 개별 다이들 또는 칩들이다.
위상 고정 루프(PLL)들과 같은 클록 소스들, 다양한 입력/출력(I/O) 인터페이스들, 인터럽트 제어기들 등은 예시의 용이함을 위해 도 2에 도시되지 않는다. 컴퓨팅 시스템(200)의 컴포넌트들의 개수(및 프로세서 복합체(240) 각각 내에서와 같은, 도 2에 도시된 컴포넌트들에 대한 서브컴포넌트들의 개수)가 실시예마다 다를 수 있음을 또한 유의한다. 컴퓨팅 시스템(200)에 대해 도시된 개수보다 많거나 적은 각각의 컴포넌트/서브컴포넌트가 존재할 수 있다.
다양한 실시예들에서, 상이한 유형들의 트래픽은 패브릭(250)을 통해 독립적으로 흐른다. 독립적인 흐름은 단일 물리적 패브릭 버스가 다수의 오버레이 가상 채널들, 또는 각각이 상이한 유형의 트래픽을 반송하는 전용 소스 및 목적지 버퍼들을 포함하게 허용함으로써 달성된다. 각각의 채널은 상이한 채널들에서의 트랜잭션들 사이에 어떠한 의존성도 없이 독립적으로 흐름 제어된다. 패브릭(250)은 또한 패킷 기반일 수 있고, 브릿지들을 갖는 계층구조, 크로스 바, 포인트-투-포인트(point-to-point), 또는 다른 상호연결부들일 수 있다.
전력 관리(280)는 외부 전력 관리 유닛으로부터 요청된 공급 전압 크기들을 제어하도록 구성될 수 있다. 컴퓨팅 시스템(200)에 대하여 외부 전력 관리 유닛에 의해 생성된 다수의 공급 전압들이 존재할 수 있다.
일부 실시예들에서, 다양한 컴포넌트들에 대해 로컬인 로직은 컴포넌트들의 전력 상태들을 제어할 수 있으며, 전력 상태들은 전원 공급 및 전원 차단, 및 하나 초과의 전력-성능 상태(P-상태) 및 동작 모드를 지원하는 이들 컴포넌트들에 대한 다양한 다른 P-상태들 및 동작 모드들을 포함한다. 다양한 실시예들에서, P-상태는 컴포넌트에 의해 사용되는 동작 전압 및 동작 주파수를 결정하는 데 사용되지만, 동작 모드는 얼마나 많은 서브-컴포넌트들이 전원 공급되는지를 결정한다.
다른 실시예들에서, 전력 관리자(280)는 컴퓨팅 시스템(200)의 다른 컴포넌트들의 전원 공급 및 전원 차단을 제어할 수 있거나, 또는 일부 컴포넌트들에 대한 로컬 제어와 다른 컴포넌트들에 대한 전력 관리자(280)에 의한 제어의 조합이 지원될 수 있다. 전력 관리자(280)는 직접적인 소프트웨어 제어(예를 들어, 소프트웨어는 컴포넌트들의 전원 공급 및/또는 전원 차단을 직접 요청할 수 있음) 하에 있을 수 있고 그리고/또는, 컴퓨팅 시스템(200)을 모니터링하고, 다양한 컴포넌트들이 언제 전원 공급되는지 또는 전원 차단되는지를 결정하도록 구성될 수 있다.
외부 전력 관리 유닛은 일반적으로, 공급 전압들을 생성하고 시스템의 다른 컴포넌트들, 이를테면, 컴퓨팅 시스템(200), 오프-다이 메모리(270), 다양한 오프-칩 주변기기 컴포넌트들(도 2에 도시되지 않음), 이를테면, 디스플레이 디바이스들, 이미지 센서들, 사용자 인터페이스 디바이스들 등에 이들 공급 전압들을 제공하기 위한 회로부를 포함할 수 있다. 따라서, 외부 전력 관리 유닛은 프로그래밍가능 전압 조절기들, 컴퓨팅 시스템(200)에 인터페이싱하기 위한 로직 및 보다 상세하게는 전압 요청들을 수신하기 위한 전력 관리자(280) 등을 포함할 수 있다.
본 명세서에서 사용되는 바와 같이, 용어 "프로세서 복합체"는 공유 캐시 메모리 서브시스템과 같은 로컬 저장소를 사용하여 하나 이상의 프로세서 코어들의 구성을 표기하는 데 사용되고, 작업부하를 함께 프로세싱하도록 구성된다. 부가적으로, 프로세서 복합체는 통신 채널 서브시스템을 통해 다른 컴포넌트들에 커플링된다. 도시된 바와 같이, 프로세서 복합체(240)는 메모리 액세스 요청들 및 응답들을 적어도 프로세서들(210A, 210B)에 제공하기 위한 인터페이스(230)를 사용한다. 프로세서 복합체(240)는 또한 캐시 메모리 서브시스템들(220A, 220B)을 지원한다. 일부 실시예들에서, 캐시 메모리 서브시스템들(220A, 220B) 각각은 프로세서들(210A, 210B)에 대해 오프-다이 레벨 2(L2)캐시를 사용하고, 공유 L3 캐시를 사용할 수 있다. 캐시 메모리 서브시스템들(220A, 220B)에 대한 다른 구성들이 또한 가능하고 고려된다. 프로세서 복합체(240)는 패브릭(250)과의 통신을 위해 인터페이스(230)를 사용할 수 있다.
일부 실시예들에서, 프로세서들(210A, 210B)은 동종 아키텍처를 사용한다. 예를 들어, 프로세서들(210A, 210B) 각각은 미리 정의된 범용 명령어 세트에 따라 명령어들을 실행하기 위한 회로부를 이용하는 중앙 프로세싱 유닛(CPU)과 같은 범용 프로세서이다. 예를 들어, ARM®, x86®, x86-64®, Alpha®, MIPS®, PA-RISC®, SPARC® 또는 임의의 다른 명령어 세트 아키텍처가 선택될 수 있다. 일부 실시예들에서, CPU 내의 각각의 코어는 소프트웨어 프로세스의 하나 이상의 스레드들의 비순차적 실행을 지원하고, 다단계 파이프라인을 포함한다.
다른 실시예들에서, 프로세서들(210A, 210B)은 이종 아키텍처를 사용한다. 그러한 실시예들에서, 프로세서들(210A, 210B) 중 하나 이상은 CPU보다는 매우 병렬의 데이터 아키텍처화된 프로세서이다. 일부 실시예들에서, 프로세서들(210A, 210B)의 이들 다른 프로세서들은 단일 명령어 다중 데이터(SIMD) 코어들을 사용한다. SIMD 코어들의 예들은 그래픽 프로세싱 유닛(GPU)들, 디지털 신호 프로세싱(DSP) 코어들, 또는 다른 것이다.
다양한 실시예들에서, 프로세서들(210A, 210B)의 각각의 프로세서는 하나 이상의 코어들 및 하나 이상의 레벨들의 캐시 메모리 서브시스템을 사용한다. 프로세서들(210A, 210B)은 데이터 및 명령어들에 액세스하기 위해 다수의 하나 이상의 온-다이 레벨들(L1, L2, L2 등)의 캐시들을 사용한다. 소프트웨어 애플리케이션들에 대응하는 스레드들을 프로세싱하는 동안, 프로세서들(210A, 210B)은 각자의 아키텍처화된 상태의 사본들을 저장한다. 도시된 바와 같이, 아키텍처화된 상태는 저장 요소들(212A, 212B)에 저장된다. 아키텍처화된 상태 각각의 서브세트는 유지될 수 있다.
일반적으로, 프로세서들(210A, 210B) 중 특정 프로세서는 그것이 전원 공급되면 활성이 될 수 있다. 프로세서는 거의 지연이 없이 명령어 실행에 이용가능할 수 있다(예를 들어, 그것은 클록 게이팅(gate)될 수 있지만, 명령어들이 실행할 준비가 되면 언게이트(ungate)될 수 있음). 프로세서는, 그것이 전원 차단되면, 또는 명령어들이 실행될 수 있기 전에 상당한 지연을 겪게 될 수 있는 다른 저전력 상태에 있으면, 비활성일 수 있다. 예를 들어, 프로세서가 위상 고정 루프(PLL)의 리셋 또는 재잠금을 요구하면, 그것은 그것의 전원이 유지될지라도 비활성일 수 있다.
프로세서들(210A, 210B) 중 하나 이상은 전력 관리자(280)에 활동 레벨들을 제공하도록 구성될 수 있다. 대안적으로, 프로세서들(210A, 210B) 내의 제어 유닛은 활동 레벨들을 모니터링하고, 어떤 동작 모드를 선택할지에 관한 제안들을 전력 관리자(280)에 전송한다. 프로세서들(210A, 210B)이 상당한 양의 시간 동안 비교적 유휴일 때, 외부 전력 관리 유닛은, 프로세서들(210A, 210B)에 셧다운 절차의 명령어들을 할당하기 시작하도록 운영 체제 커널과 같은 소프트웨어에 의해 지시될 수 있다. 셧다운(전원-차단) 시퀀스 동안, 아키텍처화된 상태는 오프-칩(280)으로 이동되지 않는다. 오히려, 적어도 아키텍처화된 상태의 서브세트가 온-다이 저장 요소들(212A, 212B)에서 유지된다. 다양한 실시예들에서, 저장 요소들(212A, 212B)의 서브세트는 나중의 전원-공급 시퀀스의 발생 시에 비교적 빠른 복원을 위해 아키텍처화된 상태를 효율적으로 저장하기 위한 벌룬 래치 방식, 섀도우 래치 방식 또는 유사한 메커니즘을 사용한다. 이들 방식들은 나중에 도 3 및 도 4에서 추가로 설명된다.
아키텍처화된 상태가 프로세서들(210A, 210B)로부터 외부 메모리(270)로 이동되지 않으므로, 셧다운 절차에 대해 수행되는 명령어들의 수가 상당히 감소된다. 부가적으로, 응답 시간이 또한 감소된다. 추가로, 셧다운 절차에 대한 전력 소비가 또한 감소된다. 컨텍스트 스위치와 대조적으로, 프로세서(210A, 210B)에 대한 활성 상태로의 나중의 복귀 시에, 아키텍처화된 상태 모두가 다시 사용되지는 않는다. 예를 들어, 다양한 실시예들에서, 정수 및 부동-소수점 범용 레지스터(GPR)들에 저장된 값들은, 이들이 활성 상태로의 나중의 복귀 시에 다시 사용되지 않으므로 유지되지 않는다. 따라서, 아키텍처화된 상태의 제1 서브세트는 온-다이 저장 요소들에서 유지되지만, 아키텍처화된 상태의 제2 서브세트는 유지되지 않는다. 셧다운 절차 동안 온-다이 저장 요소들(212A, 212B)에서 아키텍처화된 상태 정보의 제1 서브세트를 유지하는 것에 부가하여, 일부 실시예들에서, 프로세서들(210A, 210B)은 셧다운 절차의 명령어들에 의해 지시되어, 비-아키텍처화된 상태 정보의 온-칩 유지를 또한 수행한다.
일부 실시예들에서, 프로세서들(210A, 210B)은 슬립 상태로 들어가는 것을 계속 준비하며, 슬립 상태에서 그들은 나중에 인터럽트를 서비스하기 위해 웨이크 업될 것이다. 이들 단계들을 수행하기 위한 하나의 표시는 특정 명령어를 프로세싱하는 것이다. 일부 실시예들에서, 인터럽트-대기(WFI) 명령어는 프로세서들(210A, 210B)로 하여금, 프로그램 순서에서 WFI 명령어가 폐기되기 전에 임의의 나머지 다른 명령어들을 대기하게 하고, 하나 이상의 레벨들의 캐시들을 플러싱하게 하며, 전력 스위치들을 리셋 및 턴 오프시키게 한다. 프로세서들(210A, 210B)은 전력 스위치들을 턴 오프시키기 전에 적어도 아키텍처화된 상태 정보의 서브세트를 유지한다. 요소들(212A, 212B)의 유지 저장 요소들은 적어도 2개의 전력 공급부들을 사용한다. 하나의 전력 공급부는 플립-플롭 회로와 같은 저장 요소, 및 데이터 입력을 선택하고 클록 신호를 인에이블 또는 디스에이블시키기 위한 제어 로직에 대해 사용된다. 이러한 전력 공급부는 턴 오프될 수 있다. 다른 전력 공급부는 유지 저장 요소들 내에서 사용되는 유지 로직에 대해 사용되며, 그것은 턴 오프되지 않는다.
일 실시예에서, 프로세서들(210A, 210B)은 슬립 상태 동안 특정 저장된 정보의 프로그래밍가능 입력/출력(PIO) 액세스를 지원한다. 이러한 특정 정보는 요소들(212A, 212B)의 유지 저장 요소들에 저장된다. 이들 액세스들에 대해, 프로세서들(210A, 210B)은 선택된 유지 저장 요소들을 포함하는 그들의 컴포넌트들의 일부에 일시적으로 전원 공급하고, 판독 또는 기록 액세스를 수행하며, 이어서 컴포넌트들을 다시 전원 차단한다. 다양한 실시예들에서, 판독 액세스들에 대해서도 유효 액세스들만을 허용하기 위해 허가 검사가 발생한다.
스레드들이 다시 프로세싱에 이용가능하다는 것을 표시하는 인터럽트와 같은 웨이크업 이벤트가 검출될 때, 프로세서들(210A, 210B) 내의 회로부는 다시 전원 공급된다. 부트 시퀀스 및 오프-칩 메모리(270)로부터의 아키텍처화된 상태의 복원의 단계들은 이들 단계들이 필요하지 않으므로 수행되지 않는다. 따라서, 전원-공급 시퀀스에 대해 응답 시간들이 더 빠르고 전력 소비가 감소된다. 프로세서들(210A, 210B)은 전력 스위치들을 턴 온시킨다. 프로세서가 다시 전원 공급된 이후, 리셋 베이스 어드레스 레지스터에 의해 지적되는 메모리 위치로부터 페칭하는 것과 같은 부트 업 시퀀스를 사용하기보다는, 프로세서들(210A, 210B)은 대신, 아키텍처화된 상태 정보의 유지된 서브세트의 복원된 프로그램 카운터에 의해 지적되는 메모리 위치로부터 명령어를 페칭한다. 일부 실시예들에서, 페칭된 명령어는 인터럽트 서비스 루틴(ISR)의 일부이다.
프로세서들(210A, 210B) 각각은 슬립 상태를 빠져나가고, 유지되지 않았던 아키텍처화된 상태 정보의 서브세트를 초기화하고, 이를테면 캐시 제어기들 및 프로세서의 다른 부분들에 대한 제어 로직을 리셋하고, 활성 상태로 복귀하며, 복원된 프로그램 카운터로부터 페칭한다. 그 후에, 프로세서들(210A, 210B)은 다시 한번 스레드들을 실행한다. 적어도 아키텍처화된 상태의 서브세트를 유지하는 것에 대한 추가적인 세부사항들로 계속하기 전에, 컴퓨팅 시스템(200)의 나머지 컴포넌트들의 추가적인 설명이 제공된다.
다양한 실시예들에서, 외부 전력 관리 유닛은 프로세서 복합체(240)에 대한 P-상태, 및 이에 따라 프로세서들(210A, 210B)에 대한 동일한 동작 전압들 및 동작 클록 주파수들을 결정한다. 일 실시예에서, P-상태 및 동작 모드는 전력 관리자(280) 및 패브릭(250)을 통해 프로세서들(210A 내지 210)로 중계된다. 일부 실시예들에서, 디바이스(260)는 온-칩 기능 유닛과 같은 온-칩 디바이스이다. 대안적으로, 디바이스(260)는 임의의 다양한 컴퓨터 주변 디바이스들 또는 다른 오프-칩 디바이스들을 포함한다. 디바이스(260)의 예들은 오디오, 비디오, 카메라, 및 전화 제어기들 뿐만 아니라 다양한 아날로그, 디지털, 혼합-신호 및 무선-주파수(RF) 기능 유닛들 등이다. 단일 디바이스가 예시의 용이함을 위해 도시되지만, 다양한 실시예들에서, 임의의 수의 디바이스들이 컴퓨팅 시스템(200)에서의 사용을 위해 패브릭(250)에 연결될 수 있다.
패브릭(250) 및 대응하는 인터페이스들은 USB(Universal Serial Bus), PCIe(PCI(peripheral component interconnect) Express)를 포함하는 PCI, 직렬 및 병렬 포트들, 범용 I/O(GPIO), uART(universal asynchronous receiver/transmitter), FireWire 인터페이스, 이더넷 인터페이스, 아날로그-디지털 변환기(ADC), 디지털-아날로그 변환기(DAC) 등과 같은 다양한 통신 프로토콜들을 지원한다. 다른 I/O 디바이스들은 또한 각자의 패브릭 인터페이스에 매체 액세스 제어기(MAC)들과 같은 네트워킹 주변기기들을 포함할 수 있다.
프로세서 복합체(240) 내의 인터페이스(230)는 동기식 DRAM(SDRAM)과 같은 오프-칩 메모리(270)에 대한 적어도 하나의 메모리 제어기를 사용한다. 인터페이스(230)는 요청 큐들에 메모리 요청들을 저장하고, 임의의 수의 메모리 포트들을 사용하며, 메모리(270)를 구현하는 데 사용되는 하나 이상의 메모리 디바이스들에 인터페이싱하는 데 사용되는 메모리 채널들과 인터페이싱하는 데 사용되는 다양한 프로토콜들 중 하나 이상을 사용하여 메모리에 인터페이싱하도록 구성된 회로부를 사용한다. 인터페이스(230)는 신호들의 타이밍, 동기식 DRAM 메모리로의 적절한 클록킹 등을 담당할 수 있다.
다양한 실시예들에서, 인터페이스(230), 인터럽트 제어기(도시되지 않음), 및 패브릭(250) 중 하나 이상은 상이한 프로세서들(210A, 210B) 및 디바이스(260) 사이의 일관성을 보장하기 위해 제어 로직을 사용한다. 일부 실시예들에서, 이러한 회로부는 각각의 소스에 의해 액세스되는 데이터가 최신으로 유지되는 것을 보장하기 위해 캐시 일관성 프로토콜을 이용하는 캐시 일관성 로직을 사용한다. 캐시 일관성 프로토콜의 예는 수정(M), 소유(O), 배타(E), 공유(S), 및 무효(I) 상태들을 갖는 MOESI 프로토콜을 포함한다.
도 3을 참조하면, 유지 저장 요소(300)의 일 실시예의 일반화된 블록 다이어그램이 도시된다. 도시된 바와 같이, 저장 요소(300)는 4개의 입력 신호들을 수신하고 단일 데이터(Q) 출력 신호(350)를 제공한다. 입력 신호들은 데이터(D) 입력(302), 유지(304)로 표기된 제1 제어 입력, 인에이블(306)로 표시된 제2 제어 입력 및 클록 입력(308)이다. 예시된 실시예에서, 저장 요소(300)는 클록 게이터(312), 인버터(310) 및 불린 OR 로직 게이트(314)에 의해 인에이블 및 디스에이블되는 클록 입력(332)을 갖는다.
도시된 바와 같이, 클록 입력들(308, 332)의 상승 에지는 인에이블 입력(306)이 어써팅(assert)될 때 데이터 입력(302) 상의 데이터의 저장 요소(330)에 의한 저장을 허용하는 데 사용된다. 그러나, 다른 실시예들에서, 클록 입력들(308, 332)의 하강 에지가 사용될 수 있다. 여기서, 인에이블 입력(306)이 어써팅되는 것을 표시하기 위해 로직 하이 값이 사용되지만, 다른 실시예들에서 로직 로우 값이 사용될 수 있다. 유사하게, 유지 제어 입력(304)이 어써팅되는 것을 표시하기 위해 로직 로우 값이 사용되지만, 다른 실시예들에서 로직 하이 값이 사용될 수 있다.
저장 요소(330)에 대한 데이터 입력(322)은 멀티플렉서 게이트(320)에 의해 게이팅된다. 부가적으로, 유지 로직(340)은 저장 요소(330)의 출력(350)을 입력 값으로서 수신하고, 이 값을 입력(342)으로서 멀티플렉서 게이트(320)에 제공한다. 멀티플렉서 게이트(320)의 선택 로직은 유지 제어 입력(304)에 기초한다. 멀티플렉서 게이트(320)는 데이터 입력(302) 및 유지된 입력(342)을 입력 값들로서 수신한다. 유지 저장 요소(300)에 대해 4개의 입력들 및 하나의 출력이 도시되지만, 다른 실시예들에서, 다양한 다른 입력 신호들 및 출력 신호들이 사용된다. 다른 신호들의 예들은 테스트 제어 입력, 테스트 입력 데이터, 다른 클록 입력, 상보적인 출력 신호 등이다.
도시된 바와 같이, 유지 저장 요소(300)는 2개의 공급 전압들(VDD, VDD 로우) 뿐만 아니라 2개의 접지 값들(GND, GND 로우)을 사용한다. 다양한 실시예들에서, 유지 저장 요소(300)는 전압 평면들의 2개의 쌍들을 사용한다. 제1 쌍은 "VDD" 및 "GND"로 지정된 전력 평면들을 포함하고, 제2 쌍은 "VDD 로우" 및 "GND 로우"로 지정된 전력 평면들을 포함한다. 일부 실시예들에서, 2개의 접지 평면들보다는 단지 하나의 접지 평면이 사용된다. 다른 실시예들에서, 전계 효과 트랜지스터와 같은 슬리퍼(sleeper) 게이트를 통해 물리적 접지 평면에 커플링되는 가상 접지 평면이 사용된다. 일 실시예에서, 유지 로직은 공급 전압(VDD 로우)을 사용하지만, 유지 저장 요소(300)의 나머지 컴포넌트들은 공급 전압(VDD)을 사용한다.
다양한 실시예들에서, 공급 전압(VDD)은, 공급 전압(VDD)이 임의의 전압 크기를 유지 저장 요소(300)의 컴포넌트들에 공급하는 것으로부터 제거되게 허용하는 전력 스위치들을 통해 전력 평면에 커플링된다. 반대로, 일 실시예에서, 공급 전압(VDD 로우)은 전력 평면에 직접 연결될 수 있고, 계속해서 전압 크기를 유지 로직(340)에 공급한다. 일부 실시예들에서, 공급 전압(VDD)은 다수의 공급 전압 크기들 중 하나를 유지 저장 요소(300)의 컴포넌트들에 제공한다. 예를 들어, 공급 전압(VDD)에 의해 제공되는 공급 전압 크기는 전력 관리자에 의해 선택된 전력-성능 상태들(P-상태들)에 기초하여 조정된다. 일부 실시예들에서, 공급 전압(VDD 로우)에 의해 제공되는 공급 전압 크기는 유지 로직(340) 내의 디바이스들(트랜지스터들)의 누설 전류를 감소시키는 것에 기초한다.
다양한 실시예들에서, 저장 요소(330)는 마스터-슬레이브 래칭 방식을 이용하는 다양한 플립 플롭 회로들 중 하나이다. 저장 요소(330)의 상태로 또한 알려진 Q 출력(350) 상의 저장된 값이 전원-차단 모드들 동안 손실될 수 있으므로, 유지 로직(340)은 상태를 보존하는 데 사용된다. 다양한 실시예들에서, 유지 로직(340)은 벌룬 래치 방식을 사용한다. 다른 실시예들에서, 유지 로직(340)은 섀도우 래치 방식을 사용한다. 일부 실시예들에서, 유지 로직(340)은, 비교적 높은 임계 트랜지스터들이 전원 차단되지 않으므로, 누설 전류 및 대응하는 누설 전력 소비를 감소시키기 위해 이들 트랜지스터들을 사용한다.
다양한 실시예들에서, 유지 저장 요소(300)는 전원-차단 모드와 중첩되는 유지 모드로 동작한다. 예를 들어, 유지 모드는 전원-차단 모드가 실제로 시작되기 직전에 시작될 수 있고, 유지 모드는 전원-차단 모드가 실제로 종료된 직후에 종료될 수 있다. 저장 요소(330)의 상태의 유지를 위한 기능 타이밍을 제공하기 위해, 일부 실시예들에서, 유지 저장 요소(300)에 대한 어떠한 기록 액세스들도 유지 모드가 시작되기 전에 적어도 하나의 클록 사이클에서 발생하도록 허용되지 않는다. 부가적으로, 유지 저장 요소(300)에 대한 어떠한 기록 액세스들도 유지 모드가 종료된 후에 적어도 하나의 클록 사이클에서 발생하도록 허용되지 않는다. 전원-차단 모드가 종료되고 전압 공급(VDD)이 다시 한번 전압 크기를 유지 저장 요소(300)의 컴포넌트들에 공급할 때, 라인(342) 상에서 유지되는 값(Saved_Q)은 저장 요소(330)로의 저장을 위해 즉시 이용가능하다.
도 4를 참조하면, 유지 저장 요소에 대한 타이밍 다이어그램(400)의 일 실시예의 일반화된 블록 다이어그램이 도시된다. 다양한 실시예들에서, 타이밍 다이어그램(400)은 도 3의 유지 저장 요소(300)에 대해 사용될 수 있다. 이전에 설명된 신호들은 동일하게 번호가 부여된다. 앞서 설명된 바와 같이, 유지 모드는 전원-차단 모드와 중첩된다. 도시된 바와 같이, 유지 제어 입력(304)이 어써팅되는 동안 유지 모드가 발생한다. 앞서 설명된 바와 같이, 유지 제어 입력(304)은 로직 로우 값으로 어써팅되지만, 다른 실시예들에서, 로직 하이 값이 사용될 수 있다. 여기서, 유지 모드는 시간 t2와 시간 t4 사이에서 지속된다. 전원-차단 모드(430)의 지속기간은, t2와 t3 사이의 시간의 서브세트인 도시된 시간 윈도우와 같은 유지 모드의 시간 윈도우 내에서 발생한다.
클록 입력(308)은 시간 t1에 도달할 때까지 토글링된다. 직후에, 유지 제어 입력(304)은 시간 t2에서 어써팅되며, 이는 유지 로직 내의 유지 저장 요소의 상태를 "잠금" 한다. 다시 도 3을 간단히 참조하면, 멀티플렉서 게이트(320)는, 유지 제어 입력(304)이 어써팅될 때(예시된 실시예에서는 로직 로우), 라인(342) 상의 데이터(Saved_Q)를 선택한다. 그 후에, 전력 스위치들이 턴 오프되고, 공급 전압 크기들이 제로 값으로 감소되며, 이어서 전원-차단 모드가 시작된다. 그러나, 전압 크기가 여전히 유지 로직에 공급된다.
이후에, 운영 체제 스케줄러는 다시 실행될 애플리케이션들을 검출하고, 전원 공급 시퀀스를 시작한다. 전원-차단 모드(430)의 지속기간은 시간 t3에 도달하기 전에 종료되고, 전력 스위치들은 턴 온되고, 클록 신호(308)는 디어써팅(deassert)으로 유지되며, 이어서 시간 t3에서 유지 제어 입력(304)이 디어써팅된다. 따라서, 유지 로직에 저장된 유지 저장 요소의 상태는 저장 요소의 출력 상에 제공되기 위해 이용가능하여, 따라서 상태를 복원한다. 다시, 도 3을 간단히 참조하면, 라인(342) 상에 저장된 데이터는 시간 t2로부터 시간 t4까지 유지 로직의 출력 라인(350) 상에서 제공된다. 벌룬 및 섀도우 래치들의 다양한 실시예들은 클록 입력(308)보다는 어써팅된 유지 제어 입력(304)에 기초하여 저장 요소의 출력 상에서 상태를 제공하는 것을 허용한다.
시간 t4에서, 유지 제어부(304)가 디어써팅되고, 따라서 유지 모드를 종료한다. 시간 t5에서, 클록 입력(308)은 다시 토글링하기 시작하고, 유지 저장 요소 내의 플립-플롭 회로와 같은 저장 요소는 업데이트들을 위해 다시 한번 이용가능하다. 유지 저장 요소에 의해 사용되는 클록 입력(308)이 시간 t5까지 토글링하지 않지만, 유지된 상태가 시간 t2로부터 시간 t4까지 이용가능하므로, 다른 클록을 사용하는 다른 저장 요소들이 시간 t3로부터 시간 t4까지 유지 저장 요소의 출력 라인(350) 상에서 유지된 상태를 수신하는 것이 가능하다. 다른 제어 로직은 또한 유지된 상태를 수신하며, 업데이트들이 유지 저장 요소에 허용되기 전에 이러한 시간 기간 동안 유지된 상태를 사용할 수 있다. 다양한 실시예들에서, 유지된 상태는 아키텍처화된 상태의 서브세트를 포함하며, 그것은, 프로세서가 프로세싱 활동을 위해 다시 웨이크 업하고 있을 때 다양한 방식들 중 하나로 사용된다. 앞서 설명된 바와 같이, 적어도 정수 및 부동-소수점 범용 레지스터들과 같은, 유지되지 않았던 아키텍처화된 상태의 다른 서브세트가 초기화된다. 일부 실시예들에서, 명령어들은 리셋 베이스 어드레스 레지스터에 의해 지적되는 위치보다는 복원된 프로그램 카운터에 의해 지적되는 위치로부터 페칭되어야 한다. 따라서, 적어도 유지 저장 요소에 저장된 프로그램 카운터 값은 시간 t3과 시간 t4 사이에서 판독된다.
이제 도 5를 참조하면, 프로세서 활성 상태로부터 프로세서 슬립 상태로 스위칭할 때 아키텍처화된 상태를 유지하기 위한 방법(500)의 일 실시예의 일반화된 흐름도가 도시된다. 논의의 목적을 위해, 이러한 실시예(뿐만 아니라 도 6 및 도 7)의 단계들은 순차적 순서로 도시되어 있다. 그러나, 다른 실시예들에서 일부 단계들은 도시된 것과 상이한 순서로 발생될 수 있으며, 일부 단계들은 동시에 수행되고, 일부 단계들은 다른 단계들과 조합되며, 일부 단계들은 부재할 수 있다.
하나 이상의 소프트웨어 애플리케이션들은 컴퓨팅 시스템에서의 프로세싱에 이용가능한 것으로 검출된다(블록(502)). 운영 체제의 커널은 하나 이상의 소프트웨어 애플리케이션들을 프로세스들로 분할하고, 어드레스 공간을 할당하며(블록(504)), 프로세스들을 스레드들로 추가로 분할한다(블록(506)). 다음으로, 커널은 실행을 위해 스레드들을 하나 이상의 프로세서들에 할당한다(블록(508)). 커널 내의 운영 체제 스케줄러는 스레드들의 할당(스케줄링)을 수행한다. 일부 실시예들에서, 컴퓨팅 시스템은 시스템-온-칩(SOC)과 같은 임베디드 시스템이다. 하나 이상의 소프트웨어 애플리케이션들 각각은 사업체 애플리케이션들, 의료 애플리케이션들, 소셜 미디어 애플리케이션들, 영화들, 노래 레코딩들 및 비디오 게임들과 같은 멀티미디어 재생 등에 이용가능한 다양한 애플리케이션들 중 하나일 수 있다.
스케줄링을 위한 임의의 이용가능한 스레드들이 여전히 존재한다면(조건부 블록(510)의 "예" 레그(leg)), 방법(500)의 제어 흐름은, 스레드들이 프로세싱되기 위해 어드레스 공간들이 할당되는 블록(504)으로 복귀한다. 스케줄링을 위한 임의의 이용가능한 스레드들이 존재하지 않는다면(조건부 블록(510)의 "아니오" 레그), 프로세서의 셧다운이 시작된다(블록(512)). 앞서 설명된 바와 같이, 셧다운 절차는 슬립 상태에 진입하기 위한 준비의 단계들을 취하도록 프로세서에게 지시한다.
아키텍처화된 상태 정보의 제1 서브세트의 사본은 프로세서에 대해 온-다이 저장 요소들에 저장된다(블록(514)). 오프-칩 메모리로의 아키텍처화된 상태 정보의 임의의 사본의 어떠한 저장도 존재하지 않는다(블록(516)). 제1 서브세트가 유지될 때, 캐시 메모리 서브시스템의 하나 이상의 레벨들이 플러싱되고, 전력 스위치들이 턴 오프되고, 셧다운 시퀀스가 프로세서에 대해 완료되며, 프로세서가 슬립 상태에 진입한다(블록(518)).
이제 도 6을 참조하면, 프로세서 슬립 상태 동안, 유지된 아키텍처화된 상태에 액세스하기 위한 방법(600)의 일 실시예의 일반화된 흐름도가 도시된다. 슬립 상태에 있는 프로세서의 유지된 정보에 대해 액세스 요청이 검출된다(블록(602)). 앞서 설명된 바와 같이, 유지된 정보는 아키텍처화된 상태 정보의 제1 서브세트 뿐만 아니라 비-아키텍처화된 상태 정보 둘 모두를 포함한다. 다양한 실시예들에서, 판독 액세스들에 대해서도 유효 액세스들만을 허용하기 위해 허가 검사가 발생한다. 일부 실시예들에서, 허가 검사는 프로세서의 임의의 부분에 전원 공급하기 전에 발생한다. 다른 실시예들에서, 허가 검사는 프로세서의 일부에 전원 공급한 이후 발생한다.
프로세서의 적어도 일부가 전원 공급된다(블록(604)). 액세스 요청에서 특정된 유지된 정보를 저장하는 온-다이 저장 요소들이 식별된다(블록(606)). 액세스 타입이 판독 요청이면(조건부 블록(608)의 "판독" 레그), 요청된 그리고 유지된 정보의 사본이 온-다이 저장 요소들로부터 전송된다(블록(610)). 액세스 타입이 기록 요청이면(조건부 블록(608)의 "기록" 레그), 온-다이 저장 요소들 내의 특정된 그리고 유지된 정보는 요청된 기록 데이터를 이용하여 업데이트된다(블록(612)). 액세스가 완료될 때, 프로세서의 전원 공급된 부분들은 다시 한번 전원 차단된다(블록(614)).
이제 도 7을 참조하면, 프로세서 슬립 상태로부터 프로세서 활성 상태로 스위칭할 때 아키텍처화된 상태를 복귀시키기 위한 방법(700)의 일 실시예의 일반화된 흐름도가 도시된다. 슬립 상태에 있는 프로세서에 대해 웨이크업 이벤트가 검출된다(블록(702)). 부트 시퀀스가 수행되지 않는다(블록(704)). 앞서 설명된 바와 같이, 부트 시퀀스는, 복원된 프로그램 카운터가 대신 사용되므로 필요하지 않다.
오프-칩 메모리로부터 임의의 아키텍처화된 상태 정보를 복원하는 것이 수행되지 않는다(블록(706)). 앞서 설명된 바와 같이, 어떠한 아키텍처화된 상태도 오프-칩 메모리에서 이전에 유지되지 않았으므로, 복원할 어떠한 정보도 존재하지 않는다. 전력 스위치들이 턴 온되고 프로세서의 리셋이 수행된다. 아키텍처화된 상태 정보의 제1 서브세트는 온-다이 저장 요소들로부터 복원된다(블록(708)).
이전에 유지되지 않았던 아키텍처화된 상태 정보의 제2 서브세트가 초기화된다(블록(710)). 어드레스 공간들이 스레드들에 대해 할당된다(블록(712)). 프로세서 상에서의 프로세싱을 위한 스레드들이 스케줄링된다(블록(714)). 명렁어들은 리셋 베이스 어드레스 레지스터에 의해 지적되는 위치보다는 복원된 프로그램 카운터에 의해 지적되는 위치로부터 페칭된다(블록(716)). 일부 실시예들에서, 복원된 프로그램 카운터의 증분된 어드레스인 어드레스는 인터럽트 핸들러의 명령어들을 저장하는 메모리 위치들을 지적한다. 일단 대응하는 서브루틴이 완료되면, 스케줄링된 스레드들이 실행된다.
다음으로 도 8을 참조하면, 시스템(800)의 일 실시예의 블록 다이어그램이 도시된다. 도시된 바와 같이, 시스템(800)은 데스크톱 컴퓨터(810), 랩톱 컴퓨터(820), 태블릿 컴퓨터(830), 휴대폰 또는 모바일 전화기(840), 텔레비전(850)(또는 텔레비전에 커플링되도록 구성된 셋톱 박스), 손목 시계 또는 다른 웨어러블 아이템(860), 또는 다른 것의 칩, 회로부, 컴포넌트들 등을 표현할 수 있다. 다른 디바이스들이 가능하고 고려된다. 예시된 실시예에서, 시스템(800)은 외부 메모리(802)에 커플링된 (도 2의) 시스템 온 칩(SOC)(805)과 같은 임베디드 프로세서의 적어도 하나의 예시를 포함한다.
SOC(805)는 하나 이상의 주변기기들(804) 및 외부 메모리(802)에 커플링된다. SOC(805)에 공급 전압들을 공급할 뿐만 아니라 메모리(802) 및/또는 주변기기들(804)에 하나 이상의 공급 전압들을 공급하는 전력 공급부(806)가 또한 제공된다. 다양한 실시예들에서, 전력 공급부(806)는 배터리(예를 들어, 스마트 폰, 랩톱 또는 태블릿 컴퓨터 내의 재충전가능 배터리)를 표현할 수 있다. 일부 실시예들에서, SOC(805)의 하나 초과의 예시가 포함될 수 있다(그리고 하나 초과의 외부 메모리(802)가 또한 포함될 수 있음).
메모리(802)는 동적 랜덤 액세스 메모리(DRAM), 솔리드 스테이트 디스크(SSD)들 또는 다양한 다른 예들의 오프-칩 메모리와 같은 임의의 유형의 메모리일 수 있다. 하나 이상의 메모리 디바이스들은 단일 인라인 메모리 모듈(SIMM)들, 듀얼 인라인 메모리 모듈(DIMM)들 등과 같은 메모리 모듈들을 형성하도록 회로 보드 상에 커플링될 수 있다. 대안적으로, 디바이스들은 칩-온-칩 구성, 패키지-온-패키지 구성, 또는 다중-칩 모듈 구성으로 SOC(805)를 포함하는 IC 또는 SoC로 장착될 수 있다.
주변기기들(804)은 시스템(800)의 유형에 의존하여 임의의 원하는 회로부를 포함할 수 있다. 예를 들어, 일 실시예에서, 주변기기들(804)은 Wi-Fi, 블루투스, 셀룰러, 글로벌 포지셔닝 시스템 등과 같은 다양한 유형들의 무선 통신용 디바이스들을 포함할 수 있다. 또한 주변기기들(804)은 RAM 저장소, 솔리드 스테이트 저장소, 또는 디스크 저장소를 포함하는 부가적인 저장소를 포함할 수 있다. 주변기기들(804)은 터치 디스플레이 스크린들 또는 멀티터치 디스플레이 스크린들을 포함하는 디스플레이 스크린, 키보드 또는 다른 입력 디바이스들, 마이크로폰들, 스피커들 등과 같은 사용자 인터페이스 디바이스들을 포함할 수 있다.
다양한 실시예들에서, 소프트웨어 애플리케이션의 프로그램 명령어들은 이전에 설명된 방법들 및/또는 메커니즘들을 구현하기 위해 사용될 수 있다. 프로그램 명령어들은 C와 같은 고레벨 프로그래밍 언어로 하드웨어의 동작을 설명할 수 있다. 대안적으로, 베릴로그(Verilog)와 같은 하드웨어 설계 언어(hardware design language, HDL)가 사용될 수 있다. 프로그램 명령어들은 비일시적 컴퓨터 판독가능 저장 매체 상에 저장될 수 있다. 많은 유형들의 저장 매체가 이용가능하다. 저장 매체는 프로그램 명령어들 및 수반되는 데이터를 프로그램 실행을 위해 컴퓨터에 제공하기 위해 사용 동안 컴퓨터에 의해 액세스가능할 수 있다. 일부 실시예들에서, 합성 툴(synthesis tool)은 합성 라이브러리로부터 게이트들의 리스트를 포함하는 넷리스트(netlist)를 생성하기 위해 프로그램 명령어들을 판독한다.
위에서 설명된 실시예들은 다만 비한정적 구현예들이라는 것이 강조되어야 한다. 상기의 개시내용이 완전히 이해된다면, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어서 다수의 변형들 및 수정들이 명백해질 것이다. 다음의 청구범위는 모든 그러한 변형들 및 수정들을 망라하는 것으로 해석되도록 의도된다.

Claims (20)

  1. 프로세서로서,
    오프-칩 메모리에 액세스하도록 구성되는 메모리 인터페이스;
    하나 이상의 소프트웨어 애플리케이션들을 프로세싱하기 위한 코어;
    상기 프로세서의 아키텍처화된 상태 정보를 저장하도록 구성되는 복수의 온-다이 저장 요소 - 상기 복수의 온-다이 저장 요소의 제1 서브세트는, 주어진 온-다이 저장 요소로의 상기 아키텍처화된 상태 정보의 저장과 동시에, 상기 주어진 온-다이 저장 요소 내에 저장되는 아키텍처화된 상태 정보의 사본을 저장하도록 구성되는 유지 로직을 포함함 - ; 및
    제어 로직 - 상기 제어 로직은, 프로세서 활성 상태로부터 프로세서 슬립 상태로 전환하기 위한 표시의 검출에 적어도 부분적으로 기초하여:
    상기 오프-칩 메모리와 상기 복수의 온-다이 저장 요소 중 어느 것에도 상기 복수의 온-다이 저장 요소의 제2 서브세트 내에 저장되는 아키텍처화된 상태 정보를 유지하지 않고, 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 내에 저장되는 아키텍처화된 상태 정보의 사본을 유지하고,
    상기 프로세서를 상기 프로세서 슬립 상태로 전환하도록 구성됨 -
    을 포함하는 프로세서.
  2. 제1항에 있어서, 상기 프로세서 슬립 상태로부터 상기 프로세서 활성 상태로 전환하기 위한 표시를 검출하는 것에 응답하여, 상기 제어 로직은 상기 아키텍처화된 상태 정보에 대해 사용하기 위해 상기 온-다이 저장 요소들로부터 상기 제1 서브세트로부터의 상기 아키텍처화된 상태 정보의 상기 사본을 검색하도록 추가로 구성되는, 프로세서.
  3. 제2항에 있어서, 상기 제어 로직은 상기 아키텍처화된 상태 정보를 복원하기 위해 상기 복수의 온-다이 저장 요소의 상기 제2 서브세트로의 저장을 위한 데이터를 초기화하도록 추가로 구성되는, 프로세서.
  4. 제2항에 있어서, 상기 제어 로직은 리셋 베이스 어드레스 레지스터에 의해 지시되는 메모리 위치보다는 상기 아키텍처화된 상태 정보의 복원된 프로그램 카운터에 의해 지시되는 메모리 위치로부터 명령어를 페칭(fetch)하도록 추가로 구성되는, 프로세서.
  5. 제1항에 있어서, 상기 프로세서가 상기 프로세서 슬립 상태에 있는 동안 상기 아키텍처화된 상태 정보에 대한 액세스 요청을 검출하는 것에 응답하여, 상기 제어 로직은,
    상기 프로세서의 적어도 제1 부분에 전원 공급(power up)하고;
    상기 액세스 요청에서 특정된 상기 아키텍처화된 상태 정보의 주어진 서브세트를 저장하는 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 중 하나 이상을 식별하도록 추가로 구성되는, 프로세서.
  6. 제5항에 있어서, 상기 액세스 요청이 판독 요청이라는 것을 검출하는 것에 응답하여, 상기 제어 로직은,
    상기 액세스 요청에 대한 응답으로서 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 중 상기 하나 이상으로부터 상기 아키텍처화된 상태 정보의 상기 주어진 서브세트의 사본을 전송하고;
    상기 프로세서의 상기 제1 부분을 전원 차단(power down)하도록 추가로 구성되는, 프로세서.
  7. 제5항에 있어서, 상기 액세스 요청이 기록 요청이라는 것을 검출하는 것에 응답하여, 상기 제어 로직은,
    기록 데이터를 이용하여 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 중 상기 하나 이상 내의 상기 아키텍처화된 상태 정보의 상기 주어진 서브세트를 업데이트하고;
    상기 프로세서의 상기 전원 공급된 제1 부분을 전원 차단하도록 추가로 구성되는, 프로세서.
  8. 메모리 인터페이스, 코어 및 제어 로직을 포함하는 프로세서에 의해 실행되는 방법으로서,
    상기 메모리 인터페이스에 의해, 오프-칩 메모리에 액세스하는 단계;
    상기 코어에 의해, 명령들을 처리하는 단계;
    상기 제어 로직에 의해, 복수의 온-다이 저장 요소에 상기 프로세서의 아키텍처화된 상태 정보를 저장하는 단계 - 상기 온-다이 저장 요소들의 제1 서브세트는, 주어진 온-다이 저장 요소로의 상기 아키텍처화된 상태 정보의 저장과 동시에, 그리고 프로세서 활성 상태로부터 프로세서 슬립 상태로 전환하기 위한 표시를 검출하기 이전에, 상기 주어진 온-다이 저장 요소에 저장되는 아키텍처화된 상태 정보의 사본을 저장하는 유지 로직을 포함함 -;
    상기 프로세서 활성 상태로부터 상기 프로세서 슬립 상태로 전환하기 위한 표시를 검출하는 것에 응답하여:
    상기 제어 로직에 의해, 상기 오프-칩 메모리와 상기 복수의 온-다이 저장 요소 중 어느 것에도 상기 복수의 온-다이 저장 요소의 제2 서브세트 내에 저장되는 아키텍처화된 상태 정보를 유지하지 않고, 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 내에 저장되는 아키텍처화된 상태 정보의 사본을 유지하는 단계; 및
    상기 제어 로직에 의해, 상기 프로세서가 상기 프로세서 슬립 상태로 전환하는 단계
    를 포함하는, 방법.
  9. 제8항에 있어서,
    상기 제어 로직에 의해, 상기 프로세서 슬립 상태로부터 상기 프로세서 활성 상태로 전환하기 위한 표시를 검출하는 것에 응답하여, 상기 아키텍처화된 상태 정보의 복원을 위해 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트로부터 상기 아키텍처화된 상태 정보의 상기 사본을 검색하는 단계를 추가로 포함하는, 방법.
  10. 제9항에 있어서,
    상기 제어 로직에 의해, 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트로부터 상기 아키텍처화된 상태 정보의 상기 사본을 검색하는 단계 이후에, 상기 아키텍처화된 상태 정보의 복원을 위해 상기 복수의 온-다이 저장 요소의 상기 제2 서브세트로의 저장을 위한 데이터를 초기화하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서,
    상기 제어 로직에 의해, 상기 복수의 온-다이 저장 요소의 상기 제2 서브세트로의 저장을 위한 데이터를 초기화하는 단계 이후에, 리셋 베이스 어드레스 레지스터에 의해 지시되는 메모리 위치보다는 상기 아키텍처화된 상태 정보의 복원된 프로그램 카운터에 의해 지시되는 메모리 위치로부터 명령어를 페칭하는 단계를 더 포함하는, 방법.
  12. 제9항에 있어서,
    상기 제어 로직에 의해, 상기 프로세서 슬립 상태로부터 상기 프로세서 활성 상태로 전환하기 위한 표시를 검출하는 것에 응답하여, 부트 시퀀스를 보류하는 단계를 더 포함하는, 방법.
  13. 제9항에 있어서,
    상기 복수의 온-다이 저장 요소의 상기 제1 서브세트의 상기 유지 로직은 제1 전압을 사용하도록 구성되고, 상기 복수의 온-다이 저장 요소의 상기 제2 서브세트은 제2 전압을 사용하도록 구성되며, 상기 제1 전압은 상기 제2 전압보다 작은, 방법.
  14. 제8항에 있어서, 상기 프로세서가 상기 프로세서 슬립 상태에 있는 동안 상기 아키텍처화된 상태 정보에 대한 액세스 요청을 검출하는 것에 응답하여, 상기 방법은, 상기 제어 로직에 의해:
    상기 프로세서의 적어도 제1 부분에 전원 공급하는 단계; 및
    상기 액세스 요청에서 특정된 상기 아키텍처화된 상태 정보의 주어진 서브세트를 저장하는 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 중 하나 이상의 온 다이 저장 요소를 식별하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서, 상기 액세스 요청이 판독 요청이라는 결정에 응답하여, 상기 방법은, 상기 제어 로직에 의해:
    상기 액세스 요청에 대한 응답으로서 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 중 상기 식별된 하나 이상의 온-다이 저장 요소로부터 상기 아키텍처화된 상태 정보의 상기 주어진 서브세트의 사본을 전송하는 단계; 및
    상기 프로세서의 상기 제1 부분을 전원 차단하는 단계를 더 포함하는, 방법.
  16. 제14항에 있어서, 상기 액세스 요청이 기록 요청이라는 결정에 응답하여, 상기 방법은, 상기 제어 로직에 의해:
    기록 데이터를 이용하여 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 중 상기 식별된 하나 이상의 온-다이 저장 요소에서 상기 아키텍처화된 상태 정보의 상기 주어진 서브세트를 업데이트하는 단계; 및
    상기 프로세서의 상기 제1 부분을 전원 차단하는 단계를 더 포함하는, 방법.
  17. 컴퓨팅 시스템으로서,
    하나 이상의 소프트웨어 애플리케이션들의 명령어들 및 데이터를 저장하기 위한 오프-칩 메모리;
    프로세서의 아키텍처화된 상태 정보를 저장하도록 구성되는 복수의 온-다이 저장 요소 - 상기 복수의 온-다이 저장 요소의 제1 서브세트는, 주어진 온-다이 저장 요소로의 상기 아키텍처화된 상태 정보의 저장과 동시에, 상기 주어진 온-다이 저장 요소에 저장되는 아키텍처화된 상태 정보의 사본을 저장하도록 구성되는 유지 로직을 포함함 -; 및
    프로세서를 포함하며, 상기 프로세서는, 프로세서 활성 상태로부터 프로세서 슬립 상태로 전환하기 위한 표시를 검출하는 것에 적어도 부분적으로 기초하여:
    상기 오프-칩 메모리에 액세스하고,
    상기 오프-칩 메모리와 상기 복수의 온-다이 저장 요소 중 어느 것에도 상기 복수의 온-다이 저장 요소의 제2 서브세트 내에 저장되는 아키텍처화된 상태 정보를 유지하지 않고, 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트 내에 저장되는 아키텍처화된 상태 정보의 사본을 유지하고,
    상기 프로세서를 상기 프로세서 슬립 상태로 전환하도록 구성되는, 컴퓨팅 시스템.
  18. 제17항에 있어서,
    상기 프로세서는, 상기 프로세서 슬립 상태로부터 상기 프로세서 활성 상태로 전환하기 위한 표시를 검출하는 것에 적어도 부분적으로 기초하여, 상기 아키텍처화된 상태 정보를 복원하기 위해 상기 복수의 온-다이 저장 요소의 상기 제1 서브세트로부터 상기 아키텍처화된 상태 정보의 상기 사본을 검색하도록 추가로 구성되는, 컴퓨팅 시스템.
  19. 제18항에 있어서, 상기 프로세서는 상기 아키텍처화된 상태 정보를 복원하기 위해 상기 복수의 온-다이 저장 요소의 상기 제2 서브세트로의 저장을 위한 데이터를 초기화하도록 추가로 구성되는, 컴퓨팅 시스템.
  20. 제18항에 있어서, 상기 프로세서는 리셋 베이스 어드레스 레지스터에 의해 지시되는 메모리 위치보다는 상기 아키텍처화된 상태 정보의 복원된 프로그램 카운터에 의해 지시되는 메모리 위치로부터 명령어를 페칭하도록 추가로 구성되는, 컴퓨팅 시스템.
KR1020197031865A 2017-04-25 2018-04-24 아키텍처화된 상태 유지 KR102372786B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/496,290 2017-04-25
US15/496,290 US10990159B2 (en) 2017-04-25 2017-04-25 Architected state retention for a frequent operating state switching processor
PCT/US2018/029211 WO2018200578A1 (en) 2017-04-25 2018-04-24 Architected state retention

Publications (2)

Publication Number Publication Date
KR20190134693A KR20190134693A (ko) 2019-12-04
KR102372786B1 true KR102372786B1 (ko) 2022-03-08

Family

ID=62148501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197031865A KR102372786B1 (ko) 2017-04-25 2018-04-24 아키텍처화된 상태 유지

Country Status (4)

Country Link
US (1) US10990159B2 (ko)
KR (1) KR102372786B1 (ko)
CN (1) CN110573991B (ko)
WO (1) WO2018200578A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200114017A (ko) * 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
US11693699B2 (en) * 2020-07-02 2023-07-04 Apple Inc. Hybrid memory in a dynamically power gated hardware accelerator
CN113406945B (zh) * 2021-05-26 2022-11-18 东风电驱动系统有限公司 一种宽域频率唤醒信号处理方法及装置
US11972117B2 (en) * 2021-07-19 2024-04-30 EMC IP Holding Company LLC Selecting surviving storage node based on environmental conditions
US20240028222A1 (en) * 2022-07-22 2024-01-25 Dell Products L.P. Sleep mode using shared memory between two processors of an information handling system
CN116701041B (zh) * 2023-07-27 2023-11-10 飞腾信息技术有限公司 一种内存数据保留方法、保留装置和相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040088488A1 (en) * 2002-11-01 2004-05-06 Infineon Technologies North America Corp. Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events
US20140040543A1 (en) * 2009-08-31 2014-02-06 Mahesh Natu Providing State Storage in a Processor for System Management Mode
US20150081980A1 (en) * 2013-09-17 2015-03-19 Advanced Micro Devices, Inc. Method and apparatus for storing a processor architectural state in cache memory

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003281389A1 (en) * 2002-07-03 2004-01-23 Koninklijke Philips Electronics N.V. Multi-processor computer system
US7058829B2 (en) 2002-08-14 2006-06-06 Intel Corporation Method and apparatus for a computing system having an active sleep mode CPU that uses the cache of a normal active mode CPU
US7117319B2 (en) * 2002-12-05 2006-10-03 International Business Machines Corporation Managing processor architected state upon an interrupt
US8694976B2 (en) 2003-12-19 2014-04-08 Intel Corporation Sleep state mechanism for virtual multithreading
US7664970B2 (en) 2005-12-30 2010-02-16 Intel Corporation Method and apparatus for a zero voltage processor sleep state
US8762692B2 (en) * 2007-09-27 2014-06-24 Intel Corporation Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode
US7719876B2 (en) * 2008-07-31 2010-05-18 Unity Semiconductor Corporation Preservation circuit and methods to maintain values representing data in one or more layers of memory
US8364857B2 (en) 2009-08-31 2013-01-29 Qualcomm Incorporated Wireless modem with CPU and auxiliary processor that shifts control between processors when in low power state while maintaining communication link to wireless network
WO2013015924A1 (en) * 2011-07-26 2013-01-31 Marvell World Trade Ltd. Zero power hibernation mode with instant on
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
US9383812B2 (en) 2012-09-28 2016-07-05 Intel Corporation Method and apparatus for efficient store/restore of state information during a power state
JP6434144B2 (ja) * 2014-07-18 2018-12-05 アップル インコーポレイテッドApple Inc. デバイスにおけるレイズジェスチャ検出
US9426750B2 (en) 2014-07-29 2016-08-23 Apple Inc. Apparatus, system, and method for parallelizing UE wakeup process

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040088488A1 (en) * 2002-11-01 2004-05-06 Infineon Technologies North America Corp. Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events
US20140040543A1 (en) * 2009-08-31 2014-02-06 Mahesh Natu Providing State Storage in a Processor for System Management Mode
US20150081980A1 (en) * 2013-09-17 2015-03-19 Advanced Micro Devices, Inc. Method and apparatus for storing a processor architectural state in cache memory

Also Published As

Publication number Publication date
KR20190134693A (ko) 2019-12-04
WO2018200578A1 (en) 2018-11-01
CN110573991B (zh) 2023-06-09
US20180307297A1 (en) 2018-10-25
US10990159B2 (en) 2021-04-27
CN110573991A (zh) 2019-12-13

Similar Documents

Publication Publication Date Title
KR102372786B1 (ko) 아키텍처화된 상태 유지
US11079261B2 (en) System on a chip with always-on processor
US10915160B2 (en) System on a chip with fast wake from sleep
US10261894B2 (en) System on a chip with always-on processor which reconfigures SOC and supports memory-only communication mode
US9703354B2 (en) Dynamic voltage and frequency management based on active processors
US9817469B2 (en) Digital power estimator to control processor power consumption
US8438416B2 (en) Function based dynamic power control
US20170068575A1 (en) Hardware Migration between Dissimilar Cores
KR20210091048A (ko) Soc의 동적 열 분배를 위한 시스템, 장치 및 방법
JP7495422B2 (ja) 適応的な相互接続ルーティングのためのシステム、装置及び方法
US10552323B1 (en) Cache flush method and apparatus
US11080188B1 (en) Method to ensure forward progress of a processor in the presence of persistent external cache/TLB maintenance requests
US20160216756A1 (en) Power management in computing devices
CN117581189A (zh) 降低远存储器中的存储器功率使用

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant