KR20140113481A - 루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템 - Google Patents

루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템 Download PDF

Info

Publication number
KR20140113481A
KR20140113481A KR1020140029884A KR20140029884A KR20140113481A KR 20140113481 A KR20140113481 A KR 20140113481A KR 1020140029884 A KR1020140029884 A KR 1020140029884A KR 20140029884 A KR20140029884 A KR 20140029884A KR 20140113481 A KR20140113481 A KR 20140113481A
Authority
KR
South Korea
Prior art keywords
transition
recovery time
low power
state
active state
Prior art date
Application number
KR1020140029884A
Other languages
English (en)
Other versions
KR101637075B1 (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 KR20140113481A publication Critical patent/KR20140113481A/ko
Application granted granted Critical
Publication of KR101637075B1 publication Critical patent/KR101637075B1/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
    • 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
    • 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/3243Power saving in microcontroller unit
    • 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/3246Power saving characterised by the action undertaken by software initiated power-off
    • 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/325Power saving in peripheral 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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
    • 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
    • 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/4418Suspend and resume; Hibernate and awake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)
  • Information Transfer Systems (AREA)

Abstract

기기는 저전력 상태에 있는지 판단된다. 기기의 저전력 상태에서 활성 상태로의 전이가 개시되며, 저전력 상태에서 활성 상태로의 전이를 위한 고정된 최소 복구 시간이 정의된다. 기기의 저전력 상태에서 활성 상태로의 전이에 해당하는 기기의 기능이 식별되며, 고정된 최소 복구 시간의 만료 이전에 전이가 완료되도록 적어도 부분적으로 그 기능에 기반하여 기기의 저전력 상태에서 활성 상태로의 전이가 완료된다.

Description

루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템{METHOD, APPARATUS, AND SYSTEM FOR IMPROVING RESUME TIMES FOR ROOT PORTS AND ROOT PORT INTEGRATED ENDPOINTS}
본 개시 내용은 컴퓨팅 시스템에 관한 것으로, 특히 (그러나 배타적인 것은 아님) 루트 포트(root ports) 및 루트 포트 통합 엔드포인트(root port integrated endpoints)의 재시작 시간(resume times)에 관한 것이다.
사용자들의 매일의 생활에서 전자 장치들이 더욱 복잡해지고 언제 어디서나 자유롭게 네트워크에 접속할 수 있게(ubiquitous)됨에 따라, 더 많은 각종의 요건들이 이들 전자장치들에 부과되고 있다. 이러한 요건들 중 많은 것을 만족시키기 위해, 많은 전자 장치들은, CPU, 통신 기기, 그래픽 가속기 등과 같은 많은 여러 기기들을 포함한다. 많은 상황에서, 이들 기기들 사이에는 상당량의 통신이 있을 수 있다. 더욱이, 많은 사용자들은 장치의 성능에 관해 기대치가 높다. 사용자들은 자신들의 장치가 수행하는 동작을 기다리는데 관대하지 못하다. 게다가, 많은 장치들은 다량의 기기간 통신에 관련될 수 있는 갈수록 더 복잡하고 부담이 많은 작업을 수행하고 있다. 그러므로, 이들 기기들 사이에서 몇몇 통신은 응답 시간이 빠른 것이 유리할 수 있다.
실시예들은 첨부 도면의 각 도면을 예를 들되 제한을 두지 않고 예시되며, 첨부 도면에서 유사한 참조 부호는 유사한 구성요소를 나타낸다.
도 1은 적어도 하나의 예시적인 실시예에 따른 멀티코어 프로세서를 포함하는 컴퓨팅 시스템의 블록도의 일 실시예를 도시한다.
도 2는 적어도 하나의 예시적인 실시예에 따른 인터커넥트 아키텍처를 포함하는 컴퓨팅 시스템의 일 실시예를 도시한다.
도 3은 적어도 하나의 예시적인 실시예에 따른 레이어드 스택(layered stack)을 포함하는 인터커넥트 아키텍처의 일 실시예를 도시한다.
도 4는 적어도 하나의 예시적인 실시예에 따른 인터커넥트 아키텍처 내에서 생성된 또는 수신된 요청 또는 패킷의 일 실시예를 도시한다.
도 5는 적어도 하나의 예시적인 실시예에 따른 인터커넥트 아키텍처용 송신기 및 수신기 쌍의 일 실시예를 도시한다.
도 6은 예시적인 전력 관리 상태 전이 차트를 도시한다.
도 7은 적어도 하나의 실시예에 따른 흐름도이다.
도 8은 적어도 하나의 실시예에 따른 흐름도이다.
도 9는 적어도 하나의 예시적인 실시예에 따른 흐름도이다.
도 10은 컴퓨팅 시스템의 다른 실시예의 블록도를 도시한다.
하기 설명에서, 본 발명의 완전한 이해를 제공하기 위하여, 많은 특정 세부사항, 이를 테면, 특정 형태의 프로세서 및 시스템 구성, 특정 하드웨어 구조, 특정 구조적 및 마이크로 구조 세부사항, 특정 레지스터 구성, 특정 명령 형태, 특정 시스템 컴포넌트, 특정 측정/높이, 특정 프로세서 파이프라인 스테이지 및 동작 등의 예가 언급된다. 그러나, 본 기술에서 통상의 지식을 가진 자들에게는 이러한 특정 세부사항이 본 발명을 실시하는데 이용될 필요가 없다는 것을 인식할 것이다. 다른 사례로, 본 발명을 불필요하게 방해하지 않도록 하기 위하여, 널리 공지된 컴포넌트 또는 방법, 이를 테면, 특정하고 대안적인 프로세서 아키텍처, 기술된 알고리즘에 특정한 로직 회로/코드, 특정 펌웨어 코드, 특정 상호접속 동작, 특정 로직 구성, 특정 제조 기술 및 물질, 특정 컴파일러 구현, 알고리즘의 코드로의 특정 표현, 컴퓨터 시스템의 특정 전원 차단 및 게이팅 기술/로직 및 기타 특정 동작 세부사항은 상세하게 기술되지 않았다.
비록 다음의 실시예는 루트 포트 및 루트 포트 통합 엔드포인트의 재시작 시간을 개선하는 것을 참조하여 기술될 수 있을지라도, 이를 테면, 컴퓨팅 플랫폼 또는 마이크로프로세서, 다른 실시예들이 다른 형태의 집적 회로 및 로직 디바이스에 적용가능하다. 본원에 기술된 실시예들의 유사 기술과 가르침은 개선된 재시작 시간으로 인해 역시 혜택을 받을 수 있는 다른 형태의 회로나 반도체 장치에 적용될 수 있다. 예를 들면, 기술된 실시예들은 데스크탑 컴퓨터 시스템 또는 울트라북(Ultrabooks™)으로 제한되지 않는다. 그 뿐아니라 다른 기기들, 이를 테면, 휴대 기기, 태블릿, 다른 박형의 노트북, 시스템 온 칩(SOC) 기기, 및 임베디드 애플리케이션에도 사용될 수 있다. 휴대 기기의 몇 가지 예는 셀룰러 폰, 인터넷 프로토콜 기기, 디지털 카메라, 개인 휴대 정보 단말기(PDA), 및 휴대 PC를 포함한다. 임베디드 애플리케이션은 일반적으로 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 시스템 온 칩, 네트워크 컴퓨터(NetPC), 셋탑 박스, 네트워크 허브, 광역 네트워크(WAN) 스위치, 또는 아래에서 교시된 기능 및 동작을 수행할 수 있는 다른 모든 시스템을 포함한다. 또한, 본원에 기술된 장치, 방법 및 시스템은 물리적인 컴퓨팅 기기들로 제한되지 않고 개선된 재시작 시간을 위한 소프트웨어 최적화에도 관련할 수 있다.
도 1은 적어도 하나의 예시적인 실시예에 따른 루트 포트 및 루트 포트 통합 엔드포인트의 재시작 시간을 개선하는 것과 연관된 컴포넌트를 도시하는 블록도이다. 도 1의 예는 단지 루트 포트 및 루트 포트 통합 엔드포인트의 재시작 시간을 개선하는 것과 연관된 컴포넌트들의 예일 뿐이며, 청구범위의 범주를 제한하지 않는다. 예를 들면, 어떤 컴포넌트에 기여된 동작이 변할 수 있고, 컴포넌트의 개수가 변할 수 있고, 및/또는 컴포넌트의 구성이 변할 수 있는 등등일 수 있다. 예를 들면, 몇몇 예시적인 실시예에서, 도 1의 예의 한 컴포넌트에 기여가능한 동작은 하나 이상의 다른 컴포넌트에 배정될 수 있다.
프로세서(100)는 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 휴대 프로세서, 애플리케이션 프로세서, 코-프로세서, 시스템 온 칩(SOC), 또는 코드를 실행하는 기타 기기와 같은 어느 프로세서나 프로세싱 기기라도 포함한다. 일 실시예에서, 프로세서(100)는 적어도 두개의 코어, 즉 코어(101 및 102)를 포함하며, 이들 코어는 비대칭 코어 또는 (예시된 실시예의) 대칭 코어를 포함할 수 있다. 그러나, 프로세서(100)는 대칭 또는 비대칭일 수 있는 몇 개의 프로세싱 요소라도 포함할 수 있다.
일 실시예에서, 프로세싱 요소는 소프트웨어 쓰레드를 지원하는 하드웨어 또는 로직을 말한다. 하드웨어 프로세싱 요소의 예는 실행 상태 또는 구조적 상태와 같이, 프로세서의 상태를 유지할 수 있는 쓰레드 유닛, 쓰레드 슬롯, 쓰레드, 프로세스 유닛, 컨텍스트, 컨텍스트 유닛, 논리 프로세서, 하드웨어 쓰레드, 코어, 및/또는 모든 기타 요소를 포함한다. 다시 말해서, 일 실시예에서, 프로세싱 요소는 코드와 독립적으로 연관될 수 있는 모든 하드웨어, 이를 테면, 소프트웨어 쓰레드, 오퍼레이팅 시스템, 애플리케이션, 또는 기타 코드를 지칭한다. 물리적 프로세서(또는 프로세서 소켓)은 일반적으로 코어 또는 하드웨어 쓰레드와 같은 잠재적으로 다른 프로세싱 요소를 몇개라도 포함하는 집적 회로를 지칭한다.
코어는 종종 독립적인 구조적 상태를 유지할 수 있는 집적 회로상에 배치된 로직을 지칭하는데, 여기서 각각의 독립적으로 유지된 구조적 상태는 적어도 몇 개의 전용 실행 자원과 연관된다. 코어에 대조적으로, 하드웨어 쓰레드는 일반적으로 독립적인 구조적 상태를 유지할 수 있는 집적 회로상에 놓여진 어느 로직을 지칭하며, 여기서 독립적으로 유지된 구조적 상태는 실행 자원들로의 액세스를 공유한다. 알 수 있는 바와 같이, 어떤 자원이 공유되고 다른 자원은 구조적 상태에 전용되는 경우, 하드웨어 쓰레드와 코어의 명명 규칙에는 구분이 겹친다. 그렇지만, 코어 및 하드웨어 쓰레드는 오퍼레이팅 시스템에 의해서는 개개의 논리 프로세서로서 보이며, 이 경우 오퍼레이팅 시스템은 각각의 논리 프로세서상에서 동작을 개별적으로 스케줄할 수 있다.
도 1에 도시된 바와 같이, 물리적 프로세서(100)는 두 개의 코어, 즉 코어(101 및 102)를 포함한다. 여기서, 코어(101 및 102)는 대칭적 코어, 즉, 동일한 구성, 기능적 유닛, 및/또는 로직을 갖는 코어로서 간주된다. 다른 실시예에서, 코어(101)는 비순차적 프로세서 코어(out-of-order processor core)를 포함하지만, 코어(102)는 순차적 프로세서 코어(in-order processor core)를 포함한다. 그러나, 코어(101 및 102)는 네이티브 코어, 소프트웨어 관리형 코어, 네이티브 명령어 세트 아키텍처(native Instruction Set Architecture (ISA))를 실행하도록 구성된 코어, 번역된 명령어 세트 아키텍처(translated Instruction Set Architecture (ISA))를 실행하도록 구성된 코어, 공동-디자인 코어(co-designed core), 또는 다른 공지된 코어의 모든 형태로부터 개별적으로 선택될 수 있다. 이종 코어 환경(즉, 비대칭 코어)에서, 이진 변환(binary translation)과 같은 몇 가지 형태의 변환이 하나 또는 두 코어상에서 코드를 스케줄 또는 실행하는데 활용될 수 있다. 더 설명하자면, 코어(101)에서 예시된 기능 유닛들은 코어(102) 내 유닛들이 설명된 실시예에서 유사한 방식으로 동작하는 것 처럼 아래에서 상세히 설명될 것이다.
도시된 바와 같이, 코어(101)는 두 개의 하드웨어 쓰레드(101a 및 101b)를 포함하며, 이들 쓰레드는 또한 하드웨어 쓰레드 슬롯(101a 및 101b)이라고도 지칭될 수 있다. 그러므로, 일 실시예에서 오퍼레이팅 시스템과 같은 소프트웨어 엔티티는 프로세서(100)를 잠재적으로 네 개의 개별적인 프로세서, 즉, 네 개의 소프트웨어 쓰레드를 동시에 실행할 수 있는 네 개의 논리 프로세서 또는 프로세싱 요소라고 여긴다. 앞에서 언급한 바와 같이, 제1 쓰레드는 아키텍처 상태 레지스터(101a)와 연관되고, 제2 쓰레드는 아키텍처 상태 레지스터(101b)와 연관되고, 제3 쓰레드는 아키텍처 상태 레지스터(102a)와 연관되며, 제4 쓰레드는 아키텍처 상태 레지스터(102b)와 연관될 수 있다. 여기서, 각각의 아키텍처 상태 레지스터(101a, 10b, 101c, 및 101d)는 전술한 바와 같이 프로세싱 요소, 쓰레드 슬롯, 또는 쓰레드 유닛이라고 지칭될 수 있다. 예시된 바와 같이, 아키텍처 상태 논리 프로세서(101a)는 아키텍처 상태 레지스터(101b)에서 복제되며, 그래서 아키텍처 상태/콘텍스트가 논리 프로세서(101a) 및 논리 프로세서(101b) 마다 저장될 수 있다. 코어(101)에서, 할당기 및 리네이머(renamer) 블록(130) 내 명령어 포인터 및 리네이밍 로직과 같은 다른 작은 자원들 역시 쓰레드(101a 및 101b) 마다 복제될 수 있다. 리오더/리타이어먼트(reorder/retirement) 유닛(135) 내 리-오더 버퍼들, 브랜치 타겟 버퍼(branch target buffer (BTB)) 및 명령어-변환 버퍼(instruction-translation buffer (I-TLB))(120), 로드/저장 버퍼들, 및 큐와 같은 일부 자원들은 분할(partitioning)을 통하여 공유될 수 있다. 범용 내부 레지스터, 페이지-테이블 기본 레지스터(들), 로우-레벨 데이터-캐시 및 데이터-TLB(150), 실행 유닛(들)(140), 및 비순차 유닛(135)의 부분들과 같은 다른 자원들은 전체가 잠재적으로 공유된다.
프로세서(100)는 전체적으로 공유될 수 있고, 분할을 통해 공유될 수 있고, 또는 프로세싱 요소에 의해/그 프로세싱 요소에 전용될 수 있는 다른 자원을 종종 포함한다. 도 1에서, 프로세서의 예시적인 논리 유닛/자원을 가진 순전히 예시적인 프로세서의 실시예가 도시된다. 프로세서는 이러한 기능적 유닛 뿐만 아니라 도시되지 않은 다른 공지의 기능적 유닛, 로직, 또는 펌웨어를 포함할 수 있거나 또는 생략할 수 있다는 것을 알아야 한다. 도시된 바와 같이, 코어(101)는 간략화된 대표적인 비순차적(out-of-order;OOO) 프로세서 코어를 포함한다. 그러나, 순차적 프로세서는 다른 실시예에서 활용될 수 있다. OOO 코어는 실행될/갖게 될 브랜치를 예측하는 BTB 및 I-TLB(120) 및 명령어에 필요한 어드레스 변환 엔트리를 저장하는 BTB 및 I-TLB(120)를 포함한다.
코어(101)는 BTB 및 I-TLB(120)에 결합되어 페치된 요소를 디코드하는 디코드 모듈(125)을 더 포함한다. 일 실시예에서, 페치 로직(fetch logic)은 쓰레드 슬롯(101a 및 101b)과 각기 연관된 개개의 시퀀서를 포함한다. 보통 코어(101)는 프로세서(100)상에서 실행가능한 명령을 정의/명시하는 제1 ISA와 연관된다. 제1 ISA의 부분인 머신 코드 명령은 종종 수행될 명령 또는 동작을 참조/명시하는 명령 중의 일부분(op 코드라 지칭됨)를 포함한다. 디코드 로직(125)은 이들 명령들을 이들의 op코드로부터 인식하고 제1 ISA에 의해 정의된 바와 같은 처리를 위한 파이프라인상에서 디코딩된 명령을 전달하는 회로를 포함한다. 예를 들면, 아래에서 더 상세히 설명되는 바와 같이, 일 실시예에서, 디코더(125)는 교류적 명령(transactional instruction)과 같은 특정 명령을 인식하도록 설계된 또는 구성된 로직을 포함한다. 디코더(125)에 의한 인식의 결과로서, 아키텍처 또는 코어(101)는 특정하고 사전 정의된 행위를 행하여 적절한 명령과 연관된 작업(task)을 수행한다. 본원에서 기술된 작업, 블록, 동작, 및 방법 중 어느 것은 단일 또는 다중 명령에 응답하여 수행될 수 있다는 것을 주목하는 것이 중요하며, 그 중의 일부는 새로운 또는 오래된 명령일 수 있다. 일 실시예에서, 디코더(125)는 동일한 ISA(그의 서브세트)을 인식한다는 것을 알아야 한다. 대안적으로, 이종 코어 환경에서, 디코더(125)는 제2 ISA(제1 ISA의 서브세트 또는 별개의 ISA)를 인식한다.
일 예에서, 리네이머/할당기 블록(130)은 레지스터와 같은 자원을 예약하고 명령어 처리 결과를 저장하는 할당기를 포함한다. 그러나, 쓰레드(101a 및 101b)는 잠재적으로 비순차적 실행을 수행할 수 있으며, 이 경우 할당기 및 리네이머 블록(130)은 명령 결과를 추적하는 리오더 버퍼와 같은 다른 자원을 예약하기도 한다. 유닛(130)은 또한 프로그램/명령어 참조 레지스터를 프로세서(100) 내부의 다른 레지스터로 리네임하는 레지스터 리네이머를 포함할 수 있다. 리오더/리타이어먼트 유닛(135)은 비순차적 실행 및 나중에 비순차적으로 실행된 명령어의 순차적 전환을 지원하는 전술한 리오더 버퍼, 로드 버퍼, 및 저장 버퍼와 같은 컴포넌트를 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들) 블록(140)은 실행 유닛 상의 명령어/동작을 스케줄하는 스케줄러 유닛을 포함한다. 예를 들면, 부동 소수점 명령은 이용가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트에서 스케줄된다. 정보 명령어 처리 결과를 저장하는 실행 유닛들과 연관된 레지스터 파일들 또한 포함된다. 예시적인 실행 유닛은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛, 및 다른 공지의 실행 유닛을 포함한다.
로우 레벨 데이터 캐시 및 데이터 변환 버퍼(D-TLB)(150)는 실행 유닛(들)(140)에 결합된다. 데이터 캐시는 잠재적으로 메모리 코히어런스 상태로 보유되는 데이터 오퍼랜드와 같은, 최근에 사용된/동작된 요소를 저장한다. D-TLB는 가상/선형-물리 어드레스 변환물을 저장한다. 특정 예로서, 프로세서는 물리적 메모리를 다수의 가상 페이지로 나누는 페이지 테이블 구조를 포함할 수 있다.
여기서 코어(101 및 102)는 온-칩 인터페이스(110)와 연관된 제2 레벨 캐시와 같은 하이 레벨 또는 그 이상 레벨의 캐시에 액세스하는 것을 공유한다. 하이 레벨 또는 그 이상 레벨은 실행 유닛(들)보다 높아져 가는 또는 더 멀리 있는 캐시 레벨을 말한다. 일 실시예에서, 하이 레벨 캐시는 최종 레벨 데이터 캐시, 즉, 제2 또는 제3 레벨 데이터 캐시와 같이 프로세서상의 메모리 계층에서 마지막 캐시이다. 그러나, 하이 레벨 캐시는 이것이 명령어 캐시와 연관될 수 있거나 또는 명령어 캐시를 포함할 수 있기에 그렇게만 제한되는 것은 아니다. 명령어 캐시의 일종인 트레이스 캐시가 최근에 디코딩된 트레이스를 저장하기 위해 디코더(125) 뒷단에 대신하여 결합될 수 있다. 여기서 명령어는 잠재적으로 다수의 마이크로 명령어(마이크로 동작)으로 디코드될 수 있는 매크로 명령어(즉, 디코더에 의해 인식되는 일반 명령어)를 말한다.
도시된 구성에서, 프로세서(100)는 또한 온-칩 인터페이스 모듈(110)을 포함한다. 아래에서 더 상세히 기술되는 바와 같이, 역사적으로 메모리 컨트롤러는 프로세서(100) 외부의 컴퓨터 시스템에 포함되어 왔다. 본 시나리오에서, 온-칩 인터페이스 모듈(110)은 프로세서(100) 외부의 기기들, 이를 테면, 시스템 메모리(175), (종종 메모리(175)에 연결시키는 메모리 컨트롤러 허브 및 주변 장치에 연결시키는 I/O 컨트롤러 허브를 포함하는) 칩셋, 메모리 컨트롤러 허브, 노쓰브릿지, 또는 기타 집적 회로와 통신한다. 또한 이 시나리오에서, 버스(105)는 모든 공지의 인터커넥트, 이를 테면, 멀티-드롭 버스, 점대점 인터커넥트, 직렬 인터커넥트, 병렬 버스, 코히어런트(예를 들면, 캐시 코히어런트) 버스, 레이어드 프로토콜 아키텍처, 차동 버스(differential bus), 및 GTL 버스를 포함할 수 있다.
메모리(175)는 프로세서(100)에 전용될 수 있거나 또는 시스템 내 다른 기기들과 공유될 수 있다. 메모리(175)의 공통 형태의 예는 DRAM, SRAM, 비휘발성 메모리(NV 메모리), 및 기타 공지의 저장 스토리지 기기를 포함한다. 기기(180)는 메모리 컨트롤러 허브에 결합된 그래픽 가속기, 프로세서 또는 카드, I/O 컨트롤러 허브에 결합된 데이터 스토리지, 무선 송수신기, 플래시 기기, 오디오 컨트롤러, 네트워크 컨트롤러, 또는 기타 공지의 기기를 포함할 수 있다.
그러나, 최근에, 더 많은 로직과 기기들이 SOC와 같은 단일의 다이상에서 집적되므로, 이들 기기들 각각은 프로세서(100)상에 포함될 수 있다. 예를 들면, 일 실시예에서, 메모리 컨트롤러 허브는 프로세서(100)와 동일한 패키지 및/또는 다이상에 있다. 여기서, 코어 (온-코어(on-core) 위치)(110)의 일부분은 메모리(175) 또는 기기(180)와 같은 다른 기기와의 인터페이스를 위한 하나 이상의 컨트롤러(들)를 포함한다. 그러한 기기와의 인터페이스를 위한 인터커넥트 및 컨트롤러를 포함하는 구성은 종종 온-코어(또는 언-코어(un-core)) 구성이라고 지칭된다. 예로서, 온-칩 인터페이스(110)는 온-칩 통신을 위한 링 인터커넥트 및 오프-칩 통신을 위한 고속의 직렬 점대점 링크(105)를 포함한다. 그러나, SOC 환경에서, 네트워크 인터페이스, 코-프로세서, 메모리(175), 기기(180), 및 다른 모든 공지의 컴퓨터 장치/인터페이스와 같이 더욱 더 많은 기기들이 단일의 다이 또는 집적 회로상에서 통합되어 고기능 및 저전력 소모의 소형 폼 팩터를 제공할 수 있다.
일 실시예에서, 프로세서(100)는 애플리케이션 코드(176)를 컴파일, 변환, 및/또는 최적화하여 본원에 기술된 장치 및 방법을 지원하거나 또는 그와 인터페이스하는 컴파일러, 최적화, 및/또는 변환기 코드(translator code)(177)를 실행할 수 있다. 컴파일러는 종종 소스 텍스트/코드를 타겟의 텍스트/코드로 변환하는 프로그램 또는 프로그램들의 세트를 포함한다. 보통, 컴파일러를 이용하여 프로그램/애플리케이션 코드를 컴파일하는 것은 고급 프로그래밍 언어 코드를 저급의 머신 또는 어셈블리 언어 코드로 변환하는 여러 국면과 경로에서 이루어진다. 그러나, 간단한 컴파일을 위해서는 단일 경로 컴파일러들(single pass compilers)도 여전히 활용될 수 있다. 컴파일러는 공지된 모든 컴파일 기법을 활용할 수 있으며 어휘 분석, 전처리, 파싱, 의미론적 분석, 코드 생성, 코드 변환, 및 코드 최적화와 같은 공지된 모든 동작을 수행할 수 있다.
대형의 컴파일러는 종종 다국면을 포함하지만, 가장 흔한 이들 국면은 일반적인 두 가지 국면, 즉 (1) 프론트-엔드 (즉 이곳에서는 일반적으로 구문 처리, 의미 처리 및 일부 변환/최적화가 일어날 수 있음), 및 (2) 백 엔드 (즉, 이곳에서는 일반적으로 분석, 변환, 최적화, 및 코드 생성이 일어남) 중에 포함된다. 일부 컴파일러는 컴파일러의 프론트-엔드와 백 엔드 사이를 뚜렷하지 않게 묘사하는 미들(a middle)이라 칭한다. 그 결과로서, 컴파일러의 삽입, 연관, 생성, 또는 기타 동작이라는 것은 전술한 국면 또는 경로 중 어디에서건 뿐만 아니라 컴파일러의 다른 모든 공지의 국면 또는 경로에서 언급될 수 있다. 예시적인 예로서, 컴파일러는 컴파일 동작의 하나 이상의 국면에서, 컴파일 동작의 프론트 엔드 국면에서 콜/동작의 삽입 및 그런 다음 변환 국면 동안 해당 콜/동작의 저급 코드로의 변환과 같은 동작, 콜, 기능 등을 잠재적으로 삽입한다. 다이나믹 컴파일 동작 동안, 컴파일러 코드 또는 다이나믹 최적화 코드는 그러한 동작/콜을 삽입할 수 있을 뿐만 아니라, 런타임 동안 실행을 위한 코드를 최적화할 수 있다는 것을 주목하여야 한다. 특정한 예시적인 예로서, 이진 코드(이미 컴파일된 코드)는 런타임 동안 동적으로 최적화될 수 있다. 여기서, 프로그램 코드는 다이나믹 최적화 코드, 이진 코드, 또는 이들의 조합을 포함할 수 있다.
컴파일과 유사하게, 이진 변환기와 같은 변환기는 코드를 정적 또는 동적으로 변환하여 코드를 최적화 및/또는 변환한다. 그러므로, 코드, 애플리케이션 코드, 프로그램 코드, 또는 기타 소프트웨어 환경의 실행이라는 것은, (1) 동적으로 또는 정적으로든 프로그램 코드를 컴파일하고, 소프트웨어 구조를 유지하고, 다른 동작을 수행하고, 코드를 최적화하고, 또는 코드를 변환하는 컴파일러 프로그램(들), 최적 코드 최적화기, 또는 변환기의 실행과, (2) 최적화된/컴파일된 애플리케이션 코드와 같은 동작/콜을 포함하는 주 프로그램 코드의 실행과, (3) 소프트웨어 구조를 유지하고, 다른 소프트웨어 관련 동작을 수행하고, 또는 코드를 최적화하는 주 프로그램 코드와 연관된 라이브러리와 같은 기타 프로그램 코드의 실행, 또는 (4) 이들의 조합을 말할 수 있다.
일부 구현에서, 전력 관리 컨트롤러(160)는 또한 하드웨어 및 소프트웨어로 제공되고 구현될 수 있다. 시스템, 및 해당 시스템에 연결된 기기들은 다른 (예를 들면, 중간적인) 상태 및 조건 중에서 풀(full) 전력, 낮은 전력, 및 무전력 상태를 포함하여 다수의 전력 상태를 지원할 수 있다. 전력 관리 컨트롤러(160)는 다른 기능 중에서도 시스템 전력 소모를 최소화하는데 도움이 되는 기능을 제공하고 작업을 수행할 수 있고, 시스템 열 한계(system thermal limits)를 관리할 수 있으며, 시스템 배터리 수명을 극대화할 수 있다. 전력 관리는 다른 예들 중에서도 시스템 속도, 잡음, 배터리 수명, 및 AC 전력 소모를 비롯한 시스템의 다른 기능 및 특성을 관리하는 것을 포함할 수 있다.
온-칩 인터페이스는 재시작 시간 모듈(104)을 포함할 수 있다. 재시작 시간 모듈(104)은 프로세서(182) 및 메모리(184)를 포함할 수 있다. 온-칩 인터페이스(110) 및 기기(180)는 주변 구성요소 인터커넥트 익스프레스(peripheral component interconnect express (PCIe)-호환, 또는 다른 연결부를 통하여 통신할 수 있다. 주변 구성요소 인터커넥트(peripheral component interconnect (PCI)) 및 PCIe와 같은 일부의 인터커넥트 프로토콜에서, 구조화된 메커니즘은 (예를 들어, 소정의 전력 관리 정책 및 역량과 관련하여) 기기들의 엔트리들을 풀 전력 상태로 유예하기 위해 제공될 수 있다. 예를 들면, 기기 오퍼레이팅 시스템의 전력 관리 로직과 같은 소프트웨어는 적어도 부분적으로 여러 전력 상태로의 진입과 빠져나옴을 제어할 수 있다. 몇몇 사례에서, 플랫폼 정책은, 예를 들어, 전력 상태의 초기화와 관련하여, 소프트웨어가 기기에게 구성 요청(configuration requests)을 발행하게 해주기 전에 최소 발견 시간(minimum recovery times)(지연)을 제공할 수 있다. 예를 들면, 유휴 전력 사용을 개선하기 위하여, 전력 관리 정책 및 기능은 별개로 부착된 기기, 루트 포트(Root Ports (RP)), 및 루트 복합 통합 엔드 포인트(Root Complex Integrated End Points (RCIE)) 등 뿐만 아니라 인터커넥트를 통해 연결된 외부 기기를 비롯하여 기기들을 전력 관리 상태로 돌리려 시도할 수 있는데, 이 경우 이들 기기들로의 전력이 제거될 수 있거나, 기기들이 저전력 상태에서 동작할 수 있거나, 이들 기기들이 보조 전력하에서 동작할 수 있다. 이러한 전력 상태로부터 재시작하면, 소프트웨어는 명시된 양의 시간(예를 들면, 10ms, 100ms 등)을 대기한 다음 구성 요청을 발행할 것이다. 이것은 재시작 시간에 상당한 영향을 미칠 수 있다. 그러나, 그렇게 정의된 최소의 복구 시간(minimum recovery time)은 몇 몇 상황과 일부 장치와 관련하여 유익하겠지만, 다른 상황 및 다른 기기와 관련하여서는 바람직하지 않을 수 있다.
몇몇 구현에서, 온-칩 인터페이스는 재시작 시간 모듈(104)을 포함할 수 있다. 재시작 시간 모듈(104)은 프로세서(182) 및 메모리(184)를 포함할 수 있다. 재시작 시간 모듈(104)은 루트 포트, 지정된 포트(designated port (DP)), 또는 RCIE와 같은 내부 기기가 전력 상태의 전이 후(예를 들면, 초기 전력 온, D3에서 D0로의 전이 등) 기기가 얼마나 빨리 (예를 들어 소프트웨어와 관련하여) 제1 구성을 위해 준비될지를 나타내는 기기별 복구 시간을 알려주도록 구성될 수 있다. 실시예에서, 재시작 시간 모듈(104)은 내부 기기가 전력 상태 전이(예를 들면, 초기 전력-온, D3에서 D0로의 전이 등)를 완료할 때 또는 전력 상태 전이를 완료할 준비가 될 때 내부 기기들로 하여금 인터럽트를 트리거하거나, 기 설정된 복구 시간으로 강제로 끝내기하거나, 또는 그렇지 않으면 소프트웨어에 의해 수행될 구성 작업을 시작시키는 인터럽트 메커니즘(예를 들면, 성능 설명, 인터럽트를 가능하게 하는 제어 메커니즘)을 더 포함한다.
몇몇 구현에서, 기기 별 재시작 시간 기능은 하나 이상의 기능 레지스터에서 정의될 수 있으며 소프트웨어-기반 툴을 포함하여, 하나 이상의 전력 관리 툴에 의해 액세스될 수 있다. 일 예에서, 기기들(예를 들면, 외부 또는 내부 기기를 포함하여 하나 이상의 기기들(180))을 열거하는 동안, 재시작 시간 모듈(104)은 기기의 재시작 시간 기능을 액세스하고 이를 나중의 사용을 위하여 메모리(184)에 저장할 수 있다. 재시작 시간 모듈(104)은 또한 기기의 인터럽트 기능을 판독하고 내부 기기가 구성 액세스할 준비가 되었을 때 인터럽트의 트리거링 및 인식을 가능하게 해주는 폴링 메커니즘 대신 인터럽트 메커니즘을 구현할 수 있다. 예를 들면, 적절한 시점에서, 내부 기기는 저전력 상태로 전이할 수 있다. 실시예에서, 재시작 시간 모듈(104)은 내부 기기가 저전력 상태에서 풀 전력 상태로 전이하는 것을 판단할 수 있다. 또한, 다른 예들 중에서도, 재시작 시간 모듈(104)은 기기(180)의 재시작 시간 광고 값을 메모리(184)로부터 검색한 다음 상응하는 기능 구조에서 내부 기기에 의해 광고되었던 메모리(184) 내 기간 동안을 대기 한 후 제1 구성 요청을 발행할 수 있다.
다른 실시예에서, 재시작 시간 모듈(104)은 기기(180)를 제어하는 서브-시스템으로 전력을 공급하려는 것을 판단할 수 있다. 만일 기기(180)가 저전력 상태를 벗어났을 때 기기(180)가 인터럽트를 송신하도록 구성되는 경우, 재시작 시간 모듈(104)은 제1 구성 액세스를 위한 준비가 되었다는 것을 나타내는 인터럽트가 기기(180)로부터 수신되기를 대기할 수 있다. 두 가지 사례에서, 재시작 시간 모듈은 100ms로 고정된 구조화된 대기 시간을 제거한 다음 제1 구성 액세스를 이용하여 기기에 액세스할 수 있다. 재시작 시간 모듈(104)은 또한 소프트웨어의 고정된 구조화된 대기 시간을 제거한 다음 전력 관리 제어 및 상태 레지스터(power management control and status register (PMCSR))에 기록한 후 제1 구성 액세스를 이용하여 기기에 액세스할 수 있다. 역방향 호환성(backwards compatibility)을 유지하기 위하여, 구조화된 복구 시간(예를 들면, (PMCSR 기록 후 액세스에 필요한) 레거시(legacy) 100ms 또는 10ms 지연)은 재시작 시간 모듈(104)에 의해 확장되지 않아야 하며, 기 설정된 재시작 시간 기능을 채용하지 않는 기기에 대해서는 디폴트로서 지원될 수 있다. 전술한 바와 같이, 온-칩 인터페이스(110) 및 기기(180)는 PCIe, MIPI, QPI, 또는 다른 프로토콜-호환 인터커넥트 링크와 같은 링크 연결을 통해 통신할 수 있다.
PCIe의 주 목적은 여러 밴더들의 컴포넌트 및 기기들이 다수의 세분화 시장, 즉, 클라이언트(데스크탑 및 모바일), 서버(표준형과 기업형), 및 임베디드 및 통신 기기에 걸쳐있는 개방형 아키텍처에서 상호운용을 가능하게 해주는 것이다. PCIe는 광범위한 미래 컴퓨팅 및 통신 플랫폼용도로 정의한 고성능의 범용 I/O 인터커넥트이다. 그의 사용 모델, 로드-스토어 아키텍처, 및 소프트웨어 인터페이스와 같은 일부 PCI 속성은 개정(revision)을 통해 유지되어 온 반면, 이전의 병렬 버스 구현은 매우 스케일러블하고, 완전 직렬 인터페이스로 대체되었다. 더욱 최근 개정판의 PCIe는 점대점 인터커넥트, 스위치-기반 기술, 및 성능과 특징의 새로운 레벨을 전달하는 패킷형 프로토콜에서의 발전을 이용하고 있다. PCIe에 의해 지원되는 최신의 특징들 중 몇 가지 중에는 전력 관리, 서비스 품질(QoS), 핫-플러그/핫-스왑 지원(Hot-Plug/Hot-Swap support), 데이터 무결성(Data Integrity), 및 에러 핸들링(Error Handling)이 있다.
도 2를 참조하면, 한 세트의 컴포넌트를 인터커넥트하는 점대점 링크로 구성된 기본 구조의 실시예가 도시된다. 시스템(200)은 컨트롤러 허브(215)에 결합된 프로세서(205) 및 시스템 메모리(210)을 포함한다. 프로세서(205)는 마이크로프로세서, 호스트 프로세서, 임베디드 프로세서, 코-프로세서, 또는 기타 프로세서와 같은 모든 프로세싱 요소를 포함한다. 프로세서(205)는 전면 버스(front-side bus)(FSB)(206)를 통하여 컨트롤러 허브(215)에 결합된다. 일 실시예에서, FSB(206)는 아래에서 기술되는 바와 같이, 직렬의 점대점 인터커넥트이다. 다른 실시예에서, 링크(206)는 여러 인터커넥트 표준과 호환되는 직렬의 기타 인터커넥트 아키텍처를 포함한다.
시스템 메모리(210)는 랜덤 액세스 메모리(RAM), 비휘발성(NV) 메모리, 또는 시스템(200) 내 기기들에 의해 액세스 가능한 기타 메모리와 같은 모든 메모리 기기를 포함한다. 시스템 메모리(210)는 메모리 인터페이스(216)를 통하여 컨트롤러 허브(215)에 결합된다. 메모리 인터페이스의 예는 2배속(double-data rate (DDR)) 메모리 인터페이스, 듀얼-채널 DDR 메모리 인터페이스, 및 다이나믹 RAM(DRAM) 메모리 인터페이스를 포함한다.
일 실시예에서, 컨트롤러 허브(215)는 PCIe 인터커넥트 계층에서 루트 허브, 루트 콤플렉스, 또는 루트 컨트롤러이다. 컨트롤러 허브(215)의 예는 칩셋, 메모리 컨트롤러 허브(memory controller hub (MCH)), 노쓰브릿지, 인터커넥트 컨트롤러 허브(interconnect controller hub (ICH)), 사우쓰브릿지, 및 루트 컨트롤러/허브를 포함한다. 종종 칩셋이라는 용어는 두 개의 물리적으로 별개인 컨트롤러 허브들, 즉, 인터커넥트 컨트롤러 허브(ICH)에 결합된 메모리 컨트롤러 허브(MCH)를 말한다. 현재의 시스템은 종종 프로세서(205)와 통합된 MCH를 포함하지만, 컨트롤러 허브(215)가 아래에서 기술되는 것과 유사한 방식으로 I/O 기기와 통신한다는 것을 주목하여야 한다. 일부 실시예에서, 피어-투-피어 라우팅은 옵션으로 루트 콤플렉스(215)를 통하여 지원된다.
여기서, 컨트롤러 허브(215)는 직렬 링크(219)를 통하여 스위치/브릿지(220)에 결합된다. 인터페이스/포트(217 및 221)이라고도 지칭할 수 있는 입력/출력 모듈(217 및 221)은 컨트롤러 허브(215)와 스위치(220) 사이에서 통신을 제공하는 레이어드 프로토콜 스택을 포함한다. 일 실시예에서, 다수개의 기기들이 스위치(220)에 결합될 수 있다.
스위치/브릿지(220)는 패킷/메시지를 기기(225)로부터 업스트림으로, 즉, 루트 콤플렉스를 향한 계층 위쪽의 컨트롤러 허브(215)로 라우트하며, 패킷/메시지를 다운스트림으로, 즉, 루트 컨트롤러로부터 멀리 있는 계층 아래쪽의 프로세서(205) 또는 시스템 메모리(210)로부터 기기(225)로 라우트한다. 일 실시예에서, 스위치(220)는 다중 가상 PCI-PCI 브릿지 기기의 논리적 어셈블리라고 지칭된다. 기기(225)는 I/O 기기, 네트워크 인터페이스 컨트롤러(Network Interface Controller (NIC)), 및 부속(add-in) 카드, 오디오 프로세서, 네트워크 프로세서, 하드-드라이브, 스토리지 기기, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 휴대 스토리지 기기, 파이어와이어 기기(Firewire device), 유니버셜 시리얼 버스(Universal Serial Bus (USB)) 기기, 스캐너, 및 기타 입력/출력 기기와 같은 전자 시스템에 결합될 모든 내부 또는 외부 기기 또는 컴포넌트를 포함한다. 종종 PCIe에서, 기기는 통칭하여 엔드포인트라 지칭된다. 비록 명확하게 도시되지 않았을지라도, 기기(225)는 레거시 또는 다른 버전의 PCI 기기를 지원하는 PCIe 내지 PCI/PCI-X를 포함할 수 있다. PCIe에서 엔드포인트 기기는 종종 레거시, PCIe, 또는 루트 콤플렉스 통합된 엔트포인트로서 분류된다.
그래픽 가속기(230)는 또한 시리얼 링크(232)를 통하여 컨트롤러 허브(215)에 결합된다. 일 실시예에서, 그래픽가속기(230)는 ICH에 결합되어 있는 MCH에 결합된다. 스위치(220), 고로 I/O 기기(225)는 ICH에 결합된다. I/O 모듈(231 및 218)은 그래픽 가속기(230)와 컨트롤러 허브(215) 사이에서 통신하는 레이어드 프로토콜 스택을 구현하기도 한다. 전술한 MCH와 마찬가지로, 그래픽 컨트롤러 또는 그래픽 가속기(230) 자체는 프로세서(205) 내에 통합될 수 있다. 또한, 몇몇 구현에서, 하나 이상의 내부 기기들(예를 들면, 211, 212, 213)이, 예를 들면, 칩셋, 컨트롤러 허브, 루트 콤플렉스 등에서 제공될 수 있다. 예를 들면, 루트 콤플렉스 통합 엔드포인트(RCIE), 다운스트림 포트 또는 루트 포트(예를 들면, 217), 내부 PCI 기기, 및 기타 내부 기기들이 제공될 수 있다. 본원에 기술된 기능은 내부 기기 뿐만 아니라 외부 기기에도 적용될 수 있다.
도 3을 참조하면, 레이어드 프로토콜 스택의 실시예가 도시된다. 레이어드 프로토콜 스택(300)은 퀵패스 인터커넥트(Quick Path Interconnect (QPI)) 스택, PCIe 스택, 차세대 고성능 컴퓨팅 인터커넥트 스택, 또는 기타 레이어드 스택과 같은 모든 형태의 레이어드 통신 스택을 포함한다. 비록 도 2-5에 관하여 바로 아래의 설명이 PCIe 스택에 관련한 것일지라도, 다른 인터커넥트 스택에도 동일한 개념이 적용될 수 있다. 일 실시예에서, 프로토콜 스택(300)은 트랜잭션 계층(305), 링크 계층(310), 및 물리 계층(320)을 포함하는 PCIe 프로토콜 스택이다. 도 2에서 인터페이스들(217, 218, 221, 222, 226, 및 231)과 같은 인터페이스는 통신 프로토콜 스택(300)으로서 대표될 수 있다. 통신 프로토콜 스택으로서의 표현은 프로토콜 스택을 구현/포함하는 모듈 또는 인터페이스로서 또한 지칭될 수 있다.
PCIe는 컴포넌트들 사이에서 정보를 교환하기 위하여 패킷을 사용한다. 패킷은 트랜잭션 계층(305) 및 데이터 링크 계층(310)에서 형성되어 정보를 전송 컴포넌트에서 수신 컴포넌트로 전달한다. 전송된 패킷이 다른 계층들을 통해 지나갈 때, 이 패킷들은 이들 계층들에서 패킷을 다루는데 필요한 부가 정보와 더불어 확장된다. 수신측에서는 역 프로세스가 일어나고 패킷들은 이들의 물리적 계층(320) 표시에서 데이터 링크 계층(310) 표시로 변환되고 마지막으로는 (트랜잭션 계층 패킷의 경우) 수신 기기의 트랜잭션 계층(305)에 의해 처리될 수 있는 형태로 변형된다.
트랜잭션 계층
일 실시예에서, 트랜잭션 계층(305)은 기기의 프로세싱 코어와 인터커넥트 아키텍처, 이를 테면, 데이터 링크 계층(310)과 물리 계층(320) 사이에서 인터페이스를 제공하는 것이다. 이와 관련하여, 트랜잭션 계층(305)의 일차적 기능은 패킷 (즉, 트랜잭션 계층 패킷들 또는 TLPs)의 조립과 분해이다. 트랜잭션 계층(305)은 전형적으로 TLP의 신용-기반 흐름 제어(credit-base flow control)를 관리한다. PCIe는 분할 트랜잭션(split transactions), 즉 타겟 기기가 응답에 필요한 데이터를 수집하는 동안 링크가 다른 트래픽을 전달하는 것을 허용하는 시간 별로 요청과 응답이 분리된 트랜잭션을 구현한다.
또한, PCIe는 신용-기반 흐름 제어를 활용한다. 이러한 방식에서, 기기는 트랜잭션 계층(305)에서 각각의 수신 버퍼들 마다 초기 신용량을 광고한다. 도 2의 컨트롤러 허브(115)와 같은 링크의 반대 쪽에 있는 외부 기기는 각각의 TLP에 의해 소모된 신용의 개수를 카운트한다. 트랜잭션은 해당 트랜잭션이 신용 한계를 초과하지 않은 경우 전송될 수 있다. 응답을 수신하면, 신용 량이 재저장된다. 신용 방식의 장점은 신용 한계에 도달하지 않는다면 성능에 영향을 미치지 않는다는 것이다.
일 실시예에서, 네 개의 트랜잭션 어드레스 공간은 구성 어드레스 공간, 메모리 어드레스 공간, 입력/출력 어드레스 공간, 및 메시지 어드레스 공간을 포함한다. 메모리 공간 트랜잭션은 데이터를 메모리-맵핑된 장소에/로 전달하는 읽기 요청과 쓰기 요청들 중 하나 이상을 포함한다. 일 실시예에서, 메모리 공간 트랜잭션은 두 가지 상이한 어드레스 포맷, 예를 들면, 32-비트 어드레스와 같이 짧은 어드레스 포맷, 또는 64-비트 어드레스와 같은 긴 어드레스 포맷을 이용할 수 있다. 구성 공간 트랜잭션은 PCIe 기기들의 구성 공간을 액세스하는데 사용된다. 구성 공간으로의 트랜잭션은 읽기 요청과 쓰기 요청을 포함한다. 메시지 공간 트랜잭션(또는 간략히 메시지)은 PCIe 에이전트들 사이에서 대역 내(in-band) 통신을 지원하기 위해 정의된다. 그러므로, 일 실시예에서, 트랜잭션 계층(305)은 패킷 헤더/패이로드(306)를 조립한다. 현재 패킷 헤더/패이로드의 포맷은 PCIe 명세 웹사이트에서 PCIe 명세 내에서 찾아볼 수 있다.
잠깐 도 4를 참조하면, PCIe트랜잭션 디스크립터의 실시예가 도시된다. 일 실시예에서, 트랜잭션 디스크립터(400)는 트랜잭션 정보를 전달하기 위한 메커니즘이다. 이와 관련하여, 트랜잭션 디스크립터(400)는 시스템에서 트랜잭션의 식별을 지원한다. 다른 잠재적 사용은 트랜잭션 순서의 디폴트의 트랙킹 변형 및 트랜잭션의 채널과의 연계를 포함한다.
트랜잭션 디스크립터(400)는 글로벌 식별자 필드(402), 속성 필드(404) 및 채널 식별자 필드(406)를 포함한다. 예시된 예에서, 글로벌 식별자 필드(402)는 로컬 트랜잭션 식별자 필드(408) 및 소스 식별자 필드(410)를 포함하는 것으로 도시되어 있다. 일 실시예에서, 글로벌 트랜잭션 식별자(402)는 모든 아웃스탠딩 요청(outstanding requests)에 대해 고유하다.
일 구현에 따르면, 로컬 트랜잭션 식별자 필드(408)는 요청 에이전트에 의해 생성된 필드이며, 이는 그 요청 에이전트가 완료를 필요로 하는 모든 아웃스탠딩 요청에 대해 고유하다. 더욱이, 이 예에서, 소스 식별자(410)는 PCIe 계층 내 요청 에이전트를 고유하게 식별한다. 따라서, 소스 ID(410)와 함께, 로컬 트랜잭션 식별자(408) 필드는 계층 도메인 내 트랜잭션의 글로벌 식별을 제공한다.
속성 필드(404)는 트랜잭션의 특성과 관계를 명시한다. 이와 관련하여, 속성 필드(404)는 트랜잭션의 디폴트 처리의 변형을 허용하는 부가 정보를 잠재적으로 제공하는데 사용된다. 일 실시예에서, 속성 필드(404)는 우선권 필드(412), 예약 필드(414), 순서 필드(ordering field)(416), 및 노-스누프 필드(no-snoop field)(418)를 포함한다. 여기서, 우선권 서브-필드(412)는 우선권을 트랜잭션에게 할당하는 개시자에 의해 변경될 수 있다. 예약 속성 필드(414)는 미래의 사용을 위해 또는 벤더-정의된 사용을 위해 예약하여 남긴다. 우선권 또는 보안 속성을 이용하는 있음직한 사용 모델은 예약 속성 필드를 이용하여 구현될 수 있다.
이 예에서, 순서 속성 필드(416)는 디폴트 순서 룰을 변경할 수 있는 순서 형태를 전달하는 옵션 정보를 공급하는데 사용된다. 일 예의 구현에 따르면, "0"이라는 순서 속성은 디폴트 순서 룰이 적용되는 것을 의미하고, "1"이라는 순서 속성은 릴렉스드 순서(relaxed ordering)를 의미하며, 이 경우 쓰기는 동일 방향으로 쓰기를 패스할 수 있으며 읽기 완료는 동일한 방향으로 쓰기를 패스할 수 있다. 스누프 속성 필드(418)는 트랜잭션이 스누프되는 경우를 판단하는데 활용된다. 도시된 바와 같이, 채널 ID 필드(406)는 트랜잭션이 연관된 채널을 식별한다.
링크 계층
데이터 링크 계층(310)이라고도 지칭되는 링크 계층(310)은 트랜잭션 계층(305)과 물리 계층(320) 사이의 중간단으로서 작용한다. 일 실시예에서, 링크 계층(310)의 기능은 두 링크 컴퍼들 사이에서 트랜잭션 계층 패킷들(Transaction Layer Packets (TLPs))을 교환하는 신뢰성 있는 메커니즘을 제공하는 것이다. 링크 계층(310)의 일 측은 트랜잭션 계층(305)에 의해 조립된 TLP를 받아들이고, 패킷 순차 식별자(311), 즉, 식별 번호 또는 패킷 번호를 적용하고, 에러 검출 코드, 예를 들면, CRC(312)를 계산 및 적용하며, 변형된 TLP를 물리 계층(320)으로 전달하여 물리 계층을 넘어 외부 기기로 전송한다.
물리 계층
일 실시예에서, 물리 계층(320)은 논리 서브 블록(321) 및 전기 서브-블록(322)을 포함하여 패킷을 물리적으로 외부 기기에 전송한다. 여기서, 논리 서브-블록(321)은 물리 계층(321)의 "디지털화" 기능을 담당한다. 이와 관련하여, 논리 서브-블록은 물리 서브 블록(322)을 통해 전송하기 위한 송출 정보를 준비하는 송신 섹션, 및 수신한 정보를 식별하고 준비한 다음 이를 링크 계층(310)에 전달하는 수신기 섹션을 포함한다.
물리 블록(322)은 송신기 및 수신기를 포함한다. 송신기는 논리 서브-블록(321)으로부터 심볼을 공급받고, 송신기는 이를 직렬화하고 외부 기기에 전송한다. 수신기는 외부 기기로부터 직렬화된 심볼을 공급받고 수신된 신호를 비트-스트림으로 변환한다. 비트-스트림은 역-직렬화되고 논리 서브-블록(321)에 공급된다. 일 실시예에서, 8b/10b 전송 코드가 사용되며, 이 경우 10-비트 심볼이 전송/수신된다. 여기서, 패킷을 프레임(323)과 함께 프레임화하기 위한 특별한 심볼이 사용된다. 게다가, 일 예에서, 수신기는 또한 인입하는 직렬 스트림으로부터 복구된 심볼 클럭을 제공하기도 한다.
전술한 바와 같이, 비록 트랜잭션 계층(305), 링크 계층(310), 및 물리 계층(320)이 PCIe 프로토콜 스택의 특정 실시예를 참조하여 설명되지만, 레이어드 프로토콜 스택이 그렇게만 제한되지 않는다. 실제로, 어느 레이어드 프로토콜이라도 포함되고/구현될 수 있다. 예로서, 레이어드 프로토콜로서 대표되는 포트/인터페이스는, (1) 패킷을 조립하는 제1 계층, 즉, 트랜잭션 계층과, 패킷을 차례로 배열하는 제2 계층, 즉, 링크 계층과, 패킷을 전송하는 제3 계층, 즉, 물리 계층을 포함한다. 특정한 예로서, 공동 표준 인터페이스(common standard interface (CSI)) 레이어드 프로토콜이 사용된다.
그 다음으로 도 5를 참조하면, PCIe 직렬 점대점 기본 구조의 실시예가 도시된다. 비록 PCIe 직렬 점대점 링크의 실시예가 예시되지만, 직렬 점대점 링크는 직렬 데이터를 전송하는 어느 전송 경로라도 포함하므로, 직렬 점대점 링크는 그렇게만 제한되지 않는다. 도시된 실시예에서, 기본적인 PCIe 링크는 두 개의, 저 전압의 차동 구동된 신호 쌍, 즉, 송신 쌍(506/511) 및 수신 쌍(512/507)을 포함한다. 따라서, 기기(505)는 데이터를 기기(510)에 전송하는 전송 로직(506) 및 데이터를 기기(510)로부터 수신하는 수신 로직(507)을 포함한다. 다시 말해서, 두 개의 전송 경로, 즉 경로(516 및 517), 그리고 두 개의 수신 경로, 즉 경로(518 및 519)가 PCIe 링크에 포함된다.
전송 경로는 전송 선로, 구리 선로, 광 선로, 무선 통신 채널, 적외선 통신 링크, 또는 기타 통신 경로와 같이 데이터를 전송하기 위한 모든 경로를 지칭한다. 두 기기들, 이를 테면 기기(505)와 기기(510) 사이의 연결은 링크, 이를 테면 링크(415)라고 말한다. 링크는 하나의 통로(lane)를 지원할 수 있으며, 각각의 통로는 한 세트의 차동 신호 쌍(한 쌍은 전송용, 한 쌍은 수신용)을 나타낸다. 대역폭을 조정하기 위하여, 링크는 xN (여기서 N은 1, 2, 4, 8, 12, 16, 32, 64, 또는 그 이상과 같이 지원된 모든 링크 대역폭임)으로 표시된 다수의 통로의 모임일 수 있다.
차동 쌍은 차동 신호를 전송하는 두 전송 경로, 이를 테면, 선로(416 및 417)를 말한다. 예로서, 선로(416)가 로우 전압 레벨에서 하이 전압 레벨로, 즉 상승 에지로 토글할 때, 선로(417)는 하이 로직 레벨에서 로우 로직 레벨로, 즉 하강 에지로 진행한다. 차동 신호는 더 양호한 신호 무결성, 즉, 교차-결합(cross-coupling), 전압 오버슈트/언더슈트, 링잉(ringing) 등과 같은 더 양호한 전기적 특성을 보인다. 이것은 타이밍 윈도우를 더욱 양호하게 해주며, 이로 인해 한층 빠른 전송 주파수가 가능해진다.
전술한 바와 같이, PCIe와 같은 각종 플랫폼은 다중 전력 관리 상태를 지원할 수 있다. 도 6은 예시적인 전력 관리 상태(예를 들면, 605, 610, 615, 620, 625, 630) 및 상태들 간의 전이를 도시하는 예시적인 상태 전이 차트(600)를 도시한다. 도 6의 예에서, 네 가지 주요 전력 상태가 지원된다. 예를 들면, D0 상태(예를 들어, 605, 620)는 한 극단에서 최대 전력을 공급받은 상태 또는 활성 상태일 수 있으며, D3 상태(예를 들어, 610, 615)는 전력 "오프" 상태를 제공한다. 상태 D1(예를 들어, 625) 및 D2(예를 들어, 630)는, 예를 들어, 기기의 슬립 상태 또는 경(light) 슬립 상태를 나타내는 중간 전력 상태를 제공할 수 있다. 일 예에서, Vcc가 여전히 기기에 인가되는 D3 핫(hot) 상태(예를 들어, 610)는 Vcc가 제거되어 기기를 완전히 파워 오프시킨 D3 콜드(cold) 상태(예를 들어, 615)와 구별되도록 제공될 수 있다.
도 6에 도시된 바와 같이, 전이는 다양한 상태들(예를 들어, 605, 610, 615, 620, 625, 630) 사이에서 정의될 수 있다. 예를 들면, 일 구현에서, 상태 D3 핫에 있는 기기는 전력을 공급받으면, 먼저 기기를 D0의 초기화되지 않은(Uninitialized)(620) 상태로 가져옴으로써, 예를 들면, D0 상태 명령을 상응하는 전력 관리 제어 상태 레지스터에 기록함으로써 D0로 복귀될 수 있다. 다른 실시예에서, 기기의 D3 콜드 상태에서, 기능이 D3 콜드로부터 D0로 다시 회수될 수 있다 (D3로부터 유일한 합법적 상태 전이). 일 예에서, 소프트웨어는 전력 관리 상태와 관련하여 기동되어, 예를 들면, 그에 상응하는 구성 공간을 포함하는 기능의 전체 초기화 또는 부분 초기화를 수행할 수 있다. 또한, 전술한 바와 같이, 최소 복구 시간 요건은 해당 기능이 D3에서 D0로 프로그램될 때와 해당 기능이 (구성 액세스를 포함하여) 액세스될 때와의 사이에서 일부 사례에서 정의(예를 들면, 시스템 소프트웨어에 의해 강화)될 수 있다. 이것은 기능 자체를 리셋시키고 기능 자체를 전력-온 상태로 가져오는데 필요한 시간을 허용할 수 있다. 그러나, 전술한 바와 같이, 그러한 디폴트 최소 복구 시간은 특정 기기에 필요한 재시작 시간에다 불필요한 지연을 도입시킬 수 있다. 따라서, 몇몇 구현에서, 기기가 (예를 들면, 구조화된 최소 복구 시간보다 짧은 (또는 긴)) 기기 별 복구 시간을 대신 광고하도록 해주는 재시작 기능이 제공될 수 있다. 또한, 다른 잠재적인 예 중에서도, 기기로 하여금 인터럽트를 개시하여 구조화된 (또는 심지어는 몇몇 구현에서는 기기가 광고한) 최소 복구 시간이 끝나기 전에 구성 액세스를 트리거하는 기능이 제공될 수 있다.
도 7을 참조하면, 간략화한 흐름도(700)가 도시된다. 오퍼레이팅 시스템의 전력 관리 툴과 같은 소프트웨어 컨트롤러는 칩셋 또는 시스템 온 칩의 내부 기기와 같은 특정 기기를 풀 전력 상태로 전이할 준비를 할 수 있고 해당 기기를 파워-온 상태로 만들고(단계 710), (예를 들면, 기기를 활용하여 수행될 특정 기능과 관련하여) 저 전력 또는 무 전력 상태에서 활성 상태로의 전이를 시작한다. 상응하는 전력 관리 레지스터, 확장된 기능 구조, 또는 기타 구조나 레지스터에서 기기에 대해 정의된 기능들에 따라서 폴링(polling)(예를 들어, 단계 710)이 발생할 수 있다. 예를 들어, 컨트롤러는 기기의 재시작 시간(예를 들어, 구조화된 시간 또는 광고된 시간 지연)을 식별할 수 있으며 그 재시작 시간이 경과하였음을 식별하면 전력 상태 전이의 완료를 트리거하는 구성 기록(configuration write)을 발행할 수 있다(단계 725). 대안으로, 기기는, 예를 들어, 기능 구조 또는 레지스터에서 정의된 인터럽트 기능을 가질 수 있으며, 컨트롤러는 해당 기능을 식별하여 기기로부터 해당 기기가 활성 상태에 진입하고 구성 액세스를 수신할 준비가 되었음을 표시하는 인터럽트를 대기할 수 있다(단계 720).
도 8을 참조하면, 몇몇 구현에서 RCIE, 루트 포트, 다운스트림 포트, 또는 기타 기기와 같은 기기가 하나 이상의 재시작 시간 기능을 지원하는 경우를 판단하는 기기 열거 프로세스(device enumeration process)(단계 805)가 수행될 수 있다. 도 8의 특정 예에서, 열거 프로세스는 기기에 해당하는 기능 구조를 준비할 수 있으며(단계 810) 또한 맞춤형 재시작 또는 복구 시간이 광고되고 지원되는지를 판단할 수 있다(단계 815). 몇몇 사례에서, 열거 프로세스(단계 805)는 기기에 그 기기의 복구를 촉진시키는데 도움이 되는 인터럽트 기능이 또한 정의되었는지를 판단할 수 있다. 만일 재시작 시간이 지원된다고 판단되면(예를 들면, 단계 820), 기기에 특정한 광고된 복구 값이 식별(예를 들면, 기능 구조에서 명시)될 수 있다(단계 825). 그런 다음, 광고된 복구 값은 기기의 전력 상태 전이와 관련하여 구성 액세스를 시작할 때 소프트웨어 컨트롤러에게 전달될 수 있다. 대안적으로, 전문화된 재시작 시간이 기기에 의해 지원되지 않는다고 판단되면(단계 830), 소프트웨어 컨트롤러는 아키텍처를 통해 정의된 표준 최소 복구 시간(예를 들면, 10ms, 100ms 등으로 고정된 최소 복구 시간)을 포함하는 구조화된 프로토콜로 디폴트될 수 있다.
도 9는 적어도 예시적인 일 실시예에 따른 일련의 동작(900)을 도시하는 흐름도이다. 장치, 예를 들면, 도 1의 예시적인 재시작 시간 모듈(104) 또는 그 일부분은 일련의 동작(900)을 사용할 수 있다. 장치는 도 9의 동작을 수행하는 수단을 포함할 수 있다. 예시적인 실시예에서, 장치는 프로세서와 함께 작동하여, 해당 장치로 하여금 일련의 동작(900)을 수행하도록 구성된 컴퓨터 코드를 포함하는 메모리, 예를 들면, 도 1의 메모리(184) 및/또는 메모리(175)를 갖춤으로써 변형된다(transformed).
블록(905)에서, 기기가 저전력 상태에 있는지 (예를 들어, 상응하는 레지스터로부터) 판단될 수 있다. 블록(910)에서, 기기가 저전력 상태에서 활성 상태로 전이하는 것은, 예를 들면, 적어도 부분적으로 소프트웨어-기반 컨트롤러에 의해 개시될 수 있다. 인터커넥트 프로토콜에 따라서 구조화된 복구 시간과 같이, 시스템 내에서 저전력 상태에서 활성 상태로의 전이를 위한 고정된 최소 복구 시간이 정의될 수 있다. 블록(915)에서, 장치의 전력 관리에 해당하는 기기의 기능이 식별될 수 있다. 이 기능은 기기에 지원된 인터럽트 메커니즘 및 고정된 최소 복구 시간 대신에 기기에 적용될 광고된 대체 복구 시간을 포함할 수 있다. 몇몇 사례에서, 기기를 위해 두 가지 기능이 인에이블될 수 있다. 블록(920)에서, 기기의 활성 상태로의 전이는, 예를 들어, 식별된 기능에 상응하여 트리거함으로써 시작된 기기의 구성을 통하여 완료될 수 있다. 예를 들면, 다른 잠재적인 예 및 구현 중에서도, 광고된 복구 시간이 적용될 수 있거나 또는 고정된 최소 복구 시간의 만료 전에 기기의 활성 상태로의 전이의 완료를 트리거시키는 인터럽트가 수신될 수 있다.
전술한 원리는 각종 인터커넥트 플랫폼을 비롯한 각종의 여러 다른 어느 아키텍처에도 적용할 수 있다. 또한, 상기 원리는 다른 예 중에서도 멀티-프로세서 서버, 퍼스널 컴퓨터, 모바일 컴퓨팅 기기(예를 들면, 스마트폰, 태블릿 등)에 적용될 수 있다. 단지 하나의 예로서, 도 10을 참조하면, 시스템 온-칩(SOC) 디자인의 실시예가 도시된다. 특정한 예시적인 예로서, SOC(1000)는 사용자 장비(UE)를 포함하는 컴퓨터 내에 포함될 수 있다. 일 실시예에서, UE는 엔드-유저에 의해 사용되어 통신하는 모든 기기, 이를 테면, 휴대 폰, 스마트폰, 태블릿, 울트라-씬 노트북, 광대역 어탭터를 가진 노트북, 또는 기타 다른 유사 통신 장치를 말한다. 종종 UE는 사실상 GSM 네트워크에서 어쩌면 모바일 스테이션(MS)에 상응하는 기지국 또는 노드에 연결한다.
여기서, SOC(1000)는 2개의 코어(1006 및 1007)를 포함한다. 전술한 바와 유사하게, 코어(1006 및 1007)는 인텔 아키텍처 코어(Intel® Architecture Core™)기반 프로세서, 어드밴스드 마이크로 디바이스(Advanced Micro Devices) 인코퍼레이티드의 (AMD) 프로세서, MIPS-기반 프로세서, ARM-기반 프로세서 디자인, 또는 이들의 고객 뿐만 아니라 이들의 실시권자 또는 어댑터(adopter)와 같은 명령어 세트 아키텍처를 준수할 수 있다. 코어(1006 및 1007)는 시스템(1000)의 다른 부품들과 통신하는 버스 인터페이스 유닛(1009) 및 L2 캐시(1012)과 연관된 캐시 컨트롤(1008)에 결합된다. 인터커넥트(1010)는 기술된 본 발명의 하나 이상의 양태를 잠재적으로 구현하는 IOSF, AMBA, 또는 전술한 기타 인터커넥트와 같은 온-칩 인터커넥트를 포함한다.
인터페이스(1010)는 통신 채널을 다른 컴포넌트들, 이를 테면, 가입자 식별 모듈(Subscriber Identity Module (SIM)) 카드와 인터페이스하는 SIM(1030), 코어(1006 및 1007)에 의해 실행을 위한 부트 코드를 보유하여 SOC(1000)를 초기화하고 부트하는 부트 ROM(1035), 외부 메모리(예를 들면, DRAM(1060))과 인터페이스하는 SDRAM 컨트롤러(1040), 비휘발성 메모리(예를 들어, 플래시(1065))와 인터페이스하는 플래시 컨트롤러(1045), 주변장치와 인터페이스하는 주변장치 컨트롤(1050)(예를 들면, 직렬 주변장치 인터페이스), 입력(예를 들면, 터치-작동 입력(touch enabled input))을 디스플레이하고 수신하는 비디오 코덱(1020) 및 비디오 인터페이스(1025), 컴퓨팅 기능과 관련한 그래픽스를 수행하는 GPU(1015)에 제공한다. 이들 인터페이스들 중 어느 인터페이스라도 본원에 기술된 발명의 양태를 포함할 수 있다.
이외에, 시스템은 블루투스 모듈(1070), 3G 모뎀(1075), GPS(1085), 및 WiFi(1085)와 같은 통신을 위한 주변장치를 보여주고 있다. 전술한 바와 같이, UE는 통신을 위한 라디오를 포함하고 있다는 것을 알아야 한다. 그 결과로서, 이들 주변 통신 모듈은 모두 필요한 것은 아니다. 그러나, UE의 일부 형태에서, 외부 통신용 라디오는 포함될 것이다.
전술한 장치, 방법 및 시스템은 전술한 바와 같은 어느 전자 기기 또는 시스템으로도 구현될 수 있다는 것을 알아야 한다. 특정한 예시로서, 첨부의 도면은 본원에서 기술된 바와 같은 본 발명을 활용하는 예시적인 시스템을 제공한다. 예시된 시스템이 더 자세히 기술되어 있으므로, 다수의 여러 인터커넥트는 전술한 설명으로부터 개시되고, 기술되며 재고된다. 그리고 쉽게 명백해지는 바와 같이, 전술한 발전된 기술들은 이들 인터커넥트, 기본 구조, 또는 아키텍처 모두에 적용될 수 있다.
본 발명이 제한된 개수의 실시예들에 대해 기술되었지만, 본 기술에서 통상의 지식을 가진 자들에게는 그 실시예들로부터 수많은 변형과 변경이 인식될 것이다. 첨부의 청구범위는 이러한 본 발명의 참 정신과 범주에 속하는 것으로서 그러한 변형과 변경을 모두 망라하고자 한다.
디자인은 창조에서부터 제조 시뮬레이션에 이르기까지 여러 단계를 거칠 수 있다. 디자인을 나타내는 데이터는 다수의 방식으로 해당 디자인을 표현할 수 있다. 먼저, 시뮬레이션에 유용한 것으로서, 하드웨어는 하드웨어 기술 언어 또는 다른 기능 설명 언어를 이용하여 표현될 수 있다. 또한, 로직 및/또는 트랜지스터 게이트로 이루어진 회로급 모델이 디자인 프로세스의 일부 단계에서 만들어질 수 있다. 더욱이, 어떤 단계에서, 대부분의 디자인은 하드웨어 모델에서 각종 기기들의 물리적 위치를 나타내는 데이터 레벨에 이른다. 통상의 반도체 제조 기술이 사용되는 경우에, 하드웨어 모델을 표현하는 데이터는 집적 회로를 생성하는데 사용된 마스크용의 여러 마스크 층들상에서 각종 특징의 존부를 명시하는 데이터일 수 있다. 디자인의 모든 표현에서, 데이터는 어느 형태의 머신-판독가능 저장 매체에서도 저장될 수 있다. 메모리 또는 디스크와 같은 자기 또는 광학 스토리지는 변조된 또는 그렇지 않으면 그러한 정보를 전송하려고 생성된 광 또는 전기파를 통해 전송된 정보를 저장하는 머신-판독가능 저장 매체일 수 있다. 코드 또는 디자인을 나타내는 또는 전달하는 전기 캐리어 웨이브가 전송될 때, 전기 신호의 복사, 버퍼링 또는 재 전송이 수행되는 정도까지 새로운 카피가 만들어진다. 그래서, 통신 프로바이더 또는 네트워크 프로바이더는 적어도 일시적으로 캐리어 웨이브로 인코딩된 정보와 같이, 본 발명의 실시예들의 기술을 구체화하는 사항(article)을 유형의 머신-판독가능 저장 매체에 저장할 수 있다.
본원에서 사용된 바와 같은 모듈은 하드웨어, 소프트웨어 및/또는 펌웨어의 모든 조합을 지칭한다. 예로서, 모듈은 마이크로-컨트롤러에 의해 실행되기에 적합한 코드를 저장하는 비-일시적 매체와 연관된 마이크로-컨트롤러와 같은 하드웨어를 포함한다. 그러므로, 일 실시예에서, 모듈이라는 것은 비일시적 매체에 보유될 코드를 인식 및/또는 실행하도록 특별하게 구성된 하드웨어를 말한다. 더욱이, 다른 실시예에서, 모듈의 사용은 마이크로컨트롤러에 의해 실행되어 기 설정된 동작을 수행하려고 특별하게 적합화된 코드를 포함하는 비일시적 매체를 말한다. 그리고, 추론될 수 있는 것처럼, 또 다른 실시예에서, (본 예에서) 모듈이라는 용어는 마이크로컨트롤러와 비일시적 매체와의 조합을 말한다. 종종 개별적으로 예시되는 모듈의 경계는 대개는 변하기도 하고 어쩌면 중복되기도 한다. 예를 들면, 제1 및 제2 모듈은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합을 공유할 수 있지만, 잠재적으로는 일부 독립적인 하드웨어, 소프트웨어, 또는 펌웨어를 유지하고 있다. 일 실시예에서, 로직이라는 용어의 사용은 트랜지스터, 레지스터, 또는 프로그램가능 로직 기기와 같은 기타 하드웨어와 같은 하드웨어를 포함한다.
일 실시예에서, '하기 위하여' 또는 '하도록 구성된'이라는 구문의 사용은 지정된 또는 판단된 태스크를 수행하는 장치, 하드웨어, 로직, 또는 요소를 배열하고, 조립하고, 제조하고, 판매를 제안하고, 수입 및/또는 디자인하는 것을 말한다. 이 예에서, 장치 또는 동작하지 않는 해당 장치의 요소는 이것이 전술한 지정된 태스크를 수행하기 위해 디자인되고, 결합되고, 그리고/또는 상호연결되는 경우라면 여전히 그 지정된 태스크를 수행하도록 구성된다. 전적으로 예시적인 예로서, 로직 게이트는 동작 중에 0 또는 1을 제공할 수 있다. 그러나 인에이블 신호를 클럭에 제공'하도록 구성된' 로직 게이트는 1 또는 0를 제공할 수 있는 잠재적 로직 게이트를 매번 포함하지 못한다. 그 대신에, 로직 게이트는 동작 중에 1 또는 0 출력으로 클럭을 인에이블시킬 수 있는 몇 가지 방식으로 연결된 로직 게이트이다. 다시 한번 '하도록 구성된'이라는 용어는 동작을 필요로 하지 않지만, 그 대신에 장치, 하드웨어 및/또는 요소의 잠재 상태에 초점을 맞추는 것이며, 여기서 잠재 상태에서 장치, 하드웨어 및/또는 요소는 해당 장치, 하드웨어 및/또는 요소가 동작하고 있을 때 특별한 작업을 수행하도록 디자인되어 있다는 것을 주목하여야 한다.
더욱이, 일 실시예에서, '할 수 있는' 그리고 '하도록 동작가능한'이라는 문구의 사용은 장치, 로직, 하드웨어 및/또는 요소를 명시된 방식으로 사용할 수 있게 해주는 방식으로 디자인된 몇몇 장치, 로직, 하드웨어 및/또는 요소를 말한다. 전술한 바와 같이 일 실시예에서, 하기 위해, 하도록 할 수 있는, 하도록 동작가능한이라는 용어의 사용은 장치, 로직, 하드웨어 및/또는 요소의 잠재 상태를 말하는 것이고, 이 경우에 장치, 로직, 하드웨어 및/또는 요소는 동작하지 않지만, 명시된 방식으로 장치를 사용할 수 있게 해주는 방식으로 설계된 것이라는 것을 알아야 한다.
본원에서 사용된 바와 같은, 값은 숫자, 상태, 논리적 상태, 또는 이진 논리 상태의 공지된 모든 표현을 포함한다. 종종, 로직 레벨, 로직 값, 또는 논리 값의 사용도 역시 1 및 0 값을 말하는 것으로, 이것은 단순히 이진 로직 상태를 표현한다. 예를 들면, 1은 하이 로직 레벨을 말하며 0은 로우 로직 레벨을 말한다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 스토리지 셀은 단일의 논리 값 또는 다중 논리 값을 보유할 수 있다. 그러나, 컴퓨터 시스템에서 값의 다른 표현이 사용되어 왔다. 예를 들면, 십진수 10은 또한 1010이라는 이진 값과 16진법 문자 A로서 표현될 수 있다. 그러므로, 값은 컴퓨터 시스템에서 보유될 수 있는 정보의 어느 표현이라도 포함한다.
더욱이, 상태는 값에 의해 또는 값의 부분에 의해 표현될 수 있다. 예로서, 논리 1과 같은 제1 값은 디폴트 또는 초기 상태를 나타낼 수 있는 반면, 논리 0와 같은 제2 값은 비-디폴트 상태를 나타낼 수 있다. 게다가, 일 실시예에서, 리셋 및 셋이라는 용어는 각기 디폴트 및 업데이트된 값이나 상태를 말한다. 예를 들면, 디폴트 값은 잠재적으로 하이 논리 값, 즉, 리셋을 포함하지만, 업데이트된 값은 잠재적으로 로우 논리 값, 즉, 셋을 포함한다. 값의 모든 조합은 몇 개의 상태라도 표현하는데 활용될 수 있다는 것을 알아야 한다.
전술한 방법, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예는 프로세싱 요소에 의해 실행가능한 머신-액세스가능한, 머신 판독가능한, 컴퓨터 액세스가능한, 또는 컴퓨터 판독가능한 매체에 저장된 명령어 또는 코드를 통하여 구현될 수 있다. 비-일시적 머신-액세스가능/판독가능 매체는 정보를 컴퓨터 또는 전자 시스템과 같은 머신에 의해 판독가능한 형태로 제공(즉, 저장 및/또는 전송)하는 모든 메커니즘을 포함한다. 예를 들면, 비일시적 머신-액세스 가능한 매체는 스태틱 RAM(SRAM) 또는 다이나믹 RAM(DRAM)과 같은 랜덤 액세스 메모리(RAM), ROM, 자기 또는 광 저장 매체, 플래시 메모리 기기, 전기적 저장 기기, 광 저장 기기, 음향 저장 기기, 일시적(전파된) 신호(예를 들면, 캐리어 웨이브, 적외선 신호, 디지털 신호)로부터 수신된 정보를 보유하기 위한 기타 형태의 저장 기기 등을 포함하며, 이들은 정보를 수신할 수 있는 비일시적 매체와 구별된다.
본 발명의 실시예를 수행하는 로직을 프로그램하는데 사용된 명령어는 시스템 내 메모리, 이를 테면, DRAM, 캐쉬, 플래시 메모리, 또는 기타 스토리지 내에 저장될 수 있다. 또한, 명령어는 네트워크를 통하여 또는 다른 컴퓨터 판독가능 매체에 의해 분배될 수 있다. 그래서, 머신-판독가능 저장 매체는, 이것으로 제한하지 않지만, 정보를 머신에 의해 판독가능한 형태로 저장 또는 전송하기 위한 모든 메커니즘, 즉, 플로피 디스켓, 광 디스크, 컴팩트 디스크, 리드-온리 메모리(CD-ROM), 및 자기-광학 디스크, 리드-온리 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거가능 프로그램 가능 리드-온리 메모리(EPROM), 전기적으로 소거가능한 프로그램가능 리드 온리 메모리(EEPROM), 자기 또는 광학 카드, 플래시 메모리, 또는 전기, 광, 음향, 또는 기타 형태의 전파된 신호(예를 들면, 캐리어 웨이브, 적외선 신호, 디지털 신호 등)를 거쳐 인터넷을 통하여 정보의 전송에 사용된 유형의 머신-판독가능 저장 매체를 포함할 수 있다. 따라서, 컴퓨터 판독가능 매체는 전자 명령어 또는 정보를 머신(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 저장 또는 전송하는데 적합한 어느 형태의 유형의 머신-판독가능 저장 매체라도 포함한다.
하기의 예는 본 명세서에 따른 실시예에 관한 것이다. 하나 이상의 실시예들은 기기가 저전력 상태에 있음을 판단하고, 해당 기기를 저전력 상태에서 활성 상태로의 전이를 개시 - 이 경우 저전력 상태에서 활성 상태로의 전이를 위한 고정된 최소 복구 시간이 정의됨 - 하고, 해당 기기의 저전력 상태에서 활성 상태로의 전이에 해당하는 기기의 기능을 식별하며, 적어도 부분적으로 그 기능에 기반하여 해당 기기의 저전력 상태에서 활성 상태로의 전이를 완료 - 이 경우 전이는 고정된 최소 복구 시간의 만료 이전에 완료되어야 함 - 하는 장치, 시스템, 머신 판독가능 스토리지, 머신 판독가능 매체, 및 방법을 제공할 수 있다.
적어도 하나의 예에서, 기능은 인터럽트 기능을 포함하며, 인터럽트는 기기로부터 수신되며, 인터럽트는 기기가 전이를 완료할 준비되어 있음의 표시이다. 기기는 인터럽트에 대비하여 모니터링될 수 있다.
하나 이상의 예는 인터럽트가 기기에 대해 정의된 복구 시간 이전에 수신되지 않는 경우 그 정의된 복구 시간에 따라 전이가 완료되게 하는 것을 더 제공할 수 있다.
적어도 하나의 예에서, 정의된 복구 시간은 고정된 최소 복구 시간을 포함한다. 정의된 복구 시간은 기기에 특정한 광고된 복구 시간을 포함할 수 있다.
적어도 하나의 예에서, 기능은 기기의 광고된 복구 시간을 포함하며, 광고된 복구 시간은 고정된 최소 복구 시간보다 짧다.
적어도 하나의 예에서, 고정된 최소 복구 시간 대신에 광고된 복구 시간이 기기의 저전력 상태에서 활성 상태로의 전이에 적용될 수 있다.
적어도 하나의 예에서, 고정된 최소 복구 시간은 다른 기기의 저전력 상태에서 활성 상태로의 전이 중에 또 하나의 기기에 적용될 수 있다.
적어도 하나의 예에서, 기기는 주변 컴포넌트 인터커넥트 익스프레스- (Peripheral Component Interconnect Express (PCIe)) 호환 기기를 포함한다. 저전력 상태는 D3 상태를 포함할 수 있고 활성 상태는 D0 상태를 포함한다.
적어도 하나의 예에서, 기기의 저전력 상태에서 활성 상태로의 전이를 완료하는 것은 기기로 구성 액세스 요청(configuration access request)을 송신하는 것을 포함하는 것이다.
적어도 하나의 예에서, 기기는 루트 포트, 다운스트림 포트, 또는 루트 복합 통합 엔드 포인트(root complex integrated end point) 중 적어도 하나를 포함한다.
하나 이상의 예는 추가적으로 적어도 하나의 기기의 전력 관리 기능들을 정의하는 전력 관리 기능 구조를 저장하는 머신 판독가능 메모리와, 전력 관리 기능 구조로부터 기기의 특정 기능을 식별하고, 적어도 부분적으로 특정 기능에 기반하여 기기의 저전력 상태에서 활성 상태로 전이를 완료하는 전력 관리 컨트롤러를 제공할 수 있으며, 여기서 전이는 저전력 상태에서 활성 상태로의 전이를 위해 정의된 고정된 최소 복구 시간의 만료 이전에 완료된다.
적어도 하나의 예에서, 전력 관리 기능 구조는 기기에 대해 대체 복구 시간이 광고되는지의 여부를 기기에 대해 정의한다.
적어도 하나의 예에서, 전력 관리 기능 구조는 기기에 대하여 고정된 최소 복구 시간보다 짧은 대체 복구 시간을 정의한다.
적어도 하나의 예에서, 전력 관리 컨트롤러는 기기에 대하여, 인터럽트가 기기에 의해 지원되는지를 정의하며, 기기로부터 인터럽트를 수신함에 따라 기기의 저전력 상태에서 활성 상태로의 전이가 완료된다.
적어도 하나의 예에서, 전력 관리 기능 구조가 기기가 인터럽트를 지원한다고 표시하는 경우, 인터럽트에 대비하여 기기가 모니터링된다.
적어도 하나의 예에서, 기기의 저전력 상태에서 활성 상태로의 전이를 개시하는 것은 기기에 전력을 제공하는 것을 포함한다.
본 명세서의 전체에서 "일 실시예" 또는 "실시예"의 참조는 실시예와 관련하여 기술된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되어 있다는 것을 의미한다. 그래서, 본 명세서 전체의 여러 곳에서 "일 실시예에서" 또는 "실시예에서"라는 구문이 등장한다고 하여 모두가 반드시 동일한 실시예를 언급하는 것은 아니다. 또한, 특정한 특징, 구조, 또는 특성은 하나 이상의 실시예에서 모든 적절한 방식으로 조합될 수 있다.
전술한 명세서에서, 특정한 예시적인 실시예를 참조하여 상세한 설명이 제시되었다. 그러나, 첨부의 청구범위에서 언급되는 바와 같이 본 발명의 한층 더 넓은 사상과 범주를 일탈함이 없이도 각종 변형과 변경이 이루어질 수 있음이 분명할 것이다. 따라서, 명세서와 도면은 제한적인 의미라기 보다 예시적인 의미로 간주된다. 또한, 전술한 실시예 및 다른 예시적인 언어를 사용한다 하여 반드시 동일한 실시예 또는 동일한 예를 언급하는 것이 아니고, 상이한 그리고 구별되는 실시예 뿐만 아니라 잠재적으로 동일한 실시예를 언급하는 것일 수 있다.

Claims (27)

  1. 복구 로직을 포함하는 장치로서,
    상기 복구 로직은,
    기기가 저전력 상태에 있음을 판단하고,
    상기 저전력 상태에서 활성 상태로의 상기 기기의 전이(a transition)를 개시 - 상기 저전력 상태에서 상기 활성 상태로의 전이를 위한 고정된 최소 복구 시간이 정의됨 - 하고,
    상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이에 해당하는 상기 기기의 기능을 식별하며,
    상기 기능에 적어도 부분적으로 기반하여 상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이를 완료 - 상기 전이는 상기 고정된 최소 복구 시간의 만료 이전에 완료됨 - 하는
    장치.
  2. 제 1 항에 있어서,
    상기 기능은 인터럽트 기능을 포함하며, 상기 복구 로직은 또한 상기 기기로부터 인터럽트를 수신하며, 상기 인터럽트는 상기 기기가 상기 전이를 완료할 준비가 되어 있음의 표시인
    장치.
  3. 제 2 항에 있어서,
    상기 복구 로직은 또한 상기 인터럽트에 대비하여 상기 기기를 모니터링하는
    장치.
  4. 제 3 항에 있어서,
    상기 복구 로직은 상기 인터럽트가 상기 기기에 대해 정의된 복구 시간 이전에 수신되지 않는 경우 상기 정의된 복구 시간에 따라 상기 전이를 완료하는
    장치.
  5. 제 4 항에 있어서,
    상기 정의된 복구 시간은 상기 고정된 최소 복구 시간을 포함하는
    장치.
  6. 제 4 항에 있어서,
    상기 정의된 복구 시간은 상기 기기에 특정한 광고된 복구 시간을 포함하는
    장치.
  7. 제 1 항에 있어서,
    상기 기능은 상기 기기에 대한 광고된 복구 시간을 포함하며, 상기 광고된 복구 시간은 상기 고정된 최소 복구 시간보다 짧은
    장치.
  8. 제 7 항에 있어서,
    상기 복구 로직은 또한 상기 고정된 최소 복구 시간 대신 상기 광고된 복구 시간을 상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이에 적용하는
    장치.
  9. 제 8 항에 있어서,
    상기 복구 로직은 또한 상기 고정된 최소 복구시간을 상기 저전력 상태에서 상기 활성 상태로의 다른 기기의 전이 시에 상기 다른 기기에 적용하는
    장치.
  10. 제 1 항에 있어서,
    상기 기기는 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express (PCIe)) 호환 기기를 포함하는
    장치.
  11. 제 10 항에 있어서,
    상기 저전력 상태는 D3 상태를 포함하며, 상기 활성 상태는 D0 상태를 포함하는
    장치.
  12. 제 1 항에 있어서,
    저전력 상태에서 상기 활성 상태로의 상기 기기의 전이를 완료하는 것은 상기 기기에 구성 액세스 요청(configuration access request)을 송신하는 것을 포함하는
    장치.
  13. 제 1 항에 있어서,
    상기 기기는 루트 포트, 다운스트림 포트, 또는 루트 복합 통합 엔드 포인트root complex integrated end point) 중 적어도 하나를 포함하는
    장치.
  14. 적어도 하나의 기기의 전력 관리 기능을 정의하는 전력 관리 기능 구조(power management capability structure)를 저장하는 머신 판독가능 메모리와,
    상기 전력 관리 기능 구조로부터 상기 기기의 특정 기능을 식별하고, 상기 특정 기능에 적어도 부분적으로 기반하여 저전력 상태에서 활성 상태로의 상기 기기의 전이를 완료 - 상기 전이는 상기 저전력 상태에서 상기 활성 상태로의 전이를 위해 정의된 고정된 최소 복구 시간의 만료 이전에 완료됨 - 하는 전력 관리 컨트롤러를 포함하는
    장치.
  15. 제 14 항에 있어서,
    상기 전력 관리 기능 구조는 상기 기기에 대하여, 대체 복구 시간이 상기 기기에 대해 광고되는지를 정의하는
    장치.
  16. 제 15 항에 있어서,
    상기 전력 관리 기능 구조는 상기 고정된 최소 복구 시간보다 짧은 상기 기기에 대한 대체 복구 시간을 정의하는
    장치.
  17. 제 16 항에 있어서,
    상기 전력 관리 컨트롤러는 상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이를 완료하기 위해 상기 대체 복구 시간을 적용하는
    장치.
  18. 제 15 항에 있어서,
    상기 전력 관리 컨트롤러는 대체 복구 시간이 광고되지 않은 경우 상기 고정된 최소 복구 시간을 적용하는
    장치.
  19. 제 14 항에 있어서,
    상기 전력 관리 기능 구조는 상기 기기에 대하여, 인터럽트가 상기 기기에 의해 지원되는지를 정의하며,
    상기 전력 관리 컨트롤러는 상기 기기로부터의 상기 인터럽트의 수신에 기초하여 상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이를 완료하는
    장치.
  20. 제 19 항에 있어서,
    상기 전력 관리 컨트롤러는 상기 전력 관리 기능 구조가 상기 기기가 상기 인터럽트를 지원한다고 표시하는 경우 상기 인터럽트에 대비하여 상기 기기를 모니터링하는
    장치.
  21. 기기가 저전력 상태에 있음을 판단하는 단계와,
    상기 저전력 상태에서 활성 상태로의 상기 기기의 전이를 개시 - 상기 저전력 상태에서 상기 활성 상태로의 전이를 위한 고정된 최소 복구 시간이 정의됨 - 하는 단계와,
    상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이에 해당하는 상기 기기의 기능을 식별하는 단계와,
    상기 기능에 적어도 부분적으로 기반하여 상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이를 완료 - 상기 전이는 상기 고정된 최소 복구 시간의 만료 이전에 완료됨 - 하는 단계를 포함하는
    방법.
  22. 제 21 항에 있어서,
    상기 기능은 인터럽트 기능을 포함하며, 상기 복구 로직은 또한 상기 기기로부터 인터럽트를 수신하며, 상기 인터럽트는 상기 기기가 상기 전이를 완료할 준비되어 있음의 표시인
    방법.
  23. 제 21 항에 있어서,
    상기 기능은 상기 기기에 대한 광고된 복구 시간을 포함하며, 상기 광고된 복구 시간은 상기 고정된 최소 복구 시간보다 짧은
    방법.
  24. 제 21 항에 있어서,
    상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이를 개시하는 단계는 전력을 상기 기기에 제공하는 단계를 포함하는
    방법.
  25. 기기와,
    상기 기기에 통신가능하게 연결된 전력 관리 컨트롤러를 포함하는 시스템으로서,
    상기 전력 관리 컨트롤러는,
    상기 기기가 저전력 상태에 있는지를 판단하고,
    상기 저전력 상태에서 활성 상태로의 상기 기기의 전이를 개시 - 상기 저전력 상태에서 상기 활성 상태로의 전이를 위한 고정된 최소 복구 시간이 정의됨 - 하고,
    상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이에 해당하는 상기 기기의 기능을 식별하며,
    상기 기능에 적어도 부분적으로 기반하여 상기 저전력 상태에서 상기 활성 상태로의 상기 기기의 전이 - 상기 전이는 상기 고정된 최소 복구 시간의 만료 이전에 완료됨 - 를 완료하는
    시스템.
  26. 제 25 항에 있어서,
    상기 기기는 루트 포트를 포함하는
    시스템.
  27. 제 25 항에 있어서,
    상기 기기는 루트 복합 통합된 엔드 포인트(root complex integrated end point)를 포함하는
    방법.
KR1020140029884A 2013-03-15 2014-03-13 루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템 KR101637075B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/835,275 2013-03-15
US13/835,275 US20140281622A1 (en) 2013-03-15 2013-03-15 Method, apparatus, and system for improving resume times for root ports and root port integrated endpoints

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020160081357A Division KR102014581B1 (ko) 2013-03-15 2016-06-29 루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템

Publications (2)

Publication Number Publication Date
KR20140113481A true KR20140113481A (ko) 2014-09-24
KR101637075B1 KR101637075B1 (ko) 2016-07-06

Family

ID=51534126

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020140029884A KR101637075B1 (ko) 2013-03-15 2014-03-13 루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템
KR1020160081357A KR102014581B1 (ko) 2013-03-15 2016-06-29 루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020160081357A KR102014581B1 (ko) 2013-03-15 2016-06-29 루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템

Country Status (5)

Country Link
US (3) US20140281622A1 (ko)
JP (2) JP6017476B2 (ko)
KR (2) KR101637075B1 (ko)
BR (1) BR102014006218A2 (ko)
RU (2) RU2586022C2 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140281622A1 (en) 2013-03-15 2014-09-18 Mahesh Wagh Method, apparatus, and system for improving resume times for root ports and root port integrated endpoints
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US9967417B2 (en) * 2015-01-21 2018-05-08 Canon Kabushiki Kaisha Managing apparatus power states
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10078614B2 (en) 2015-08-10 2018-09-18 Sandisk Technologies Llc Systems and methods of data transfer
CN105677320B (zh) * 2015-12-28 2019-06-21 小米科技有限责任公司 一种设置等待时长的方法和装置
CN107179956B (zh) * 2017-05-17 2020-05-19 北京计算机技术及应用研究所 分层多核处理器核间可靠通信方法
US10353455B2 (en) 2017-07-27 2019-07-16 International Business Machines Corporation Power management in multi-channel 3D stacked DRAM
RU2675045C1 (ru) * 2017-09-18 2018-12-14 Юрий Анатольевич Ткаченко Архитектура микропроцессора с функцией автоматического программирования микроконтроллеров
US10521388B2 (en) 2018-09-28 2019-12-31 Intel Corporation Multi-uplink device enumeration and management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030041142A (ko) * 2000-09-30 2003-05-23 인텔 코오퍼레이션 프로세서 전력 관리를 개선하기 위한 방법 및 장치
JP2009187552A (ja) * 2008-02-11 2009-08-20 Nvidia Corp 電力制御システム及び電力制御方法
JP2011034267A (ja) * 2009-07-31 2011-02-17 Canon Inc 情報処理装置、情報処理装置の制御方法及び制御プログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05224787A (ja) * 1992-02-12 1993-09-03 Hitachi Ltd 省電力制御方式
FI100443B (fi) * 1995-04-10 1997-11-28 Nokia Telecommunications Oy Liikenteen väylöitys tietoliikenneverkon solmussa
JP2002304237A (ja) * 2001-04-06 2002-10-18 Murata Mach Ltd データ処理装置
US7564810B2 (en) * 2002-05-08 2009-07-21 Microsoft Corporation Method and system for managing power consumption of a network interface module in a wireless computing device
US7600136B2 (en) * 2005-08-19 2009-10-06 Seagate Technology Llc Power management in an information channel
US7496742B2 (en) * 2006-02-07 2009-02-24 Dell Products L.P. Method and system of supporting multi-plugging in X8 and X16 PCI express slots
JP4314249B2 (ja) * 2006-04-21 2009-08-12 キヤノン株式会社 省エネモード搭載装置を制御する情報処理装置及びその制御方法
US7532135B1 (en) * 2007-11-26 2009-05-12 Broadcom Corporation Dual purpose serializer/de-serializer for point-to-point and point-to-multipoint communication
US8156362B2 (en) * 2008-03-11 2012-04-10 Globalfoundries Inc. Hardware monitoring and decision making for transitioning in and out of low-power state
US8201005B2 (en) * 2009-03-17 2012-06-12 Intel Corporation Negotiating a transmit wake time
US8566628B2 (en) * 2009-05-06 2013-10-22 Advanced Micro Devices, Inc. North-bridge to south-bridge protocol for placing processor in low power state
US8271811B2 (en) * 2009-11-05 2012-09-18 Lsi Corporation Methods and apparatus for load-based power management of PHY logic circuits of a SAS device based upon a current workload
EP2482196B1 (en) * 2011-01-31 2016-06-29 Canon Kabushiki Kaisha Image processing apparatus, printing apparatus and controlling method in image processing apparatus
KR101571278B1 (ko) * 2011-07-01 2015-11-24 퀄컴 인코포레이티드 시리얼 통신 시스템에서의 대기 전력 감소를 위한 시스템 및 방법
US20130173837A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Methods and apparatus for implementing pci express lightweight notification protocols in a cpu/memory complex
US8699953B2 (en) 2012-03-21 2014-04-15 Texas Instruments Incorporated Low-latency interface-based networking
WO2013162512A1 (en) * 2012-04-24 2013-10-31 Intel Corporation Adaptive low-power link-state entry policy for active interconnect link power management
US9015396B2 (en) * 2012-09-18 2015-04-21 Apple Inc. Reducing latency in a peripheral component interconnect express link
US20140281622A1 (en) 2013-03-15 2014-09-18 Mahesh Wagh Method, apparatus, and system for improving resume times for root ports and root port integrated endpoints

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030041142A (ko) * 2000-09-30 2003-05-23 인텔 코오퍼레이션 프로세서 전력 관리를 개선하기 위한 방법 및 장치
JP2009187552A (ja) * 2008-02-11 2009-08-20 Nvidia Corp 電力制御システム及び電力制御方法
JP2011034267A (ja) * 2009-07-31 2011-02-17 Canon Inc 情報処理装置、情報処理装置の制御方法及び制御プログラム

Also Published As

Publication number Publication date
JP2014182801A (ja) 2014-09-29
BR102014006218A2 (pt) 2015-10-13
KR20160080105A (ko) 2016-07-07
US20160209911A1 (en) 2016-07-21
US20160209912A1 (en) 2016-07-21
KR101637075B1 (ko) 2016-07-06
KR102014581B1 (ko) 2019-10-21
US20140281622A1 (en) 2014-09-18
RU2014109920A (ru) 2015-09-20
JP6147840B2 (ja) 2017-06-14
RU2586022C2 (ru) 2016-06-10
US10146291B2 (en) 2018-12-04
JP2016076257A (ja) 2016-05-12
JP6017476B2 (ja) 2016-11-02
RU2645596C1 (ru) 2018-02-21
US10139889B2 (en) 2018-11-27

Similar Documents

Publication Publication Date Title
KR101637075B1 (ko) 루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템
US11657015B2 (en) Multiple uplink port devices
US11238203B2 (en) Systems and methods for accessing storage-as-memory
TWI771286B (zh) 電子設備、電子系統及用於通訊之方法
CN107077521B (zh) 片上系统配置元数据
KR101702292B1 (ko) 라이브 에러 복구
KR101695328B1 (ko) 모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템
JP6321194B2 (ja) リンクインタフェースの使用されていないハードウェアの電力消費を制御するための方法、装置及びシステム
JP2016123076A (ja) 共有メモリリンクの低電力エントリ
US11347673B2 (en) Method, apparatus, system for thunderbolt-based display topology for dual graphics systems
US10817454B2 (en) Dynamic lane access switching between PCIe root spaces
US9665513B2 (en) Systems and methods for automatic root port to non-transparent bridge switching for a PCI express interconnect architecture
WO2017151267A1 (en) Flattening portal bridge
US20190095554A1 (en) Root complex integrated endpoint emulation of a discreet pcie endpoint
CN110633241A (zh) 用于非对称接口的动态高速通道方向切换的系统、方法和装置
JP2021090188A (ja) ストリーミングファブリックインタフェース
US8958471B2 (en) Method, apparatus, and system for sliding matrix scoreboard utilized in auto feedback closed loops

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
A107 Divisional application of patent
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 4