KR101995623B1 - 고속 구성 메커니즘을 위한 장치, 방법, 및 시스템 - Google Patents

고속 구성 메커니즘을 위한 장치, 방법, 및 시스템 Download PDF

Info

Publication number
KR101995623B1
KR101995623B1 KR1020167015893A KR20167015893A KR101995623B1 KR 101995623 B1 KR101995623 B1 KR 101995623B1 KR 1020167015893 A KR1020167015893 A KR 1020167015893A KR 20167015893 A KR20167015893 A KR 20167015893A KR 101995623 B1 KR101995623 B1 KR 101995623B1
Authority
KR
South Korea
Prior art keywords
configuration
memory
processor
cache
controller
Prior art date
Application number
KR1020167015893A
Other languages
English (en)
Other versions
KR20160085882A (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 KR20160085882A publication Critical patent/KR20160085882A/ko
Application granted granted Critical
Publication of KR101995623B1 publication Critical patent/KR101995623B1/ko

Links

Images

Classifications

    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Systems (AREA)
  • Power Sources (AREA)

Abstract

고속 디바이스 구성을 위한 장치, 방법, 및 시스템이 여기에 설명된다. 고속 구성 디바이스는 호스트 중재 없이 구성될 수 있다. 예컨대, 저전력 모드로 가기 전에, 디바이스는 그 구성 콘텍스트를 저장 장치에 떠넘기고 슬립으로 진행한다. 그 후, 활성 상태로의 재개시에, 제어기는 전체 구성 공간을 재기록해야 하는 호스트 프로세싱 디바이스 없이도 콘텍스트를 리로드할 수 있어, 디바이스가 저전력 모드로 진행될 때의 지연 결정(latency decision)을 잠재적으로 감소시킨다. 또한, 고속 구성 메커니즘은 고속화된 완료를 제공함으로써 호스트로부터의 구성 액세스를 가속화할 수 있음과 동시에, 레거시 디바이스에 대한 레거시 구성을 여전히 보장한다.

Description

고속 구성 메커니즘을 위한 장치, 방법, 및 시스템{AN APPARATUS, METHOD, AND SYSTEM FOR A FAST CONFIGURATION MECHANISM}
본 발명은 컴퓨팅 시스템에 관한 것으로, 특히 (전적으로는 아니지만) 인터커넥트 아키텍처(an interconnect architecture)를 위한 디바이스들의 구성에 관한 것이다.
도 1은 멀티 코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 실시예를 나타낸다.
도 2는 PCIe(peripheral component interconnect express) 호환성의 아키텍처를 포함하는 컴퓨팅 시스템의 실시예를 나타낸다.
도 3은 계층화된 스택을 포함하는 PCIe 호환성의 인터커넥트 아키텍처의 실시예를 나타낸다.
도 4는 인터커넥트 아키텍처 내에 생성 또는 수신되는 PCIe 호환성의 요청 또는 패킷에 대한 실시예를 나타낸다.
도 5는 PCIe 호환성의 인터커넥트 아키텍처를 위한 송신기 및 수신기 쌍의 실시예를 나타낸다.
도 6은 메모리 맵핑 구성 공간에 대한 논리적 관점의 실시예를 나타낸다.
도 7은 인터커넥트 아키텍처의 요소들을 구성하는 제어기의 실시예를 나타낸다.
도 8은 호스트 디바이스로부터의 메모리 액세스를 이용하여 요소를 구성하기 위한 프로토콜 도면의 실시예를 나타낸다.
도 9는 고속 디바이스 구성을 위한 구성 로직의 실시예를 나타낸다.
도 10은 요소의 고속 구성을 위한 프로토콜 도면의 실시예를 나타낸다.
도 11은 고속 구성 능력을 나타내는 디바이스에 대한 프로토콜 도면의 실시예를 나타낸다.
도 12는 인터커넥트 아키텍처에서의 요소를 위한 구성 공간의 실시예를 나타낸다.
도 13은 디바이스 구성 방법에 대한 흐름도의 실시예를 나타낸다.
도 14는 저전력 컴퓨팅 플랫폼의 실시예를 나타낸다.
도 15는 온-다이(on-die) 인터커넥트를 포함하는 프로세서의 실시예를 나타낸다.
도 16은 칩 상의 컴퓨팅 시스템의 실시예를 나타낸다.
도 17은 컴퓨팅 시스템에 대한 블록도의 실시예를 나타낸다.
이하의 설명에서, 본 발명의 완전한 이해를 제공하기 위해, 특정 형태의 프로세서 및 시스템 구성, 특정 하드웨어 구조, 특정 구조적 및 마이크로 구조적 세부사항, 특정 레지스터 구성, 특정 인스트럭션 형태, 특정 시스템 구성요소, 특정 구성 파라미터, 등의 예들과 같은 다수의 특정 세부사항들이 제시된다. 그러나, 이들 특정 세부사항들이 본 발명을 실시하는 데 이용될 필요가 없음은 당업자에게 자명할 것이다. 다른 경우에, 특정의 프로세서 구조 및 대안의 프로세서 구조, 설명되는 알고리즘을 위한 특정 논리 회로/코드, 특정 펌웨어 코드, 특정 인터커넥트 동작, 특정 논리 구성, 특정 제조 기술 및 재료, 특정 컴파일러 구현, 알고리즘에 대한 코드로의 특정 표현, 특정 파워 다운 및 게이팅 기술/논리 및 컴퓨터 시스템의 다른 특정 동작적 세부사항과 같은 잘 알려진 구성요소 또는 방법은, 본 발명을 불필요하게 모호하게 하지 않기 위해서 상세하게 설명되지 않았다.
이하의 실시예들은 컴퓨팅 플랫폼 또는 마이크로 프로세서와 같은 특정 집적 회로에서 에너지 절약 및 에너지 효율과 관련해서 설명될 수 있지만, 다른 형태의 집적 회로 및 논리 디바이스에 다른 실시예들이 적용될 수 있다. 여기서 설명되는 실시예들의 동일한 기술 및 개시내용은, 보다 양호한 에너지 효율 및 에너지 절약으로부터 혜택을 얻을 수도 있는 다른 형태의 회로 또는 반도체 디바이스에 적용될 수 있다. 예컨대, 개시된 실시예들은 서버, 데스크탑, 또는 울트라북과 같은 경량 컴퓨팅 디바이스로 제한되지 않는다. 또한, 핸드헬드 디바이스, 태블릿, 다른 박형 노트북, SOC(systems on a chip) 디바이스, 및 내장형 애플리케이션과 같은 다른 디바이스들에서 사용될 수도 있다. 핸드헬드 디바이스의 몇몇의 예들은 셀룰러폰, 인터넷 프로토콜 디바이스, 디지털 카메라, PDA, 및 핸드헬드 PC를 포함한다. 내장형 애플리케이션은, 통상, 마이크로 제어기, 디지털 신호 처리기(DSP), 시스템 온 칩, 네트워크 컴퓨터(NetPC), 셋탑 박스, 네트워크 허브, WAN(wide area network) 스위치, 또는 이하에 개시되는 기능 및 동작을 수행할 수 있는 임의의 다른 시스템을 포함한다. 게다가, 여기서 설명되는 장치, 방법, 및 시스템은 물리적 컴퓨팅 디바이스로 제한되지 않지만, 에너지 절약 및 효율을 위한 소프트웨어 최적화에 관련될 수도 있다. 이하의 설명에서 자명하게 되는 바와 같이, (하드웨어, 펌웨어, 소프트웨어, 또는 그 조합을 참조하든 아니든) 여기서 설명되는 방법, 장치, 및 시스템의 실시예들은 성능을 고려하여 균형화되는 '녹색 기술(green technology)' 미래에 있어서 매우 중요하다.
컴퓨팅 시스템이 발전함에 따라, 그 구성요소들은 보다 복잡해지고 있다. 그 결과, 구성요소들 사이에서 결합 및 통신하기 위한 인터커넥트 아키텍처 또한, 최적의 구성요소 동작에 대역폭 요구조건이 충족되는 것을 보장하기 위해 복잡성이 증가되고 있다. 또한, 상이한 시장 세그먼트들은 시장의 요구에 맞는 상이한 측면의 인터커넥트 아키텍처를 요구한다. 예컨대, 서버는 보다 우수한 성능을 필요로 하는 반면에, 모바일 에코시스템은 종종 절전을 위해 전체적인 성능을 희생시킬 수 있다. 그러나, 최대 절전을 갖고서 가능한 가장 우수한 성능을 제공하는 것이 대부분의 패브릭들(fabrics)의 단일 목적이다. 이하에는, 여기서 설명되는 발명의 측면들로부터 잠재적으로 이익을 얻는 다수의 인터커넥트에 대해 논의된다.
도 1을 참조하면, 멀티 코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 실시예가 묘사되어 있다. 프로세서(100)는 마이크로프로세서, 내장형 프로세서, DSP, 네트워크 프로세서, 핸드헬드 프로세서, 응용 프로세서, 코-프로세서, SOC, 또는 코드를 실행하는 다른 디바이스와 같은 임의의 프로세서 또는 프로세싱 디바이스를 포함한다. 일 실시예에서, 프로세서(100)는 비대칭 코어 또는 대칭 코어(도시된 실시예)를 포함할 수 있는 적어도 2개의 코어 - 코어들(101, 102) - 를 포함한다. 그러나, 프로세서(100)는 대칭 또는 비대칭일 수 있는 임의의 수의 프로세싱 요소를 포함할 수 있다.
일 실시예에서, 프로세싱 요소는 소프트웨어 스레드를 지원하는 로직 또는 하드웨어를 가리킬 수 있다. 하드웨어 프로세싱 요소의 예들로는, 스레드 유닛, 스레드 슬롯, 스레드, 프로세싱 유닛, 콘텍스트, 콘텍스트 유닛, 논리 프로세서, 하드웨어 스레드, 코어, 및/또는 프로세서에 대한 상태, 예를 들어 실행 상태 또는 구조적 상태를 보유할 수 있는 임의의 다른 요소를 포함한다. 즉, 일 실시예에서, 프로세싱 요소는 소프트웨어 스레드, 오퍼레이팅 시스템, 애플리케이션, 또는 다른 코드 등의 코드와 독립적으로 연관될 수 있는 임의의 하드웨어를 가리킨다. 물리 프로세서(또는 프로세서 소켓)는, 통상, 코어 또는 하드웨어 스레드와 같은 임의의 수의 다른 프로세싱 요소를 잠재적으로 포함하는 집적 회로를 가리킨다.
코어는 종종 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치한 로직을 가리키되, 독립적으로 유지되는 각각의 아키텍처 상태는 적어도 몇몇의 전용 실행 리소스와 연관된다. 코어와는 대조적으로, 하드웨어 스레드는, 통상, 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치한 임의의 로직을 가리키되, 독립적으로 유지되는 아키텍처 상태는 실행 리소스로의 액세스를 공유한다. 알 수 있는 바와 같이, 소정의 리소스들이 공유되고 다른 것들이 아키텍처 상태에 대해 전용으로 되면, 하드웨어 스레드 및 코어의 명명법 간의 라인은 중복된다. 그러나 종종, 코어 및 하드웨어 스레드는, 오퍼레이팅 시스템에 의해 개개의 로직 프로세서들로서 보여지고, 여기서, 오퍼레이팅 시스템은 각각의 로직 프로세서 상에서의 동작들을 개별적으로 스케쥴링할 수 있다.
물리적 프로세서(100)는, 도 1에 도시된 바와 같이, 2개의 코어들 - 코어들(101, 102) - 을 포함한다. 여기서, 코어들(101, 102)은 대칭형 코어들, 즉 동일한 구성, 기능 유닛, 및/또는 논리를 갖는 코어들로 간주된다. 다른 실시예에서, 코어(101)는 비순차적(out-of-order) 프로세서 코어를 포함하는 반면에, 코어(102)는 순차적(in-order) 프로세서 코어를 포함한다. 그러나, 코어들(102, 102)은, 네이티브 코어, 소프트웨어 관리 코어, 네이티브 ISA(Instruction Set Architecture) 실행에 적용되는 코어, 변환된 ISA 실행에 적용되는 코어, 공동 설계된 코어, 또는 다른 공지된 코어와 같은 임의의 형태의 코어로부터 개별적으로 선택될 수 있다. 이종 코어 환경(즉, 비대칭 코어들)에서, 이진 변환과 같은 변환의 일부 형태는 양쪽 코어 또는 이중 하나 상에서 코드를 실행하거나 스케쥴링하는 데 이용될 수 있다. 나아가서 추가적으로 논의하면, 코어(101)에 도시된 기능 유닛들은, 코어(102)에서의 유닛들이 도시된 실시예들에서 유사한 방식으로 동작하는 것과 같이, 이하에에서 더욱 상세하게 설명된다.
도시된 바와 같이, 코어(101)는 2개의 하드웨어 스레드들(101a, 101b)을 포함하고, 이들은 하드웨어 스레드 슬롯들(101a, 101b)로 지칭될 수도 있다. 따라서, 오퍼레이팅 시스템과 같은 소프트웨어 개체들은, 일 실시예에서 프로세서(100)를 4개의 별도 프로세서들, 즉 4개의 소프트웨어 스레드를 동시에 실행할 수 있는 4개의 논리 프로세서들 또는 프로세싱 요소들로서 본다. 상기한 바와 같이, 제 1 스레드는 아키텍처 상태 레지스터(101a)와 연관되고, 제 2 스레드는 아키텍처 상태 레지스터(101b)와 연관되고, 제 3 스레드는 아키텍처 상태 레지스터(102a)와 연관될 수 있고, 제 4 스레드는 아키텍처 상태 레지스터(102b)와 연관될 수 있다. 여기서, 각 아키텍처 상태 레지스터(101a, 101b, 102a, 102b)는, 상기한 바와 같이, 프로세싱 요소, 스레드 슬롯, 또는 스레드 유닛으로도 지칭될 수 있다. 도시된 바와 같이, 아키텍처 상태 레지스터(101a)가 아키텍처 상태 레지스터(101b)에 복제되어서, 개개의 구조 상태/콘텍스트는 논리 프로세서(101a) 및 논리 프로세서(101b)에 저장될 수 있다. 코어(101)에서, 할당기 및 재명명기 블록(130)에서의 인스트럭션 포인터 및 재명명 논리와 같은 다른 소형 리소스들 또한 스레드들(101a, 101b)을 위해 복제될 수 있다. 재정렬/회수 유닛(135)에서의 재정렬 버퍼, ILTB(120), 로드/저장 버퍼, 및 큐와 같은 몇몇의 리소스들은 구획화(partitioning)를 통해 공유될 수 있다. 범용 내부 레지스터, 페이지-테이블 기반 레지스터(들), 로우-레벨 데이터-캐시 및 데이터-TLB(151), 실행 유닛(들)(140), 및 비순차적 유닛(135)의 일부와 같은 다른 리소스들은 잠재적으로 완전히 공유된다.
프로세서(100)는 완전히 공유되고, 구획화를 통해 공유되거나, 혹은 프로세싱 요소에 의해/프로세싱 요소에 대해 전용으로 될 수 있는 다른 리소스들을 보통 포함한다. 도 1에서, 프로세서의 설명을 위한 로직 유닛들/리소스들을 갖는 순전히 예시적인 프로세서의 실시예가 도시된다. 프로세서가 이들 기능 유닛들 중 임의의 유닛을 포함하거나 생략할 수 있을 뿐만 아니라, 도시되진 않은 임의의 다른 공지된 기능 유닛, 로직, 또는 펌웨어를 포함할 수 있다는 것을 유의한다. 도시된 바와 같이, 코어(101)는 단순화된 대표적인 비순차적(OOO; out-of-order) 프로세서 코어를 포함한다. 그러나, 순차적 프로세서는 다른 실시예들에서 이용될 수 있다. OOO 코어는 실행/취득되어야 하는 브랜치들(branches)을 예측하기 위한 분기 타겟 버퍼(a branch target buffer)(120) 및 인스트럭션을 위한 주소 변환 엔트리들을 저장하는 인스트럭션-변환 버퍼(I-TLB; instruction-translation buffer)(120)를 포함한다.
코어(101)는 페치 유닛(120)에 결합된 디코딩 모듈(125)을 더 포함하여, 페치된 요소들을 디코딩한다. 일 실시예에서, 페치 로직은 스레드 슬롯들(101a, 101b)과 각각 연관된 개개의 시퀀서들을 포함한다. 일반적으로, 코어(101)는 프로세서(100) 상에서 실행가능한 인스트럭션을 정의/특정하는 제 1 ISA와 연관되어 있다. 흔히, 제 1 ISA의 부분인 머신 코드 인스트럭션은, 수행되어야 하는 동작 또는 인스트럭션을 참조/특정하는 인스트럭션의 일부(오피코드(an opcode)라고 불림)를 포함한다. 디코딩 로직(125)은, 이들 인스트럭션을 그 오피코드로부터 인지하고, 제 1 ISA에 의해 정의되는 바와 같은 프로세싱을 위해 파이프라인에서 디코딩된 인스트럭션을 전달하는 회로를 포함한다. 예컨대, 이하에서 보다 상세하게 논의되는 바와 같이, 일 실시예에서, 디코더(125)는 트랜잭션 인스트럭션과 같은 특정 인스트럭션을 인지하도록 구성 또는 설계된 로직을 포함한다. 디코더(125)에 의한 인지의 결과로서, 아키텍처 또는 코어(101)는 적절한 인스트럭션과 연관된 작업을 수행하기 위해 사전 정의된 특정 액션을 취한다. 여기서 설명되는 작업, 블록, 동작, 및 방법 중 임의의 것이 단일 또는 다수의 인스트럭션 - 이들 중 일부는 새로운 인스트럭션이거나 오래된 인스트럭션일 수 있음 - 에 응답하여 수행될 수 있음을 유의하는 것이 중요하다. 일 실시예에서, 디코더(126)가 동일한 ISA(또는 그 서브셋)를 인지함을 유의한다. 이와 달리, 이질적인 코어 환경에서, 디코더(126)는 제 2 ISA(제 1 ISA의 서브셋 또는 별개의 ISA)를 인지한다.
일례에서, 할당기 및 재명명기 블록(130)은 인스트럭션 프로세싱 결과들을 저장하는 레지스터 파일과 같은 리소스들을 확보하기 위해 할당기를 포함한다. 그러나, 스레드들(101a, 101b)은, 할당기 및 재명명기 블록(130)이 인스트럭션 결과들을 추적하는 재정렬 버퍼들과 같은 다른 리소스들을 또한 확보하는, 잠재적으로 비순차적 실행이 가능하다. 유닛(130)은 또한 프로세서(100) 내부의 다른 레지스터들에 대한 프로그램/인스트럭션 참조 레지스터들을 재명명하는 레지스터 재명명기를 포함할 수 있다. 재정렬/회수 유닛(135)은 비순차적 실행 및 비순차적으로 실행되는 인스트럭션에 대한 추후 순차적 회수를 지원하기 위해, 상기한 재정렬 버퍼, 로드 버퍼, 및 저장 버퍼와 같은 구성요소들을 포함한다.
스케쥴러 및 실행 유닛(들) 블록(140)은, 일 실시예에서, 실행 유닛들 상에서 인스트럭션/동작을 스케쥴링하는 스케쥴러 유닛을 포함한다. 예컨대, 부동 소수점 인스트럭션은 이용가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트 상에서 스케쥴링된다. 또한, 실행 유닛들과 연관된 레지스터 파일들은 정보 인스트럭션 프로세싱 결과들을 저장하기 위해 포함된다. 예시적인 실행 유닛들은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛, 및 다른 공지된 실행 유닛들을 포함한다.
로우 레벨 데이터 캐시 및 데이터 변환 버퍼(D-TLB; data translation buffer)(150)는 실행 유닛(들)(140)에 결합된다. 데이터 캐시는 메모리 코히런시 상태로 잠재적으로 유지되는 데이터 오퍼랜드들와 같은, 최근에 사용/동작된 요소들을 저장하기 위한 것이다. D-TLB는 물리 어드레스 변환에 대해 최근의 가상/선형적인 것을 저장한다. 특정 예로서, 프로세서는 물리 메모리를 복수의 가상 페이지로 나누기 위한 페이지 테이블 구조를 포함할 수 있다.
여기서, 코어(101, 102)는 온-칩 인터페이스(110)와 연관되는 제 2 레벨 캐시와 같은, 상위-레벨 또는 퍼더-아웃(further-out) 캐시로의 액세스를 공유한다. 상위-레벨 또는 퍼더-아웃은 실행 유닛(들)으로부터 멀어지거나 증가하는 캐시 레벨을 지칭한다는 것을 유의한다. 일 실시예에서, 상위-레벨 캐시는 제 2 또는 제 3 레벨 데이터 캐시와 같은 최종-레벨 데이터 캐시 - 프로세서(100) 상의 메모리 계층에서의 최종 캐시 - 이다. 그러나, 상위 레벨 캐시는, 이것이 인스트럭션 캐시와 관련되거나 인스트럭션 캐시를 포함할 수 있으므로, 그렇게 제한되지는 않는다. 트레이스 캐시 - 인스트럭션 캐시의 한 형태 - 는 대신 최근 디코딩된 트레이스를 저장하기 위해 디코더(125) 뒤에 결합될 수 있다. 여기서, 인스트럭션은 다수의 마이크로-인스트럭션(마이크로-동작)으로 디코딩될 수 있는 매크로-인스트럭션(즉, 디코더에 의해 인지되는 일반적인 인스트럭션)을 잠재적으로 지칭한다.
도시된 구성에서, 프로세서(100)는 또한 온-칩 인터페이스 모듈(110)을 포함한다. 이력적으로, 이하 보다 상세하게 설명되는 메모리 제어기는 프로세서(100) 외부의 컴퓨팅 시스템에 포함되어 있었다. 이 시나리오에서, 온-칩 인터페이스(110)는 시스템 메모리(175), 칩셋(메모리(175)에 연결시키기 위한 메모리 제어기 허브 및 주변 디바이스들에 접속시키기 위한 I/O 제어기 허브를 종종 포함함), 메모리 제어기 허브, 노스브리지(a northbridge), 또는 다른 집적 회로와 같은, 프로세서(1100) 외부의 디바이스들과 통신하기 위한 것이다. 또한, 이러한 시나리오에서, 버스(105)는 멀티-드롭 버스, 포인트-투-포인트 인터커넥트, 직렬 인터커넥트, 병렬 버스, 코히어런트(예를 들면, 캐시 코히어런트) 버스, 계층화된 프로토콜 아키텍처, 차동 버스, 및 GTL 버스와 같은 임의의 공지된 인터커넥트를 포함할 수 있다.
메모리(175)는 프로세서(1100)에 대해 전용되거나 혹은 시스템에서 다른 디바이스들과 공유될 수 있다. 메모리(175) 유형들의 일반적인 예들로는 DRAM, SRAM, 비휘발성 메모리(NV 메모리), 및 다른 공지된 저장 디바이스를 포함한다. 디바이스(1180)가 메모리 제어기 허브에 결합된 그래픽 가속화기, 프로세서 또는 카드, I/O 제어기 허브에 결합된 데이터 저장장치, 무선 트랜시버, 플래시 디바이스, 오디오 제어기, 네트워크 제어기, 또는 다른 공지된 디바이스를 포함할 수 있다는 것을 유의한다.
그러나, 최근, 더 많은 로직 및 디바이스들이 SOC와 같은 단일 다이 상에 집적됨에 따라, 이들 디바이스들 각각은 프로세서(100) 상에서 통합될 수 있다. 예컨대, 일 실시예에서, 메모리 제어기 허브는 프로세서(100)와 동일한 패키지 및/또는 다이 상에 있다. 여기서, 코어의 부분(온-코어(on-core) 부분)(110)은 메모리(175) 또는 그래픽 디바이스(180)와 같은 다른 디바이스들과 인터페이싱하기 위해 하나 이상의 제어기(들)를 포함한다. 이러한 디바이스들과 인터페이싱하기 위한 제어기들 및 인터커넥트를 포함하는 구성은 종종 온-코어(또는 언-코어(un-core) 구성)로 지칭된다. 일례로서, 온-칩 인터페이스(110)는 온-칩 통신을 위한 링 인터커넥트 및 오프-칩 통신을 위한 고속 직렬 포인트-투-포인트 링크(105)를 포함한다. 그러나, SOC 환경에서, 더 많은 디바이스들, 예를 들어 네트워크 인터페이스, 코-프로세서, 메모리(175), 그래픽 프로세서(180), 및 임의의 다른 공지된 컴퓨터 디바이스/인터페이스는, 높은 기능성 및 낮은 전력 소모를 갖는 작은 폼 팩터를 제공하기 위해 단일 다이 또는 집적 회로 상에 집적될 수 있다.
일 실시예에서, 프로세서(1100)는 여기서 설명되는 장치 및 방법을 지원하거나 이들과 인터페이싱하기 위해 애플리케이션 코드(176)를 컴파일하고, 변환하고, 및/또는 최적화하도록 컴파일러, 최적화, 및/또는 변환기 코드(177)를 실행할 수 있다. 컴파일러는 소스 텍스트/코드를 타겟 텍스트/코드로 변환하는 프로그램 또는 프로그램들의 세트를 종종 포함한다. 일반적으로, 컴파일러를 이용한 프로그램/애플리케이션 코드의 컴파일(compilation)은 하이-레벨 프로그래밍 언어 코드를 로우-레벨 기계 또는 어셈블리 언어 코드로 변형하는 다수의 단계들 및 과정들에서 행해진다. 그러나, 단일 과정의 컴파일러들은 단순한 컴파일을 위해 여전히 이용될 수 있다. 컴파일러는 임의의 공지된 컴파일 기법들을 이용할 수 있고, 또한 어휘 분석(lexical analysis), 사전 프로세싱(preprocessing), 파싱(parsing), 시맨틱 분석(semantic analysis), 코드 생성, 코드 변환, 및 코드 최적화와 같은 임의의 공지된 컴파일러 동작들을 수행할 수 있다.
더 큰 컴파일러들은 다수의 단계들을 종종 포함하지만, 대개 이들 단계들은 2개의 일반적인 단계들: (1) 프론트-엔드, 즉, 일반적으로, 구문 프로세싱(syntactic processing), 시맨틱 프로세싱, 및 일부 변환/최적화가 발생할 수 있는 것, 및 (2) 백-엔드, 즉, 일반적으로, 분석, 변환, 최적화, 및 코드 생성이 발생하는 것 내에 포함된다. 일부 컴파일러들은 컴파일러의 프론트-엔드와 백-엔드 사이의 서술(delineation)의 블러링(blurring)을 나타내는 미들(a middle)로 지칭한다. 그 결과, 삽입, 연관, 생성, 또는 컴파일러의 다른 동작에 대한 참조는 상기한 단계들 또는 과정들 중 임의의 것에서뿐만 아니라, 컴파일러의 임의의 다른 공지된 단계들 또는 과정들에서도 발생할 수 있다. 예시적인 예로서, 컴파일러는 컴파일의 하나 이상의 단계들에서, 예를 들어 컴파일의 프런트-엔드 단계에서의 호들(calls)/동작들의 삽입, 및 그 후에 변환 단계시에 호들/동작들의 하위-레벨 코드로의 변환에서, 동작들, 호들, 함수들 등을 잠재적으로 삽입한다. 동적 컴파일시에, 컴파일러 코드 또는 동적 최적화 코드는 이러한 동작들/호들을 삽입할 수 있을뿐만 아니라, 런타임 동안에 실행을 위해 코드를 최적화할 수 있다는 것에 유의한다. 설명을 위한 특정 예로서, 이진 코드(이미 컴파일된 코드)는 런타임 동안에 동적으로 최적화될 수 있다. 여기서, 프로그램 코드는 동적 최적화 코드, 이진 코드, 또는 이들 조합을 포함할 수 있다.
컴파일러와 유사하게, 이진 변환기와 같은 변환기는 코드의 최적화 및/또는 변환을 위해 코드를 정적 또는 동적으로 변환한다. 따라서, 코드, 애플리케이션 코드, 프로그램 코드, 또는 다른 소프트웨어 환경의 실행에 대한 참조는: (1) 프로그램 코드를 컴파일하거나, 소프트웨어 구조를 유지하거나, 다른 동작들을 수행하거나, 코드를 최적화하거나, 혹은 코드를 변환하기 위해, 동적으로 또는 정적으로 컴파일러 프로그램(들), 최적화 코드 최적화기, 또는 변환기의 실행; (2) 동작들/호들을 포함하는 메인 프로그램 코드, 예를 들어 최적화/컴파일된 애플리케이션 코드의 실행; (3) 소프트웨어 구조들을 유지하거나, 다른 소프트웨어 관련 동작들을 수행하거나, 코드를 최적화하기 위해 메인 프로그램 코드와 연관된 다른 프로그램 코드, 예를 들어 라이브러리의 실행; 또는 (4) 그 조합을 지칭할 수 있다.
시스템 구성요소들을 인터페이싱하기 위해 개발된 하나의 인터커넥트 패브릭 아키텍처는 PCIe 아키텍처를 포함한다. PCIe의 목적은, 개방 아키텍처, 다수의 스패닝 시장 세그먼트들; 클라이언트들(데스크톱 및 모바일), 서버들(표준 및 기업), 및 내장형 및 통신 장치에서 상이한 벤더들로부터의 구성요소들 및 디바이스들이 상호 동작가능하게 하는 것이다. PCI 익스프레스는 미래의 매우 다양한 컴퓨팅 및 통신 플랫폼을 위해 정의되는 로드-저장(a load-store), I/O, 또는 로드-저장 I/O 인터커넥트 아키텍처로 종종 지칭된다. 그 사용 모델, 로드-저장 아키텍처, 및 소프트웨어 인터페이스와 같은 일부 PCI 속성들은 개정을 통해 유지된 반면에, 이전의 병렬 버스 구현은 고확장성의 완전한 직렬 인터페이스로 대체되었다. PCI 익스프레스의 보다 최근의 버전은 새로운 레벨의 성능 및 특징을 전달하기 위해 포인트-투-포인트 인터커넥트, 스위치 기반 기술, 및 패킷화된 프로토콜의 발전을 활용한다. 전력 관리, QoS, 핫-플러그/핫-스왑 지원, 데이터 무결성, 및 에러 처리는 PCI 익스프레스에 의해 지원되는 개선된 특징들 중 일부에 속한다. 그러나, PCIe의 사양에서 정의된 프로토콜은 임의의 물리적 인터페이스 또는 토폴로지 - 포인투-투-포인트, 링, 메쉬, 클러스터, 등 - 상에서 이용될 수 있다.
도 2를 참조하면, 구성요소들의 세트를 인터커넥트하는 포인트-투-포인트 링크들로 구성된 패브릭의 실시예가 예시되어 있다. 시스템(200)은 제어기 허브(215)에 결합된 프로세서(205) 및 시스템 메모리(210)를 포함한다. 프로세서(205)는 마이크로프로세서, 호스트 프로세서, 내장형 프로세서, 코-프로세서, 또는 다른 프로세서와 같은 임의의 프로세싱 요소를 포함한다. 프로세서(205)는 FSB(front-side bus)(206)를 통해서 제어기 허브(215)에 결합된다. 일 실시예에서, FSB(206)는 이하에서 설명되는 바와 같은 직렬 포인트-투-포인트 인터커넥트이다. 다른 실시예에서, 링크(206)는 상이한 인터커넥트 표준에 따르는 직렬형의 차동 인터커넥트 아키텍처를 포함한다.
보다 많은 디바이스들이 프로세서(206)와 함께 동일한 다이 상에 집적되어 있음에 따라, 일부 구현예들에서 제어기 허브(215)가 프로세서(206)와 함께 집적된다는 것을 유의하는 것이 중요하다. 여기서, 프로세서(205)의 코어들은 다이 상에 집적되는 메모리 제어기 허브(215)와 인터페이싱한다. 또한, PCIe 인터페이스들은 프로세서(205)로부터, 프로세서(205) 상에 집적된 제어기 허브(215)로부터, 또는 그 양쪽으로부터 직접 제공될 수 있다.
시스템 메모리(210)는 RAM, 비휘발성(NV) 메모리, 또는 시스템(200) 내의 디바이스들에 의해 액세스 가능한 다른 메모리와 같은 임의의 메모리 디바이스를 포함한다. 시스템 메모리(210)는 메모리 인터페이스(216)를 통해 제어기 허브(215)에 결합된다. 메모리 인터페이스의 예들로는 DDR(double-data rate) 메모리 인터페이스, 듀얼-채널 DDR 메모리 인터페이스, 및 DRAM(dynamic RAM) 메모리 인터페이스를 포함한다.
일 실시예에서, 제어기 허브(215)는 예를 들어 PCIe(또는 PCIE) 인터커넥트 계층(hierarchy)에서의 루트 허브(root hub), 루트 컴플렉스(root complex), 또는 루트 제어기이다. 제어기 허브(215)의 예들로는 칩셋, 메모리 제어기 허브(MCH), 노스브리지, 인터커넥트 제어기 허브(ICH), 사우스브리지(southbridge), 및 루트 제어기/허브를 포함한다. 종종, 칩셋의 용어는 물리적으로 별개인 2개의 제어기 허브, 즉 인터커넥트 제어기 허브(ICH)에 결합된 메모리 제어기 허브(MCH)를 지칭한다. 상기한 바와 같이, 현재의 다수의 시스템들이 프로세서(205)와 함께 집적된 MCH를 종종 포함하는 반면에, 제어기(215)는 이하에서 설명되는 것와 유사한 방식으로 I/O 디바이스들과 통신하도록 프로세서(205) 내에 또는 그 외부에 별개로 제공될 수 있다. 일부 실시예들에서, 피어-투-피어 라우팅은 루트 컴플렉스(215)를 통해 선택적으로 지원된다. 일 실시예에서, 루트 컴플렉스(215)는 루트 포트들, 루트 컴플렉스 레지스터 블록들, 또는 루트 컴플렉스가 집적된 엔드포인트들의 로직 애그리게이션(a logical aggregation)을 포함한다.
여기서, 제어기 허브(215)는 직렬 링크(219)를 통해서 스위치/브리지(220)에 결합된다. 인터페이스들/포트들(217 및 221)로도 지칭될 수 있는 입력/출력 모듈들(217 및 221)은, 제어기 허브(215)와 스위치(220) 간의 통신을 제공하도록 계층화된 프로토콜 스택을 포함/구현한다. 일 실시예에서, 다수의 디바이스들은 스위치(220)에 결합될 수 있다.
스위치/브리지(220)는 패킷들/메시지들을 디바이스(225)로부터 업스트림으로, 즉 루트 컴플렉스를 향한 계층 위로, 제어기 허브(215)로 라우팅하고, 또한 다운스트림으로, 즉 루트 제어기로부터 멀어지는 계층 아래로, 프로세서(205) 또는 시스템 메모리(210)로부터 디바이스(225)로 라우팅한다. 본 예에서 사용되는 업스트림은 루트 컴플렉스에 근접하게 있는 요소의 상대적인 위치 또는 루트 컴플렉스를 향한 정보 흐름의 방향을 포함하는 반면에, 다운스트림은 반대로 루트 컴플렉스로부터 더욱 멀리 있는 요소 또는 루트 컴플렉스로부터 멀어지는 정보 흐름의 방향을 지칭한다. 일 실시예에서, 스위치(220)는 다수의 가상 PCI-투-PCI 브리지 디바이스들의 논리적 어셈블리로 지칭된다. 여기서, 스위치(220)는 패킷들이 하나의 포트로부터 다른 포트로 라우팅되게 하도록 2 이상의 포트들을 연결하는 시스템 요소로서 도시되어 있고, 또한 일부 구현예들에서는, PCI-PCI 브리지들의 집합체로서 나타낼 수 있다. 브리지, 즉 스탠드-얼론 브리지는, PCI/PCI-X 세그먼트 또는 PCIe 포트를 내부 구성요소 인터커넥트 혹은 다른 PCI/PCI-X 버스 세그먼트 또는 PCIe 포트와 가상으로 또는 실제로 연결하는 기능을 통상적으로 지칭한다.
디바이스(225)는 전자 시스템에 결합되는 임의의 내부 또는 외부 디바이스 혹은 구성요소, 예를 들어 I/O 디바이스, 네트워크 인터페이스 제어기(NIC), 애드-인 카드(add-in card), 오디오 프로세서, 네트워크 프로세서, 하드-드라이브, 저장 디바이스, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 휴대용 저장 디바이스, 파이어와이어(Firewire) 디바이스, USB 디바이스, 스캐너, 및 다른 입/출력 디바이스들을 포함한다. 종종, PCIe에서, 디바이스 등의 용어는 종종 엔드포인트로 지칭된다. 구체적으로 도시되지는 않지만, 디바이스(225)는 레거시 또는 다른 버전의 PCI 디바이스들을 지원하기 위해 PCIe 대 PCI/PCI-X 브리지를 포함할 수 있다. PCIe에서의 엔드포인트 디바이스들은 레거시, PCIe, 또는 루트 컴플렉스가 집적된 엔드포인트들로서 종종 분류화된다. 일 실시예에서, 디바이스(225)는 I/O의 타입, 링크의 어느 한쪽 단 상의 구성요소, 또는 기능(또는 다중 기능 디바이스에서의 기능들의 집합체)에 대한 참조를 수행하기 위한 것인 물리적 또는 논리적 개체를 포함한다. 종종, PCIe에서, PCIe 링크 상의 요소 또는 개체에 대한 보다 일반적인 이용은 기능으로 지칭된다. 여기서, 기능은 기능 번호와 연관된 구성 공간(a configuration space)에서 어드레싱 가능한 개체를 통상적으로 지칭한다. 일부 실시예들에서, 기능은 단일 기능 디바이스를 지칭하는 반면에, 다른 실시예들에서는 다중 기능 디바이스를 지칭한다.
또한, 그래픽 가속화기(230)는 직렬 링크(232)를 통해 제어기 허브(215)에 결합된다. 일 실시예에서, 그래픽 가속화기(230)는 ICH에 결합된 MCH에 결합된다. 그러면, 스위치(220), 및 그에 따라 입출력 디바이스(225)는 ICH에 결합된다. 또한, I/O 모듈들(231, 218)은 그래픽 가속화기(230)와 제어기 허브(215) 사이에서 통신하도록 계층화된 프로토콜 스택을 구현한다. 상기의 MCH 논의와 유사하게, 그래픽 제어기 또는 그래픽 가속화기(230) 자체가 프로세서(205) 내에 집적될 수 있다.
도 3으로 가면, 계층화된 프로토콜 스택의 실시예가 예시되어 있다. 계층화된 프로토콜 스택(300)은 QPI(Quick Path Interconnect) 스택, PCIe 스택, 차세대 고성능 컴퓨팅 인터커넥트 스택, 저전력 인터페이스 스택, MIPI(Mobile Industry Processor Interface), 또는 다른 계층화된 스택 등의, 계층화된 통신 스택의 임의의 형태를 포함할 수 있다. 도 2-5를 참조한 바로 아래의 논의는 PCIe 스택에 관한 것이지만, 다른 인터커넥트 스택들에 동일한 개념들이 적용될 수 있다. 일 실시예에서, 프로토콜 스택(300)은 트랜잭션 계층(305), 링크 계층(310), 및 물리 계층(320)을 포함하는 PCIe 프로토콜 스택이다. 도 2에서의 인터페이스들(217, 218, 221, 222, 226, 231)과 같은 인터페이스는 통신 프로토콜 스택(300)으로 표현될 수 있다. 통신 프로토콜 스택으로서의 표현은 프로토콜 스택을 구현/포함하는 모듈 또는 인터페이스로도 지칭될 수 있다.
PCI 익스프레스는 구성요소들 사이에서 정보를 통신하는데 패킷들을 사용한다. 패킷들은 전송 구성요소로부터 수신 구성요소로 정보를 전달하기 위해 트랜잭션 계층(305) 및 데이터 링크 계층(310) 내에서 형성된다. 전송된 패킷들이 다른 계층들을 통해 흐름에 따라, 이들은 그 계층들에서 패킷들을 다루는데 필요한 추가 정보를 갖고서 확장된다. 수신 측에서는, 리버스(reverse) 프로세스가 발생하여, 패킷들이 자신들의 물리 계층(320) 표현으로부터 데이터 링크 계층(310) 표현으로, 그리고 최종적으로 (트랜잭션 계층 패킷들에 대해서) 수신 디바이스의 트랜잭션 계층(305)에 의해 프로세싱될 수 있는 형태로 변환된다.
트랜잭션 계층
일 실시예에서, 트랜잭션 계층(305)은 디바이스의 프로세싱 코어와 인터커넥트 아키텍처 간의 인터페이스, 예를 들어 데이터 링크 계층(310) 및 물리 계층(320)을 제공할 수 있다. 이와 관련하여, 트랜잭션 계층(305)의 주요 책임은 패킷들(즉, 트랜잭션 계층 패킷들, 또는 TLP들)의 어셈블리 및 디스어셈블리(disassembly)이다. 트랜잭션 계층(305)은 통상적으로 TLP들에 대한 크레딧-기반 흐름 제어를 관리한다. PCIe는, 타겟 디바이스가 응답을 위해 데이터는 모으는 동안에 링크가 다른 트래픽을 전달하도록 하게 하면서, 분할된 트랜잭션들, 즉 시간에 의해 구분되는 응답 및 요청을 갖고서 트랜잭션들을 구현한다.
또한, PCIe는 크레딧-기반 흐름 제어를 이용한다. 이러한 방식으로, 디바이스는 트랜잭션 계층(305)에서의 수신 버퍼들 각각에 대한 크레딧의 초기의 양을 광고한다. 도 2의 제어기 허브(215)와 같은, 링크의 반대쪽 단에서의 외부 디바이스는, 각 TLP에 의해 소비되는 크레딧들의 수를 카운트한다. 트랜잭션이 크레딧 한계를 초과하지 않으면, 트랜잭션은 전송될 수 있다. 응답을 수신하면, 크레딧의 양은 복구된다. 크레딧 방식의 이점은, 크레딧 한계에 도달하지 않으면, 크레딧 반환(return)의 지연이 성능에 영향을 미치지 못한다는 것이다.
일 실시예에서, 4개의 트랜잭션 어드레스 공간들은 구성 어드레스 공간, 메모리 어드레스 공간, 입출력 어드레스 공간, 및 메시지 어드레스 공간을 포함한다. 메모리 공간 트랜잭션들은 메모리-맵핑된 위치로/로부터 데이터를 전송하기 위해 판독 요청들 및 기록 요청들 중 하나 이상을 포함한다. 일 실시예에서, 메모리 공간 트랜잭션들은 2개의 상이한 어드레스 포맷들, 예를 들어, 32비트 어드레스와 같은 짧은 어드레스 포맷 또는 64비트 어드레스와 같은 긴 어드레스 포맷을 이용할 수 있다. 구성 공간 트랜잭션들은 PCIe 디바이스들의 구성 공간을 액세스하는 데 사용된다. 구성 공간으로의 트랜잭션들은 판독 요청들 및 기록 요청들을 포함한다. 메시지 공간 트랜잭션들(또는, 단순히 메시지들)은 PCIe 에이전트들 간의 인-밴드(in-band) 통신을 지원하도록 정의된다.
따라서, 일 실시예에서, 트랜잭션 계층(305)은 패킷 헤더/페이로드(306)를 어셈블리한다. 현재의 패킷 헤더들/페이로드들에 대한 포맷은 PCIe 사양 웹사이트에서의 PCIe 사양에서 발견될 수 있다.
도 4를 신속하게 참조하면, PCIe 트랜잭션 디스크립터의 실시예가 도시되어 있다. 일 실시예에서, 트랜잭션 디스크립터(400)는 트랜잭션 정보를 전달하기 위한 메커니즘이다. 이와 관련하여, 트랜잭션 디스크립터(400)는 시스템에서의 트랜잭션들의 식별을 지원한다. 다른 잠재적 사용은 디폴트 트랜잭션 오더링(default transaction ordering)의 수정사항들 및 채널들과의 트랜잭션의 연관성을 추적하는 것을 포함한다.
트랜잭션 디스크립터(400)는 전역적 식별자 필드(402), 속성 필드(404), 및 채널 식별자 필드(406)를 포함한다. 도시된 예에서, 전역적 식별자 필드(402)는 국부적 트랜잭션 식별자 필드(408) 및 소스 식별자 필드(410)를 포함하는 것으로 도시되어 있다. 일 실시예에서, 전역적 트랜잭션 식별자 필드(402)는 모든 미해결의 요청들에 대해서 고유하다.
일 구현예에 의하면, 국부적인 트랜잭션 식별자 필드(408)는 요청하는 에이전트에 의해 생성된 필드로서, 이는 그 요청하는 에이전트를 위한 완료를 요구하는 모든 미해결의 요청들에 대해서 고유하다. 또한, 본 예에서, 소스 식별자(410)는 PCIe 계층 내에서 요청자 에이전트를 고유하게 식별한다. 따라서, 소스 식별자(410)와 함께, 로컬 트랜잭션 식별자 필드(408)는 계층 도메인 내에서 트랜잭션의 전역적인 식별을 제공한다.
속성 필드(404)는 트랜잭션의 특성 및 관계를 특정한다. 이와 관련해서, 속성 필드(404)는 트랜잭션들의 디폴트 처리의 변경을 허용하는 추가 정보를 제공하는 데 잠재적으로 사용된다. 일 실시예에서, 속성 필드(404)는 우선순위 필드(412), 예약 필드(414), 오더링 필드(416), 및 비-스누프(no-snoop) 필드(418)를 포함한다. 여기서, 우선순위 서브 필드(412)는 트랜잭션에 우선순위를 할당하도록 개시자에 의해서 변경될 수 있다. 예약 속성 필드(414)는 미래를 위해 또는 벤더-정의된 사용을 위해 예약되어 남겨진다. 우선순위 또는 보안 속성들을 이용하는 가능한 사용 모델들은 예약 속성 필드를 이용해서 구현될 수 있다.
본 예에서, 오더링 속성 필드(416)는 디폴트 오더링 규칙들을 변경할 수 있는 오더링의 타입을 전달하는 선택적 정보를 제공하는 데 사용된다. 일 구현예에 의하면, 오더링 속성 "0"은 적용되는 디폴트 오더링 규칙들을 나타내고, 오더링 속성 "1"은 완화된 오더링(relaxed ordering)을 나타내며, 여기서 기록은 동일한 방향으로 기록들을 통과시키며, 판독 완료사항들은 동일한 방향으로 기록들을 통과시킬 수 있다. 비-스누프 속성 필드(418)는 트랜잭션들이 스누프되는지를 판정하는 데 이용된다. 도시된 바와 같이, 채널 ID 필드(406)는 트랜잭션과 연관되는 채널을 식별한다.
링크 계층
데이터 링크 계층(310)으로도 불리는 링크 계층(310)은 트랜잭션 계층(305)과 물리 계층(320) 간의 중간 스테이지(an intermediate stage)로서 동작한다. 일 실시예에서, 데이터 링크 계층(310)의 책임은 링크 상의 2개의 구성요소들 사이에서 트랜잭션 계층 패킷들(TLP들)을 교환하기 위한 신뢰가능한 메커니즘을 제공하는 것이다. 데이터 링크 계층(310)의 한쪽은 트랜잭션 계층(305)에 의해서 어셈블리된 TLP들을 수용하고, 패킷 시퀀스 식별자(311), 즉 식별 번호 또는 패킷 번호를 적용하고, 에러 검출 코드, 즉 CRC(312)를 계산 및 적용하며, 물리 계층을 가로질러 외부 디바이스로의 전송을 위해 변경된 TLP들을 물리 계층(320)에 제출한다.
물리 계층
일 실시예에서, 물리 계층(320)은 패킷을 외부 디바이스로 물리적으로 전송하기 위해 논리적 서브 블록(321) 및 전기적 서브 블록(322)을 포함한다. 여기서, 논리적 서브 블록(321)은 물리 계층(320)의 "디지털" 기능들을 담당한다. 이와 관련해서, 논리적 서브 블록은 물리적 서브 블록(322)에 의한 전송을 위해 아웃고잉(outgoing) 정보를 준비하는 송신부, 및 수신된 정보를 링크 계층(310)으로의 전달 전에 식별 및 준비하는 수신부를 포함한다.
물리적 블록(322)은 송신기 및 수신기를 포함한다. 송신기는 논리적 서브 블록(321)에 의해 심볼들을 제공받아, 송신기는 이것들을 직렬화하여 외부 디바이스 상로 전송한다. 수신기는 외부 디바이스로부터 직렬화된 심볼들을 제공받아, 수신된 신호를 비트-스트림으로 변환한다. 비트-스트림은 역-직렬화되어, 논리적 서브 블록(321)에 제공된다. 일 시예에서, 8b/10b 전송 코드가 이용되며, 10 비트 심볼들이 송/수신된다. 여기서, 특정 심볼들은 프레임들(323)로 패킷을 프레임화하는 데 사용된다. 또한, 일 예에서, 수신기는 인커밍(incoming) 직렬 스트림으로부터 복구된 심볼 클록을 제공하기도 한다.
상기한 바와 같이, 트랜잭션 계층(305), 링크 계층(310) 및 물리 계층(320)이 PCIe 프로토콜 스택의 특정 실시예를 참조해서 설명되지만, 계층화된 프로토콜 스택은 그렇게 한정되는 것은 아니다. 실제로, 임의의 계층화된 프로토콜이 포함/구현될 수 있다. 예로서, 계층화된 프로토콜로서 표현되는 포트/인터페이스는: (1) 패킷들을 어셈블리하는 제 1 계층, 즉 트랜잭션 계층; (2) 패킷들을 순차화하는 제 2 계층, 즉 링크 계층; 및 (3) 패킷들을 전송하는 제 3 계층, 즉 물리 계층을 포함한다. 특정 예로서, CSI(common standard interface) 계층화된 프로토콜이 이용된다.
다음으로 도 5를 참조하면, PCIe 직렬 포인트-투-포인트 패브릭의 실시예가 도시되어 있다. PCIe 직렬 포인트-투-포인트 링크의 실시예가 도시되어 있지만, 직렬 포인트-투-포인트 링크는 직렬 데이터를 전송하기 위해 임의의 전송 경로를 포함하는 것과 같이 그렇게 제한되지 않는다. 도시된 실시예에서, 기본형의 PCIe 링크는 2개의 저-전압 차동 구동형 신호 쌍들: 송신 쌍(506/511) 및 수신 쌍(512/507)을 포함할 수 있다. 따라서, 디바이스(505)는 디바이스(510)에 데이터를 전송하는 송신 로직(506), 및 디바이스(510)로부터 데이터를 수신하는 수신 로직(507)을 포함한다. 즉, 2개의 전송 경로들, 즉 경로들(516, 517), 및 2개의 수신 경로들, 즉 경로들(518 및 519)은 PCIe 링크에 포함된다.
전송 경로는 전송 라인, 구리 라인, 광학 라인, 무선 통신 채널, 적외선 통신 링크, 또는 다른 통신 경로와 같은, 데이터 전송을 위한 임의의 경로를 지칭한다. 디바이스(505)와 디바이스(510)와 같은 2개의 디바이스들 간의 접속은 링크(415)와 같은 링크로 지칭된다. 링크는 하나의 레인(lane)을 지원할 수 있으며, 각 레인은 차동 신호 쌍들(전송을 위한 하나의 쌍, 수신을 위한 하나의 쌍)의 세트를 나타낸다. 대역폭을 스케일링하기 위해, 링크는 xN으로 표시되는 다수의 레인들을 종합하고, 여기서 N은 1, 2, 4, 8, 12, 16, 32, 64 또는 그 이상과 같은 임의의 지원되는 링크 폭이다.
차동 쌍은 차동 신호들을 전송하는, 라인들(516, 517)과 같은 2개의 전송 경로들을 가리킨다. 예로서, 라인(516)이 로우 전압 레벨로부터 하이 전압 레벨, 즉 상승 에지로 토글(toggle)되면, 라인(517)은 하이 로직 레벨로부터 로우 로직 레벨, 즉 하강 에지로 구동된다. 차동 신호들은 보다 양호한 신호 무결성과 같은 보다 양호한 전기적 특성들, 즉 크로스-커플링(cross-coupling), 전압 오버슈트(overshoot)/언더슈트(undershoot), 링잉(ringing) 등을 잠재적으로 보여준다. 이는, 보다 고속의 전송 주파수들을 가능하게 하는 보다 양호한 타이밍 윈도우를 허용한다.
도 6으로 가면, 메모리 맵핑된 구성 공간에 대한 논리적 관점의 실시예들이 도시되어 있다. 메모리 맵핑된 구성 공간들의 이러한 예들 중 몇몇은 도 6을 참조하여 이하에서 바로 설명된다. 여기서, PCI 아키텍처는 I/O 및 메모리 어드레스 공간(626)에 대해 일반적으로 직교하는 메모리(625) 내의 구성 어드레스 공간(626)을 정의 및 제공한다.
일 실시예에서, 프로세서(605)의 I/O 공간(615)에서의 CFC/CF8과 같은 고정된 어드레스에 위치된 I/O 맵핑 어드레스 데이터 윈도우(616)를 이용하는 구성 판독 및 기록 생성을 위해 메커니즘이 제공된다. 여기서, 프로세서는 구성 어드레스 공간(626)을 나타내는 어드레스 공간(616)으로의 판독 또는 기록을 발행한다. 또한, 그 후에 그 판독 또는 기록은 PCIe 네트워크 내의 디바이스 또는 기능부일 수 있는 엔드포인트(622)에서 수행된다.
다른 실시예에서, ECAM(Enhanced Configuration Access Mechanism)은 PCIe 디바이스 또는 기능부 구성을 개선하기 위해 제공된다. 여기서, 루트 컴플렉스(610)는 구성 액세스 공간(626)을 나타내고 또한 구성 판독/기록 버스 시맨틱 요청들을 생성하도록, 루트 컴플렉스 메모리 공간에서의 메모리 맵핑 윈도우(621)와 연관되어 있다. ECAM 구현에 대한 실시예는 ECAM 내부 작동의 보다 상세한 도시를 제공하도록 이하에서 바로 설명된다. 그러나, ECAM 구현은 이로 제한되지 않는다. 또한, 이하에 설명되는 바와 같이, 이하의 예가 FCAM 프레임워크의 이해를 도울 수 있도록, FCAM은 ECAM와 유사한 속성들을 이용할 수 있지만, FCAM은 또한 상세하고 설명을 위한 예로 제한되지 않는다.
하나의 ECAM 구현예에서, PCI 소프트웨어 구성 메커니즘과의 호환성을 유지하기 위해 종종, 디바이스(622)와 같은 PCI 익스프레스 요소들은 PCI 호환가능 구성 공간(626)과 연관된다. 몇몇 예들을 이제 설명한다. PCI 익스프레스 링크는 논리적 PCI-PCI 브리지에서 시작되고, 이 브리지의 2차 버스로서 구성 공간(626)에 맵핑된다. 루트 컴플렉스(610)에서의 루트 포트는 PCI 익스프레스 루트 컴플렉스(610)로부터 PCI 익스프레스 링크를 시작시키는 PCI-PCI 브리지 구조이다. PCI 익스프레스 스위치는 PCI 익스프레스 링크들을 내부의 논리적 PCI 버스로 연결시키는 다수의 PCI-PCI 브리지 구조들에 의해 표현된다. 스위치 업스트림 포트는 PCI-PCI 브리지를 포함하고, 이 브리지의 2차 버스는 스위치의 내부 라우팅 로직을 나타낸다. 스위치 다운스트림 포트들은, 내부 버스로부터, PCI 익스프레스 스위치로부터의 다운스트림 PCI 익스프레스 링크들을 표현하는 버스들로 브리지하는 PCI-PCI 브리지들이다. 스위치 다운스트림 포트들을 나타내는 PCI-PCI 브리지들은 내부 버스 상에서 출현될 수 있다. 타입 0 구성 공간 헤더들로 표현되는 엔드포인트들(622)은, 일부 구현예들에 있어서, 내부 버스 상에서 출현되도록 허용되지 않는다.
PCI 익스프레스 엔드포인트(622)는 다수의 기능부들 또는 그 기능부만을 포함할 수 있는 디바이스에서의 단일 기능부로서 구성 공간(626)에 맵핑될 수 있다. PCI 익스프레스 엔드포인트들 및 레거시 엔드포인트들은 루트 컴플렉스(610)에 의해 시작된 계층 도메인들 중 하나 내에서 종종 출현된다. 예로서, 디바이스들(622)는 그 헤드로서 루트 포트를 갖는 트리 내의 구성 공간(626)에서 출현된다. 루트 컴플렉스 통합형 엔드포인트들 및 루트 컴플렉스 이벤트 수집기들은 루트 컴플렉스(610)에 의해 시작된 계층 도메인들 중 하나 내에서 출현될 수 없다. 대신에, 일부 구현예들에서, 이들은 루트 포트들의 피어들로서 구성 공간(626)에서 출현된다.
PCI 익스프레스는, 일 실시예에서, PCI 로컬 버스 사양에 의해 허용되는 256 바이트와 비교해서 보다 큰 사이즈로, 예를 들어 기능부 당 4096 바이트로 구성 공간(626)을 확장한다. PCI 익스프레스 구성 공간(626)은, 일 실시예에서, 기능부(622)의 구성 공간의 최초 양으로, 예를 들어 최초 256 바이트로 구성되는 PCI 3.0 호환가능 영역, 및 나머지 구성 공간(626)을 구성하는 PCI 익스프레스 확장형 구성 공간으로 분할된다. 구성 공간(626)의 PCI 3.0 호환가능 부분은, 나중에 설명되는 바와 같이, PCI 로컬 버스 사양 또는 PCI 익스프레스 개선된 구성에서 정의된 메커니즘, 혹은 ECAM(Access Mechanism) 또는 FCAM(Fast Configuration Access Mechansim)을 이용하여 액세스될 수 있다.
PCI 익스프레스 확장형 구성 공간은 ECAM 또는 FCAM을 이용함으로써 액세스될 수 있다. PCI 3.0, 또는 추후(예를 들어, 4.0, 5.0, 및 개발될 다른 것들)의 호환가능 PCI 익스프레스 구성 메커니즘은 PIC 로컬 버스 사양에서 정의된 모델을 프로그래밍하는 PCI 구성 공간을 지원한다. 이 모델을 고수함으로써, PCI 익스프레스 인터페이스들을 통합하는 시스템들은 종래의 PCI 버스 열거 및 구성 소프트웨어와의 호환성을 유지한다. PCI 3.0 디바이스 기능들과 동일한 방식으로, PCI 익스프레스 디바이스 기능부들은 소프트웨어-구동 초기화 및 구성을 위해 구성 공간을 제공한다. PCI 익스프레스 구성 공간(626)의 헤더들은, 통상, PCI 로컬 버스 사양에서 정의된 포맷 및 동작과 대응하도록 조직화된다. PCI 3.0 호환가능 구성 액세스 메커니즘은 ECAM 또는 FCAM과 동일한 요청 포맷을 이용할 수 있다. PCI 호환가능 구성 요청들에 있어서, 확장형 레지스터 어드레스 필드는 모두 제로로 구성될 수 있다.
일 실시예에서, 구성 공간(626)으로의 액세스를 가능하게 하는 프로세서-아키텍처-특정 펌웨어 인터페이스 표준을 구현하는 시스템들에 있어서, 오퍼레이팅 시스템은 표준 펌웨어 인터페이스를 이용하고, ECAM 또는 FCAM 액세스는 선택적이다. 예컨대, 버전 2.1,93의 DIG64(Developer's Interface Guide for 64-bit Intel Architecture-based Servers)와 호환되는 시스템들에 있어서, 오퍼레이팅 시스템은 구성 공간에 액세스하는 데 SAL 펌웨어 서비스를 이용한다.
일 실시예에서, ECAM은 디바이스(622)의 구성 레지스터들에 액세스하기 위해 플랫 메모리-맵핑 어드레스 공간을 이용한다. 이 경우, 메모리 어드레스는 액세스된 구성 레지스터를 결정하고, 메모리 데이터는 어드레스된 레지스터의 콘텐츠를 (기록을 위해) 업데이트되거나 (판독을 위해) 복귀된다. 메모리 어드레스 공간으로부터 PCI 익스프레스 구성 공간 어드레스로의 하나의 예시적인 맵핑이 표 1에 정의되어 있다.
Figure 112016057319714-pct00001
구성 공간에 맵핑된 메모리 어드레스들의 범위에 대한 사이즈 및 베이스 어드레스는 호스트 브리지 및 펌웨어의 설계에 의해 결정된다. 그것들은 구현-특정 방식으로 펌웨어에 의해 오퍼레이팅 시스템에 보고될 수 있다. 범위의 사이즈는, 호스트 브리지가 구성 어드레스에서의 버스 번호 필드에 맵핑하는 비트들의 번호에 의해 결정된다. 표 1에서, 비트들의 이러한 번호는 n으로 표현되고, 여기서 1≤n≤8이다. n개의 메모리 어드레스 비트들을 버스 번호 필드에 맵핑하는 호스트 브리지는 0부터 2n-1까지의 버스 번호들을 지원하고, 범위의 베이스 어드레스는 2(n+20)-바이트 메모리 어드레스 경계에 대해 정렬된다. 메모리 어드레스 비트들로부터 맵핑되지 않은 버스 번호 필드에서의 임의의 비트들은 클리어될 수 있다.
예컨대, 시스템이 3개의 메모리 어드레스 비트들을 버스 번호 필드에 맵핑하면, 이하의 것들이 진실일 수 있다: n=3; 어드레스 비트들 A[63:23]은 2^23-바이트(8-MB) 경계에 대해 정렬되는 베이스 어드레스를 위해 사용됨; 어드레스 비트들 A[22:20]는 버스 번호 필드에서의 비트들 [2:0]에 맵핑됨; 버스 번호 필드에서의 비트들 [7:3]은 클리어로 구성됨; 시스템은 0과 7 사이에서 버스 번호들을 어드레스화할 수 있음.
최소한 하나의 메모리 어드레스 비트(n=1)가 버스 번호 필드에 맵핑될 수 있다. 그러나, 다른 구현예에서, 시스템들은 다수의 버스들을 지원하기 위한 필요에 따라, 추가적인 메모리 어드레스 비트들을 버스 번호 필드에 맵핑한다. 예컨대, 4GB 이상의 메모리 어드레스들을 지원하는 시스템들은, 적어도 8비트의 메모리 어드레스(n=8)를 버스 번호 필드에 맵핑한다. 각 호스트 브리지에 할당된 버스 번호들의 상이한 범위를 갖는 다수의 호스트 브리지들을 포함하는 시스템에서, 최고 버스 번호를 할당받는 호스트 브리지에 의해 맵핑되는 비트들의 번호로, 시스템을 위한 최고 버스 번호가 잠재적으로 제한됨을 유의한다. 이러한 시스템에서, 특정 호스트 브리지에 할당된 최고 버스 번호 5는, 대부분의 경우에, 그 호스트 브리지에 할당된 버스들의 번호보다 커질 것이다. 즉, 각 호스트 브리지에 있어서, 버스 번호 필드에 맵핑된 비트들의 번호 n은, 각각의 특정 브리지에 할당된 최고 버스 번호가 그 브리지에 있어서 2n-1보다 작거나 그와 동등해질 만큼 충분히 커야 한다. 몇몇의 프로세서 아키텍처들에서, 예를 들어 DW 정렬된 경계의 크로싱으로 인해, 또는 락킹된 액세스가 사용되기 때문에, 단일 구성 요청에서 표현되지 않는 메모리 액세스들을 생성할 수 있다. 루트 컴플렉스 구현은 이러한 액세스들의 구성 요청들로의 변환을 지원하기 위해 이용될 수 있다.
다른 측면에서, 요청들은 ARI 디바이스에서의 확장형 기능부들을 타겟화할 수 있어, A[19:12]는 (5-비트) 디바이스 번호 및 (3-비트) 기능부 번호 필드를 대체하는 (8-비트) 기능부 번호를 나타낸다.
일 실시예에서, 시스템 하드웨어는, ECAM을 이용하는 기록 트랜잭션이 시스템 소프트웨어 실행이 계속되기 전에 완료기(completer)에 의해 완료되는 것을 확실히 하기 위해, 시스템 소프트웨어에 방법을 제공한다.
일 구현예에서, ECAM은 메모리 트랜잭션을 PCI 익스프레스 패브릭 상에서 호스트 CPU로부터 구성 요청들로 변환한다. 메모리 어드레스로의 기록은 일반적으로 포스팅된 트랜잭션이지만, 구성 공간으로의 기록은 PCI 익스프레스 패브릭 상에서 포스팅될 수 없기 때문에, 이러한 변환은 소프트웨어에 대한 오더링 문제들을 잠재적으로 생성한다.
일반적으로, 소프트웨어는 포스팅된 트랜잭션이 완료기에 의해 언제 완료되는지를 알지 못한다. 포스팅된 트랙잭션이 완료기에 의해 완료됨을 소프트웨어가 알기 원하는 경우에, 소프트웨어에 의해 일반적으로 사용되는 하나의 기법은 단지 기록되었던 위치를 판독하는 것이다. 전체에 걸쳐 PCI 오더링 규칙들을 따르는 시스템들에 있어서, 포스팅된 기록이 완료될 때까지 판독 트랜잭션은 완료되지 않을 것이다. 그러나, PCI 오더링 규칙들은 비포스팅 기록 및 판독 트랜잭션이 서로에 대해 리오더링되도록 하기 때문에, CPU(605)는 트랜잭션이 완료기에 의해 완료됨을 보증받는 PCI 익스프레스 패브릭 상에서 비포스팅 기록이 완료할 것을 기다려야 한다. 예로서, 소프트웨어는 ECAM을 이용하여 디바이스(622)로 기록함으로써 디바이스 기능부(622)의 베이스 어드레스 레지스터를 구성하고, 그 후에 이 베이스 어드레스 레지스터에 의해 기술되는 메모리-맵핑 범위에서의 위치를 판독하길 원할 수 있다. ECAM 기록이 완료되기 전에 소프트웨어가 메모리-맵핑 판독을 발행하기 위한 것이었다면, 메모리-맵핑 판독이 리오더링되고, 구성 기록 요청 전에 디바이스에 도착할 수 있게 됨으로써, 예측할 수 없는 결과를 야기하게 된다. 이러한 문제점을 막기 위해, 프로세서(605) 및 호스트 브리지(610)의 구현은, 일 실시예에서, ECAM을 이용한 기록이 완료기에 의해 언제 완료되는지를 결정하는 소프트웨어를 위해 방법이 존재함을 보장한다.
이 방법은, 단순히, 프로세서(605) 그 자체가 ECAM 액세스들 맵핑을 위해 전용으로 된 메모리 범위를 고유한 것으로 인지하는 것과, 비포스팅 기록들을 PCI 익스프레스 패브릭 상에서 생성하는 다른 액세스들을 취급한다는, 즉 트랜잭션이 프로세서의 관점에서 포스팅되지 않는다는 동일 방식으로 상기 범위로의 액세스들을 취급하는 것일 수 있다. 대안 메커니즘은 (프로세서(605)가 아닌) 호스트 브리지(610)가 메모리-맵핑 구성 공간(622)의 액세스들을 인지하며, 또한 비포스팅 구성 트랜잭션이 PCI 익스프레스 패브릭 상에서 완료한 때까지 이 기록이 수용되었음을 프로세서(605)에게 시사하지 않는다. 제3의 대안은 프로세서(605) 및 호스트 브리지(610)가 ECAM으로의 메모리-맵핑 기록을 포스팅하며, 구성 기록 요청이 PCI 익스프레스 패브릭 상에서 언제 완료했는지를 결정하기 위해 소프트웨어가 판독할 수 있는 별도의 레지스터를 호스트 브리지(610)가 제공하는 것이다. 다른 대안들도 가능하다. 예컨대, 프로세서는 실행시에 이전의(초기에 발행된) 메모리 액세스 동작들이 완료되었음을 보장하는 펜스 인스트럭션(a fence instruction)을 제공할 수 있다.
루트 컴플렉스 구현들이 DW 경계들을 가로지르거나, 혹은 락킹된 시맨틱을 이용하는 액세스들로부터 구성 요청들의 생성을 지원할 것을 요구하지 않기 때문에, 사용되고 있는 루트 컴플렉스(610) 구현이 변환을 지원할 것이라고 공지되지 않는 한, 소프트웨어는 메모리 맵핑 ECAM을 이용할 때에 이러한 액세스들의 생성을 야기하지 않도록 조심해야 한다. ECAM을 구현하는 그러한 시스템들에 있어서, PCI 익스프레스 호스트 브리지(610)는 호스트 프로세서로부터의 메모리-맵핑 PCI 익스프레스 구성 공간 액세스들을 PCI 익스프레스 구성 트랜잭션들로 변환한다. 호스트 브리지 PCI 클래스 코드의 사용은, 호스트 브리지 구성 공간이 PCI 호스트 브리지 타입 0 구성 공간과 호환되거나 호환되지 않는 구현 특정 방식으로 구현될 수 있다는 백워드 호환성(backwards compatibility)을 위해 확보될 수 있다. PCI 익스프레스 호스트 브리지는 루트 컴플렉스 이벤트 수집기를 통해 에러들을 시그널링하도록 요구되지 않을 수 있다. 이러한 지원은 PCI 익스프레스 호스트 브리지들에 있어서 선택적이다. 디바이스(622)는 구성 레지스터 액세스를 디코딩하기 위해 추가적인 4비트를 지원할 수 있고, 즉 구성 요청 헤더의 확장형 레지스터 어드레스 [3:0]을 디코딩할 수 있다.
구성 공간에서 배치되어야 하는 타당한 이유를 갖는(즉, 메모리 공간이 할당되기 전에 액세스되어야 하는) 디바이스-특정 레지스터들은, 벤더-특정 능력 구조(PCI 호환가능 구성 공간) 또는 벤더-특정 확장형 능력 구조(PCI 익스프레스 확장형 구성 공간)에서 배치될 수 있다. 드라이버들에 의해 런-타임 환경에서 액세스되는 디바이스-특정 레지스터들은 하나 이상의 베이스 어드레스 레지스터들에 의해 할당되는 메모리 공간에서 배치될 수 있다. PCI 호환가능 또는 PCI 익스프레스 확장형 구성 공간이 런-타임 디바이스-특정 레지스터들을 위한 적절한 공간을 가질 수 있을지라도, 그것들을 거기에 배치하는 것은 종종 권장되지 않는다.
루트 포트 또는 루트 컴플렉스 통합형 엔드포인트는 4096-바이트 블록과 같은 루트 컴플렉스 레지스터 블록(RCRB)으로 불리는 메모리 맵핑 레지스터들의 선택형 블록과 관련될 수 있다. 이들 레지스터들은, 일 실시예에서, 구성 공간(626)과 유사한 방식으로 사용되고, 또한 PCI 익스프레스 확장 능력들, 및 루트 컴플렉스에 적용하는 다른 구현 특정 레지스터들을 포함할 수 있다.
다수의 루트 포트들 또는 내부 디바이스들은 동일한 RCRB와 관련되도록 허용될 수 있다. RCRB 메모리-맵핑 레지스터들은, 일 구현예에서, 메모리-맵핑 구성 공간 또는 메모리 공간과 동일한 어드레스 공간에 존재하지 않는다. 다른 실시예에서, 그것들은 동일한 어드레스 공간에 존재하지만 상이한 어드레스들을 갖는다.
알 수 있는 바와 같이, ECAM은 시스템 소프트웨어로부터 숨겨진 구성 캐싱 및 CPU 지연 시간(stall times)을 감소시키기 위한 구성 요청들을 생성한 CPU의 보다 빠른 완료를 잠재적으로 가능하게 하여, 보다 고속의 전력 상태 진입 및 진출을 허용한다. 그러나, 일부 실시예들에서, 이러한 장점은 집적형 디바이스들로 확장되지 않는다.
그 결과, 일 실시예에서, 고속 구성 액세스 메커니즘(FCAM)이 제공된다. 예로서, 루트 컴플렉스(610)가 서비스하는 구성 요청들에 대해 새로운 FCAM 정책들을 적용함에 따라, FCAM 구현은 ECAM와 같이 호스트 소프트웨어에 대해 투명하게 나타나는 것을 포함한다. 또한, 루트 컴플렉스(610)는, 일부 실시예들에서, 메모리 판독/기록 커맨드를 이용할 뿐만 아니라 이러한 커맨드를 위한 템플릿을 잠재적으로 제공하여 새로운 버스 시맨틱을 생성하기도 한다.
일 실시예에서, 루트 컴플렉스(610)는 메모리 맵핑 I/O 윈도우에 맵핑된 캐시, 즉 FCAM 캐시를 포함한다. 이러한 캐시 사용은 잠재적으로 이하의 것들 중 하나 이상을 가능하게 한다: (1) 캐시에서 버퍼링되고 호스트 프로세서(205)의 관점에서 보다 신속하게 완료되는 호스트 개시형 구성 기록들; (2) 디바이스(622)로의 단일 버스 트랜잭션에 결합될 수 있는 다수의 호스트 개시형 구성 기록들, 이는 효율성을 증대시키고 구성 시간을 감시시킴; (3) 캐시로부터 서비스를 받는 스태틱 및 세미-스태틱 디바이스 구성 레지스터로부터의 호스트 개시형 판독들, 이는 지연 감소, 버트 트래픽 감소, 및 전력을 감소시킴; (4) 디바이스(622)는 전원이 꺼지고, 그 후에 전원이 다시 켜지면 디바이스(622)에게 빠르게 떠넘겨지고(이는 다수의 디바이스의 전원이 켜지면 병렬로 행해질 수 있음), 직접적인 호스트 관여를 요구하지 않을 수 있는 캐시 내의 콘텍스트를 유지함으로써 신속하게 구성 콘텍스트를 재확립할 수 있어, 전력 및 지연을 감소시킴.
일 실시예에서, FCAM 캐시는 프로세서(605)의 캐시와 코히런트한 캐시가 아니다. 그 결과, 비-코히런트 캐시를 제공할 수 있는 능력은, 비-코히런트 I/O 링크 뒤에서, 예를 들어 레거시 PCI/PCIe 하드웨어를 지원하는 브리지에서, 캐싱 메커니즘의 구현을 가능하게 할 수 있다. 그러나, 다른 실시예에서, FCAM 캐시는 프로세서(605)의 캐시와 코히런트하게 구현된다.
일 실시예에서, FCAM 캐시는 타겟 기능부로 구성 업데이트가 전송되는 것을 확실히 하도록 라이트-스루 정책(a write-through policy)을 구현한다. 그러나, 라이트-스루 정책은 임의의 다양한 형태들로 취할 수 있다. 예컨대, 하나의 구현예는 시기 적절한 방식으로 기록들이 라이트-스루되는 슬로풀 라이트-스루 정책(a slothful write-through policy)을 잠재적으로 이용한다. 나아가, 이러한 시나리오에서 기록들은 결정론적으로 완료될 수 있다.
일 실시예에서, FCAM 캐시로부터 엔드포인트 디바이스에 대한 구성 공간으로 구성 콘텍스트를 리로드하는 것과 같은, 구성 콘텍스트를 재확립할 때에, 호스트는 타겟 기능부/디바이스로 대형 블록 기록들을 발행하도록 허용된다. 여기서 구성 공간 그 자체는 DW(또는 보다 소형의) 기록과 같은 보다 소형의 기록 대신에 블록 기록을 이용하여 프로세서로부터 또는 캐시로부터 기록될 수 있다.
FCAM 캐시 및 그로부터의 구성 콘텍스트 재저장은 예를 들어 도 7 및 9를 참조하여 이하에서 보다 상세하게 설명된다.
일 실시예에서, 구성 블록들의 적어도 2가지 타입이 정의된다: 레거시 및 클린. 설명을 위한 예에서, 바이트 기록 마스크들은 추적되고, 레거시 블록 구성 영역들 내의 기록 데이터와 함께 전송되며, 연속적인 기록들은 분명히 발행된다. 또한, 이 예에서, 레거시 호환가능 구성 레지스터들은 레거시 블록 내에서 구현된다. 한편, 클린 블록은 바이트 기록 마스크들을 이용할 수 없다. 여기서, 기록 결합, 합병(merging), 붕괴(collapsing), 또는 이들의 일부 결합은 잠재적으로 허용되고/가능하게 된다. 또한, 구현기들은, 클린 블록 영역 요구사항들을 고수하면, 클린 및 레거시 블록의 양쪽에서 액세스되는 몇몇의 레거시 호환가능 구성 레지스터들을 포함할 수 있다. 레거시 및 클린 블록은 예를 들어 도 12를 참조하여 이하에서 보다 상세하게 설명된다.
일 실시예에서, FCAM 가능 디바이스는 오프셋 어드레스에서 호스트 FCAM 캐시의 미러를 구현한다. 여기서, FCAM 미러 캐시는 호스트에 대한 국부적 업데이트를 다시 반영하는 슬로풀 라이트-스루 정책을 구현할 수도 있다.
일 실시예에서, FCAM 구성 트래픽은 메모리 기록 시맨틱을 이용한다. 그 결과, 일부 구현예들에서, 이러한 메모리 기록 시맨틱의 변환은 레거시 PCI/PCIe 기능부들을 위해 이용된다. 변환에 대한 설명을 위한 특정 예로서, 기록은 상기한 바와 같이 동작하고, 나아가 레거시 디바이스(622)에 대한 구성 공간은 레거시 블록으로서 다루어지며, 메모리 기록 시맨틱은 레거시 구성 기록과 같은 구성 기록으로 변환되고, 판독은 FCAM 캐시로부터 서비스를 받지 못하고 레거시 디바이스(622)를 거쳐 통과된다. 하나의 시나리오에서, FCAM 가능 디바이스들은 고유 메시지, 예를 들어 DRS(Device Readiness Status)-유사 또는 FRS(Function Readiness Status) 메시지 메커니즘 혹은 CBAR(Configuration Base Address Register) 유사 메시지 메커니즘의 사용을 통해 자체적으로 식별한다.
상기한 바와 같이, 고속 구성 메커니즘은 종래의 비집적형 기능부들/디바이스들뿐만 아니라, SoC(System on a Chip)과 같은 집적형 기능부들/디바이스들을 위해서 수행될 수 있다. 별도의 구현예에 있어서, 즉 기능부가 집적되지 않은 경우, 예시적인 프로토콜 메커니즘을 이제 설명한다. 여기서, FCAM 메커니즘들은 특별 어드레스들, 예를 들어 CBAR을 통한 기능부와 연관된 범위, 및 메모리 내 어디에서나 위치될 수 있는 호스트/루트 컴플렉스(610) 상의 다른 범위로의 메모리 기록을 이용하여 동작한다. 일 실시예에서, FCAM이 가능하다고 자체적으로 식별하는 디바이스에 의해 전송된 메시지의 응답으로 전송된 호스트(610)로부터의 메시지를 이용하여 CBAR 어드레스 범위가 구성된다. 예시적인 유선 프로토콜에 이어서, CBAR 범위는 순차적으로 사용되고, 연장되는 구간들 동안에는 지연되지 않는다. 또한, 디바이스로부터 호스트의 영역으로의 업데이트들은 호스트 소프트웨어의 통지, 예를 들어 인터럽트, 대기 상태(MWAIT)로부터 되돌아가기 위한 트리거, 또는 몇몇의 다른 공지된 메커니즘을 야기한다. 게다가, 일부 구현예들에서, 통지 메커니즘은 CBAR 업데이트시에 트리거 동작에 제공된다.
도 7을 참조하면, 인터커넥트 아키텍처의 요소들을 구성하기 위한 제어기의 실시예가 도시되어 있다. 일 실시예에서, 제어기(705)는 루트 제어기를 포함한다. 마찬가지로, 제어기(705)는 루트 컴플렉스, 호스트, 호스트 브리지, 또는 PCIe 아키텍처의 루트 측면들에 대한 집약점(an aggregation point)으로서 종종 동작하는 고차원 계층적 요소를 위한 다른 이름으로 불릴 수 있다. 설명을 위한 특정 예로서, 루트 제어기(705)는 프로세서 또는 SoC에 집적되거나 집적되지 않을 수 있는 메모리 제어기를 포함한다. 제어기(705)는 I/O 디바이스들에 결합되는 I/O 제어기일 수도 있다. 혹은 제어기(705)는 통합형 엔드포인트 디바이스(735)와 인터페이싱하기 위해 SoC 상의 로직 블록일 수 있다.
인터페이스 로직(715, 716, 717)은 PCIe, 디바이스들, 브리지들, 기능부들, 및 엔드포인트들과 같은 요소들과 인터페이싱하는 로직을 포함한다. 그 가장 기본적인 형태에서, 인터페이스 로직(715)은 열거된 디바이스들에 물리적으로 결합하기 위한 물리 계층 인터페이스를 포함한다. 그러나, 상기한 바와 같이, 제어기(705)는 디바이스들과 통신하도록 계층화된 스택을 포함할 수 있다. 나아가, 각 계층이 동일하거나 상이한 사양에 기초할 수 있음을 유의하는 것이 중요하다. 예컨대, 프로토콜 계층, 링크 계층, 및 물리 계층은 하나 이상의 PCIe 사양에 기초할 수 있다. 또는 이와 달리, PHY 계층의 적어도 일부는 MPHY 사양과 같은 MIPI PHY 사양에 기초할 수 있는 반면에, 나머지 계층들은 PCIe 기반일 수 있다. 그 결과, 물리적으로 정의된 상이한 인터페이스 상에서 그 프로토콜을 구현하는 동안에, 인터커넥트 아키텍처는 PCIe 프로토콜을 따를 수 있고, 즉 하나 이상의 PCIe 프로토콜 정의들을 실질적으로 준수할 수 있다. 물리적 인터페이스들의 일부 예들은 저전력 PHY 사양, MIPI(mobile industry peripheral interface) 사양, PCIe PHY 사양, 및 보다 높은 성능 및 전력 PHY 사양을 포함한다. 그러나, 계층들의 목표는 서로를 위한 그 내부 동작들을 추론하는 것이기 때문에, 임의의 공지된 PHY 인터페이스가 이용될 수 있다. 또한, FCAM은, 이하에서 보다 상세하게 설명되는 바와 같이, PCIe가 아닌 다른 프로토콜 또는 링크 계층 적응 내에서 이용될 수 있다.
또한, 도 7은 복수의 요소를 도시하고 있으며, 이들은 디바이스, 기능부, 스위치, 브리지, PCIe 사양 정의된 복수의 프로토콜 통신들을 인지할 수 있는 PCIe 디바이스, PCIe 사양 정의된 복수의 프로토콜 통신을 인지할 수 없는 비-PCIe 디바이스, 또는 다른 공지된 I/O 디바이스를 포함할 수 있다. 예로서, 도 7은 여기서 설명되는 바와 같이 레거시 변환기를 갖는 스위치(725)를 도시한다. 그 결과, 디바이스(735)가 레거시 기능부라고 가정하면, 스위치(725)는 역방향 능력(backwards capability)을 확실히 하기 위해, 메모리 기록 시맨틱을 구성 기록로 또한 메모리 판독 시맨틱을 구성 판독으로의 레거시 변환을 수행한다. 이러한 시나리오에서, 디바이스(726, 727)는 FCAM 지지부를 포함한다.
제어기(705)는 FCAM 블록(710)을 포함한다. 일 실시예에서, FCAM 블록(710)은 디바이스(725, 726, 727, 735)를 효율적으로 구성하도록 고속 구성 메커니즘을 지원하는 하드웨어를 포함한다. 일부 실시예들에서, FCAM 블록(710)이 고속 구성을 또한 지원하는 소정의 동작들을 수행하도록 국부적으로 실행되는 공동 배치형 코드(collocated code)를 포함하는 것에 유의한다.
도시된 실시예에서, FCAM 블록(710)은 구성 제어 로직(711) 및 구성 저장 장치(712)를 포함한다. 구성 저장 장치(712)는 하나의 로직 블록으로 도시되어 있지만 이로 제한되지 않는다. 사실상, 이는 공동 배치되지 않는 다수의 개별적인 저장 요소들일 수 있다. 설명을 위한 특정한 예로서, 구성 저장 장치(712)는, 구성 공간을 위한 베이스 어드레스를 저장하는 레지스터; 기록을 캐싱하고, 제어 로직(711)과 함께 구성용 메모리 기록 시맨틱을 구현하는 캐시; 및 구성 콘텍스트 정보 그 자체를 위한 저장 장치/캐시를포함할 수 있다. 이들 아이템들 중 하나 또는 그 조합이 구성 저장 장치(712)로서 제어기(705)에 포함될 수 있음을 유의한다. 그러나, 설명을 단순화하기 위해, 구성 저장 장치의 상기한 예들 각각에 대해 이하에서 따로따로 설명한다.
제 1 예로서, 구성 저장 장치(712)는 호스트 프로세서 구성 요청들을 서비스하는 캐시를 포함한다. 여기서, 구성 기록 또는 다른 기록을 발행하고, 완전한 완료(엔드포인트 디바이스에서의 업데이트 및 완료 통지)까지 대기하는 호스트 프로세서 대신에, 프로세서는 메모리 기록을 발행할 수 있고 또한 완료를 즉시 제공하기 위해 FCAM 블록(710)에 의존할 수 있어서 호스트 프로세서가 실행을 계속할 수 있음과 동시에, FCAM 블록(710)은 디바이스 구성 레지스터/공간으로의 기록으로서 메모리 기록을 서비스한다. 즉, 캐시가 호스트 개시형 구성 기록을 버퍼링함으로써 호스트의 관점에서 보다 신속하게 완료가 일어날 수 있다. 이 실시예에서, 디바이스(726)의 구성 레지스터들은 메모리의 구성 공간에 맵핑되어야 하고, 디바이스(726) 내의 특정한 구성 레지스터로의 기록은 특정한 구성 레지스터와 연관되도록 메모리의 구성 공간 내에서 메모리 어드레스를 어드레스하기 위한 것이다. 또한, 메모리 어드레스로의 기록이 수행되면, 캐시는 기록을 버퍼링하고, 호스트로의 완료를 제공하며, 기록의 메모리 어드레스에 맵핑되는 특정한 구성 레지스터로의 기록을 제공한다. 또한, 캐시는 기록 결합, 합병, 붕괴와 같은 다른 개선점들을 제공할 수 있다.
다른 예로서, 구성 저장 장치(712)는 구성 콘텍스트에 대한 참조를 보유한다. 구성 콘텍스트로의 참조는, 일례에서, 구성 공간이 어디에 위치되는지에 대한 참조를 가리킨다. 이 예에서, 참조는 메모리 어드레스, 포인터, 또는 구성 공간을 위한 위치에 대한 다른 공지된 참조를 포함할 수 있다. 여기서, 베이스 어드레스 레지스터와 같은 어드레스 레지스터는 도 6에서의 어드레스 공간(626)과 같은 요소와 연관되도록 메모리 맵핑 구성 공간에 대한 어드레스 참조를 보유할 수 있다. 다른 실시예에서, 구성 콘텍스트에 대한 참조는 구성 콘텍스트의 캐싱된 복사본이 유지되는 위치, 예를 들어 메모리 위치 또는 다른 위치를 가리킨다. 또는, 다른 실시예에서, 구성 콘텍스트에 대한 참조는 구성 콘텍스트를 연관되는 디바이스와 관련시키는 참조를 포함한다. 예컨대, 구성 저장 장치(712)가 디바이스(726)를 위해 캐시 구성 콘텍스트를 보유한다고 가정하면, 디바이스(726)가 저전력 상태에 있을 때에, 이 실시예에서 구성 콘텍스트에 대한 참조는 저장 장치(712)의 구성 콘텍스트 자체를 포함하고, 또한 구성 저장 장치(712)의 디바이스(726)와 콘텍스트를 관련시키는 참조, 예를 들어 디바이스 ID, 인덱스, 헤더 등을 포함한다.
또 다른 예로서, 구성 저장 장치는 구성 콘텍스트를 보유한다. 여기서 설명되는 바와 같이, 구성 공간은 정의된 템플릿의 정보를 잠재적으로 고수한다. 또한, 디바이스(726)와 같은 디바이스가 저전력 상태에 들어가면, 구성 공간 정보는 손실될 수 있다. 그 결과, 일 실시예에서, 그 구성 공간 정보는 디바이스(726)가 활성 상태에 재진입할 때에 재저장되도록 캐싱된다. 여기서, 캐싱된 콘텍스트 정보는 어디에나 저장될 수 있다. 따라서, 일 실시예에서, 구성 저장 장치(712)는 구성 공간의 캐싱된 복사본이 어디에 저장되는지에 대한 참조를 보유한다. 상이한 예로서, 디바이스(726)가 FCAM 가능하고 스위치(725)가 FCAM 캐시를 포함한다고 가정한다. 스위치(725)에서의 FCAM 캐시는 디바이스(726)의 구성 공간의 캐싱된 복사본을 보유할 수 있다. 또한, 활성 전력 상태에 재진입하기 위한 요청시에, 제어기(705)는 그 캐싱된 복사본을 디바이스(726)를 위한 구성 공간을 재구축하는 데 제공할 수 있다.
다른 실시예에서, 구성 저장 장치(712)는 기능부(726)와 같은 디바이스를 위한 구성 콘텍스트를 보유한다. 그 결과, 이 시나리오에서, 디바이스(726)가 저전력 상태에 진입하면, 구성 공간(또는 그 적어도 일부)은 구성 저장 장치(712)에 저장된다. 즉, (집적된 것이던지 별개의 것이던지) 디바이스(726)를 위한 구성 데이터는 구성 저장 장치(712)에 기록되고, 이어서 디바이스(726)는 저전력 상태에 진입한다. 또한, 활성 상태로의 재진입시에, 디바이스(726)를 위한 구성 콘텍스트는 프로세서가 구성 정보를 재기록할 필요 없이 레거시 구성 기록을 이용하여 제공된다. 따라서, 디바이스(726)의 전력 저하 및 전력 상승은 도 6의 프로세서(605)와 같은 호스트 프로세싱 디바이스로부터의 직접적인 액세스 또는 지시 중재 없이 FCAM 블록(710)을 이용하여 매우 빠르게 일어날 수 있다.
상기한 바와 같이, 구성 콘텍스트는, 일 실시예에서, 디바이스(726)와 같은 요소를 위한 복수의 구성 공간 파라미터에 대한 상태를 포함한다. 그 결과, 콘텍스트는 디바이스(726)를 위한 레지스터들 및 파라미터들에 대한 값들을 보유할 수 있고, 이들 중 일부는 예를 들어 레거시 및 클린 블록을 갖는 구성 공간 템플릿을 참조하여 여기서 설명된다. 일 실시예에서, 구성 데이터는 디바이스(726) 내의 구성 레지스터들로부터의 데이터를 포함한다.
또한, 상기한 바와 같이, 일 실시예에서, 콘텍스트를 저장하거나 재저장하는 것(예를 들어, 캐싱된 복사본으로부터 다시 콘텍스트를 제공/기록하는 것)은 전력 이벤트에 응답하여 행해진다. 전력 이벤트는 전압 또는 전력에서의 실제 변화를 포함할 수 있다. 그러나, 다른 실시예들에서, 전력 이벤트는 상태의 변화, 상태의 요청된 변화, 또는 링크의 상태의 변화와 같은 상태들 간의 천이 구간(예를 들어, 링크의 상태 머신의 하나의 상태로부터 다른 상태로, 혹은 정의된 전력 상태로/정의된 전력 상태 밖으로의 천이)을 가리킨다. 콘텍스트를 저장하거나 백업하는 경우에, 전력 이벤트는 슬립(sleep) 상태(RTD3)와 같은 저전력 상태로의 진입(또는 진입에 대한 요청과 같은 진입의 표시)을 포함할 수 있다. 캐시(712)에서와 같은 캐시 복사본으로부터 콘텍스트를 재저장하거나 제공하기 위해, 캐시 제어 로직(711)은 활성 전력 상태로의 진입(또는 진입에 대한 요청과 같은 진입의 표시)에 응답하여 콘텍스트를 초기화하거나 제공할 수 있다. 전력 이벤트의 다른 예들은, 요소가 활성 전력 상태에 진입하기 위한 것이라는 표시, 요소가 링크 트레이닝을 완료하기 위한 것이라는 표시, 요소가 링크 초기화 또는 동작의 다른 단계를 완료하기 위한 것이라는 표시, 또는 링크가 링크 상태들 간에 천이하기 위한 것이라는 표시를 포함한다. 일 실시예에서, 구성 콘텍스트를 참조하는 활성 전력 상태는 활성 구성 공간을 갖도록 정의되는 것이며, 슬립 또는 저전력 모드는 데이터 또는 전력의 잠재적 손실로 인해 구성 공간 정보가 다른 곳에서 저장되어야 하는 것이다.
도 7의 블록들이 논리적으로 분리되고 개별적인 것으로 도시되어 있지만, 실제 구현예는 그렇게 개별적이지 않을 수 있고, 그 대신에, 블록들의 경계들은 겹치거나 동일 디바이스 상에 집적될 수 있다. 설명을 위한 예로서, 블록들 전부(제어기(705) 및 디바이스(725, 726, 727, 735))는 SoC로서 단일 다이 상에 집적되어 있다. 여기서 SoC는 표준화된 음성 통신 능력을 갖는 모바일 단말과 같은 시스템에, 또는 음성 통신 능력을 갖거나 갖지 않을 수 있는 비-모바일 단말에 포함될 수 있다. 상이한 예로서, 제어기(705) 및 디바이스(726, 727)는 집적 회로 상에 함께 있는 반면에, 스위치(725) 및 디바이스(735)는 집적 회로에 따로따로 결합된다. 또한, 모든 디바이스들은 확실히 분리되어 있을 수 있다. 게다가, 711 및 712와 같은 로직 블록들은 인터페이스 로직(715, 716, 717)과 같은 다른 블록과 또한 서로 인터리빙될 수 있다. 그 예에서, FCAM 동작을 수행하기 위한 캐시 또는 로직은 인터커넥트 아키텍처의 계층화된 스택 로직 내에 포함될 수 있다.
그 결과, FCAM 블록(710)은, 집적 디바이스 및 별개의 인터커넥트 디바이스의 양쪽에 대한 고속 구성의 적용, 호스트 중재 및 아키텍처 제약점들을 줄임으로써 감소된 슬립 재개 지연(sleep resume latencies), 비-블록 구성 활동의 동시적이면서 독립적인 스레드들, 기능 확장을 완전히 지원하는 I/O 디바이스들의 완전한 가상화, 및 기존의 소프트웨어 및 하드웨어를 위한 레거시 호환성 메커니즘들을 잠재적으로 가능하게 한다.
도 8은 호스트 디바이스로부터의 메모리 액세스를 이용하여 요소를 구성하기 위한 프로토콜 도면의 실시예를 나타낸다. 여기서, 프로세싱 요소와 같은 호스트(805)는 디바이스(815)를 구성하기 위한 것이다. 호스트(805)는 디바이스(815)를 타겟화하는 기록(821)을 수행한다. 제 1 예로서, 기록(821)은 구성 기록을 포함한다. 이와 달리, 기록(821)은 메모리 기록 시맨틱을 갖는 메모리 기록을 포함한다. 후자에서, 메모리 기록(821)은 디바이스(815)를 위한 구성 공간과 연관된, 예를 들어 그에 맵핑된 메모리 어드레스를 참조하고 디바이스(815) 내의 특정 구성 레지스터와 잠재적으로 연관된 메모리 어드레스를 참조하는 메모리 기록을 위해 메모리 어드레스를 이용하여 디바이스(815)를 타겟화할 수 있다.
제어기(810)는 기록(821)을 수신한다. 수신은 임의의 링크 상에서 있을 수 있다. 일 구현예에서, 제어기(810)는 프로세서(805) 상에 집적된 제어기 허브이다. 그 결과, 메시지(821)의 수신은 다이 인터커넥트 상에서 이루어진다. 그러나, 제어기(810)는 호스트(805) 외부에도 있을 수 있어, 메시지(821)가 호스트(805) 외부의 인터커넥트 상에서 전송 및 수신되게 된다.
일 실시예에서, 제어기(810)는 개시되어 메시지(822)를 디바이스(815)로 전송한다. 상기 예를 계속하면, 기록은 디바이스(815) 내에 구성 레지스터의 의도된 타겟을 갖는다. 기록(822)은 기록(821)으로부터의 구성 값을 갖는 레지스터를 이용해서 업데이트하기 위해 구성 공간 또는 디바이스 레지스터로의 레거시 구성 기록 또는 ECAM-유사 기록의 형태를 취할 수 있다.
하나의 시나리오에서, 완료(823, 824)는 제어기(810) 및 호스트(805)로 각각 다시 보내진다. 여기서 알 수 있는 바와 같이, 잠재적 지연(이하에서 호스트 구성 완료 지연으로 불림)은 호스트(805)의 메시지(821)의 전송에서부터 호스트(805)에서의 완료(824)의 수신에까지 존재한다.
도 9로 가면, 고속 디바이스 구성을 위한 구성 로직의 실시예가 도시되어 있다. 일 실시예에서, FCAM 블록(910)은 상기한 호스트 구성 완료 지연을 잠재적으로 감소시키고, 기능부들의 구성에 대한 지연을 감소시키는 등의, 구성을 가속화하는 블록들을 포함한다.
상기 설명과 유사하게, 구성 저장 장치는 기능부를 위한 구성 공간의 참조를 보유하는 저장 장치, 구성 콘텍스트의 참조를 보유하는 저장 장치, 구성 기록을 보유하는 저장 장치, 또는 그 조합 등의 다수의 형태로 취할 수 있다. 구성 저장 장치의 적어도 2가지 타입이 도 9에 예시적으로 제공된다. 예컨대, FCAM 블록(910)은 기능부와 연관되도록 구성 공간에 대한 베이스 어드레스를 보유하는 베이스 어드레스 레지스터(911)를 포함한다.
제 2 예로서, 캐시(913)가 제공된다. 캐시(913)는 구성 콘텍스트의 참조(구성 공간, 구성 콘텍스트에 대한 저장 위치, 또는 구성 콘텍스트 그 자체)를 유지할 수 있거나, 혹은 디바이스 구성을 위한 메모리 판독/기록 시맨틱을 지원하는 캐시 또는 버퍼로서 동작할 수 있다.
특정 예로서, 캐시 저장 장치(913)는 디바이스를 위한 구성 콘텍스트로의 참조를 보유하기 위한 것이다. 상기 설명에서, 이는 구성 공간의 위치로의 참조, 구성 공간을 위한 구성 콘텍스트의 위치, 캐싱된 구성 콘텍스트가 구성 콘텍스트 그 자체와 연관되는 디바이스/기능부로의 참조, 혹은 이들의 조합을 포함할 수 있다는 것에 유의한다.
또한, 일 실시예에서, 캐시(913)는 디바이스/기능부의 구성을 위한 메모리 액세스 시맨틱을 지원하기 위한 것이다. 여기서, 액세스는 호스트 디바이스에 의해 이루어지고, 캐시(913)에서 버퍼링(또는 캐싱)된다. 또한, 제어 로직(912)은 액세스를 서비스하고, 예를 들어 적절한 위치로의 액세스를 적절한 형태로 제공할 뿐만 아니라, 타겟 디바이스로부터의 완료 없이도 완료를 호스트에 잠재적으로 제공한다. 이 예는, 요소의 고속 구성을 위한 프로토콜 도면의 실시예가 도시되어 있는 도 10을 빠르게 참조하여 추가로 도시된다.
여기서, 디바이스(1015)에서의 구성 레지스터를 타겟화하기 위한 것인 메모리 어드레스로의 메모리 액세스(1021), 예를 들어 기록은 제어기(1010)로 전송된다. 제어기(1010)는 액세스(1021)로부터 새로운 값을 이용하여 연관된 구성 레지스터를 업데이트하기 위해, 디바이스(1015)에 의해 인지될 수 있는 기록과 같은 수용가능한 형태로 디바이스(1015)에 기록을 제공한다. 이 시나리오에서, 캐시(913)는 기록을 버퍼링하는 데 이용될 수 있다. 또한, 제어기(1010)는 완료를 다시 호스트(1005)에게 병렬로(즉, 기록(1022)을 참조하는 디바이스(1015)로부터의 완료 없이 또는 전송/프로세싱시에 메시지(1022)와 동일한 시간 구간에서 적어도 부분적으로) 제공한다.
도 8과 비교해서 알 수 있는 바와 같이, 도 8에서의 기록(822)의 완료에 대한 응답인 지연된 완료(824)를 기다리는 일 없이 제어기(1010)로부터 완료를 빠르게(또한 잠재적으로 즉시) 수신한다는 점에서, 도 10에서의 디바이스(1015)를 갖는 레지스터의 구성은 호스트(1005)의 관점에서 가속화된다.
도 9로 되돌아가면, 구성 공간의 판독 또한 가속화될 수 있다. 예컨대, 판독 액세스는 호스트 디바이스에 의해 이루어질 수 있다. 또한, 현재의 복사본이 캐시(913)에 유지되면, 판독은 현재의 데이터 값을 획득하기 위해 메모리 또는 디바이스로 가지 않고서 제어기에 의해 서비스될 수 있다. 그 결과, 일 실시예에서, 캐시 저장 장치(913)는 하나 이상의 프로세서 캐시와 코히런트한다. 그러나, 다른 실시예에서, 캐시 저장 장치(913)는 하나 이상의 프로세서 캐시와 코히런트하지 않다. 나아가, 일부 구현예들에서, 캐시(913)는 연관된 디바이스의 구성 상태와 일치한다. 예로서, 일부 구현예들에서, 캐시(913)는 디바이스의 구성 상태와는 일치하지만 프로세서 캐시와는 코히런트하지 않는 브리지의 뒤쪽에서 구현된다.
임의의 공지된 다른 캐싱 정책 또는 알고리즘은 제어(912) 및 캐시(913)를 위해 이용될 수 있다. 예들로서, 제어(911) 및 캐시(913)는 라이트-스루, 라이트-백(write-back), 또는 다른 공지된 캐시 알고리즘을 구현할 수 있다.
캐시가 (구성 액세스용 버퍼 또는 구성 콘텍스트를 보유하기 위한 버퍼로서) 구성 값들을 보유하는 데 사용되는 하나의 예에서, 제어기 및 FCAM 블록(910)은 구성 레지스터와 메모리 어드레스를 연관시키고, 메모리 어드레스로의 액세스를 수신하고, 레지스터를 위한 구성 값을 캐시(913)에 보유/저장하고, 호스트 프로세싱 디바이스로부터 메모리 어드레스로의 메모리 액세스를, ECAM 모드와 같은 제 1 구성 모드에서, 구성 레지스터에 대한 구성 요청으로 변환할 수 있다. 또한, 스위치 또는 브리지와 같은 제어기 또는 다운스트림 구성요소는, FCAM 모드에서와 같은 제 2 구성 모드에서 호스트 프로세싱 디바이스로부터의 메모리 액세스 없이, 캐시(913)에 유지된 구성 값을 구성 레지스터에 추가로 제공할 수 있다. 가속화된 완료를 (상기한 바와 같이) 제공하는 동안에 제어기가 캐싱하여 디바이스로 제공하는 메모리 액세스를 호스트 프로세싱 디바이스가 FCAM 모드에서 수행할 수 있음을 유의한다. 그러나, FCAM 모드에서, 호스트 프로세싱 디바이스에 의한 그 동일한 메모리 액세스는 캐시(913) 또는 다른 구성요소에 저장된 구성 콘텍스트를 재저장할 필요가 없다.
도 11로 가면, 고속 구성 능력을 나타내는 디바이스에 대한 프로토콜 도면의 실시예가 도시되어 있다. 예로서, 디바이스는 FCAM 가능한 것으로 자체적으로 식별할 수 있다. 도시된 바와 같이, 링크는 링크 트레이닝과 같은 일부 트레이닝(1120), 또는 다른 단계/상태 천이를 수행할 수 있다. 또한, 그 후에 디바이스(1115)는 자신이 FCAM 가능함을 표시하는 메시지(1125)를 전송한다. 일례로서, 메시지(1125)는 DRS 또는 DRS0-유사 메시지를 포함한다. 다른 예로서, 메시지(1125)는 구성을 위해 준비가 되어 있음을 표시하는 CBAR 메시지를 포함하고, 이 CBAR 메시지는 CBAR 위치를 표시하기 위한 것인 DRS 메시지에 부가하여 또는 그를 대신하여 존재할 수 있다. 메시지(1125)를 수신하면, 제어기(1110)는 종종 직접적인 호스트 중재 없이 FCAM 또는 CBAR 메커니즘을 이용하여 디바이스(1115)를 구성할 수 있다. 일부 경우에, 레거시 호환성을 지원하기 위해, 루트 컴플렉스(1110)(또는 스위치)는 리셋과 같은 전력 이벤트 후에 상당한 양의 시간 동안에 구성 요청을 발행할 수 없게 될 수 있다. 그러나, 그 시간 구간 동안에 FCAM 능력을 표시하는 DRS 또는 CBAR 메시지가 수신되면, 구성(1130)은 임의의 추가적인 대기 없이 즉시 시작될 수 있다.
다음에 도 12를 참조하면, 인터커넥트 아키텍처에서의 요소에 대한 구성 공간의 실시예가 도시되어 있다. 도시된 바와 같이, 구성 베이스 어드레스 영역 또는 그에 따른 데이터 구조와 같은 구성 영역(1205)은 레거시 블록(1210) 및 클린 블록(1215)을 포함한다. 여기서, 레거시 블록(1210)으로의 기록은, 블록(1210)에 대한 예시적인 포맷으로 도시된 바와 같이, 데이터가 인터리빙된 판독/기록 바이트 셀렉트들을 잠재적으로 포함한다. 도시된 바와 같이, 블록(1210) 포맷은 헤더(1211), 마스크(1212), 예로서 2배 단어(double words)를 포함하는 데이터(1213a-g)를 포함한다. 또한, 일 실시예에서, 레거시 블록(1210)으로의 기록은 적절하게 프로세싱되도록 보장된 역효과들을 갖고서 증가하는 어드레스 순서로 수행된다.
일 실시예에서, 클린 블록(1215)은 다른 실시예에서 그럴 수도 있지만 판독/기록 바이트 셀렉트들을 포함하지 않는다. 클린 블록(1215)에서의 비트 정의들은 역효과들이 블록 레벨에서 안전한 방식으로 정의될 수 있다. 그러나 여기서, 증가하는 어드레스 순서로 기록들을 수행하는 것이 여전히 바람직할 수 있다. 일 실시예에서, 제어기에서의 구성 로직 및 디바이스에서의 로직은 클린 블록 영역(1215)으로의 기록 결합 및 합병을 지원할 수 있다.
도 13은 디바이스를 구성하는 방법에 대한 흐름도의 실시예를 나타낸다. 여기서 설명되는 로직에 의해 수행되는 프로토콜 흐름들 또는 동작들 중 임의의 것이 방법으로서 표현될 수 있음을 위에서부터 유의한다. 예로서, 도 10의 설명은 프로토콜 메시지를 전송하기 위해 호스트, 제어기 및 디바이스를 참조하였다. 메시지 전송(즉, 메시지(1021), 및 메시지(1021)의 응답인 완료(1023) 역시 방법으로서 표현될 수 있음). 반대로, 여기서 설명되는 임의의 방법은 유사하게 장치에서 구현될 수 있다.
도 13의 도시된 방법에서, 고속 구성 호환성을 표시하는 디바이스로부터의 특정 메시지는 흐름 1305에서 수신된다. 상기한 바와 같이, 메시지는 DRS-유사 메시지 또는 CBAR 메시지를 포함할 수 있다. 여기서, CBAR 메시지는 제어기에서 CBAR을 업데이트하는 데 사용되는 위치(즉, 베이스 어드레스)를 참조할 수 있다. 그 후에, 흐름 1310에서, 디바이스는 메시지 수신에 응답하여 구성된다. 일 실시예에서, 디바이스의 이러한 구성은 구성 콘텍스트를 재저장하는 것이다. 여기서, FCAM 가능 메시지가 수신된다. 또한, 디바이스가 슬립하게 되면, 디바이스는 캐시와 유사한 구조에 대해 구성 콘텍스트를 저장한다. 그 후에, 활성 파워 모드에 진입하면, 제어기는 디바이스의 FCAM 능력 및 캐싱된 구성 콘텍스트에 기초하여 디바이스를 직접 구성할 수 있다. 혹은, 리셋 또는 파워-온시에, 제어기는 FCAM 가능 메시지의 수신에 응답하여 바로 디바이스를 구성할 수 있다. FCAM 가능 디바이스의 한가지 구성 레지스터 또는 그 이상의 구성 레지스터들은 업데이트되거나 구성될 수 있다.
일 실시예에서, 흐름 1310에서 디바이스를 구성하는 단계는 구성 어드레스 공간으로의 제 1 메모리 기록을 개시하는 단계와, 구성 어드레스 공간에 대해 직교로 되는 루트 컴플렉스 메모리 공간으로의 제 2 메모리 기록을 개시하는 단계를 포함한다.
도 14를 참조하면, 저전력 컴퓨팅 플랫폼의 실시예가 도시되어 있다. 일 실시예에서, 저전력 컴퓨팅 플랫폼(1400)은 사용자 장치(UE) 또는 모바일 단말을 포함한다. 일부 실시예들에서, UE는 통신하는 데 사용될 수 있는 디바이스, 예를 들어 음성 통신 능력을 갖는 디바이스를 가리킨다. UE의 예들은 전화기 또는 스마트폰을 포함한다. 그러나, 저전력 컴퓨팅 플랫폼은 보다 저전력의 오퍼레이팅 포인트를 획득하기 위한 임의의 다른 플랫폼, 예를 들어 태블릿, 저전력 노트븍, 울트라 포터블 또는 초박형 노트븍, 마이크로-서버, 저전력 데스크탑, 전송 디바이스, 수신 디바이스, 또는 모바일 단말이 아닌 공지되거나 이용가능한 임의의 다른 컴퓨팅 플랫폼을 가리킬 수도 있다. 도시된 플랫폼은 다수의 상이한 디바이스들을 결합하기 위한 다수의 상이한 인터커넥트를 나타낸다. 이들 인터커넥트의 예시적인 설명은 여기서 개시되는 장치 및 방법의 구현 및 포함에 대한 선택사항들을 제공하기 위해 이하에서 제시된다. 예컨대, 도시 및 설명된 인터커넥트 프로토콜들 중 임의의 것은, PCIe 아키텍처 그 자체를 잠재적으로 구현하지 않고서, PCIe 아키텍처를 참조하여 위에서 설명한 것과 유사한 고속 구성 메커니즘을 구현할 수 있다. 그러나, 저전력 플랫폼(1400)은 도시된 인터커넥트들 또는 디바이스들을 포함하거나 구현할 필요가 없다. 또한, 구체적으로 도시되지 않은 다른 디바이스 및 인터커넥트 구조들이 포함될 수 있다.
도면의 중심에서 시작하면, 플랫폼(1400)은 애플리케이션 프로세서(1405)를 포함한다. 이는, 종종, 여기서 설명되거나 산업계에서 공지된 프로세서 구성의 버전일 수 있는 저전력 프로세서를 포함한다. 일례로서, 프로세서(1400)는 SoC로서 구현될 수 있다. 설명을 위한 특정 예로서, 프로세서(1400)는 인텔 아키텍처 코어-기반 프로세서, 예를 들어 캘리포니아 산타클라라에 위치한 인텔사로부터 입수가능한 i3, i5, i7 또는 다른 프로세서를 포함한다. 그러나, 캘리포니아 서니베일에 있는 어드밴스드 마이크로 디바이스(AMD) 주식회사, 캘리포니아 서니베일에 위치한 MIPS 테크놀로지사로부터의 MIPS-기반 설계, ARM 홀딩스사 또는 그 고객으로부터 허가된 ARM-기반 설계, 혹은 이들의 허가 소지자들(licensees) 또는 사용자들(adopters)로부터 입수가능한 다른 저전력 프로세서들이, 애플 A5/A6 프로세서, 퀄컴 스냅드래곤 프로세서, 또는 TI OMAP 프로세서와 같은 다른 실시예들에서, 대신에 존재할 수 있음을 이해한다. 이들 회사로부터의 프로세서 및 SoC 기술이 발전함에 따라, 호스트 프로세서(1400)로부터 분리된 것으로 도시된 보다 많은 구성요소들이 SoC 상에 집적될 수 있음을 유의한다. 그 결과, 유사한 인터커넥트(및 그 발명)은 "온-다이"에서 사용될 수 있다.
일 실시예에서, 애플리케이션 프로세서(1405)는 오퍼레이팅 시스템, 사용자 인터페이스 및 애플리케이션들을 실행시킨다. 여기서, 애플리케이션 프로세서(1405)는, 종종, 오퍼레이팅 시스템, 사용자 인터페이스, 및 애플리케이션들이 프로세서(1405)의 동작/실행을 지시하는 데 사용하는 ISA(Instruction Set Architecture)를 인지하거나 그와 연관된다. 이는 또한 일반적으로 센서, 카메라, 디스플레이, 마이크로폰 및 대용량 저장 장치와 인터페이싱한다. 일부 구현예들은 시간 중요 통신-관련 프로세싱(time critical telecom-related processing)을 다른 구성요소들에게 오프로드한다.
도시된 바와 같이, 호스트 프로세서(1405)는 무선 인터페이스(1430), 예를 들어 WLAN, 와이기그(WiGig), 와이어리스HD(WirelessHD), 또는 다른 무선 인터페이스에 결합된다. 여기서, LLI, SSIC, 또는 유니포트(UniPort) 컴플라이언트 인터커넥트는 호스트 프로세서(1405) 및 무선 인터페이스(1430)을 결합하는 데 이용된다.
LLI는 낮은 지연 인터페이스(low latency interface)를 나타낸다. LLI는 일반적으로 2개의 디바이스들 간의 메모리 공유를 가능하게 한다. 양방향 인터페이스는 2개의 디바이스들 간의 메모리 트랜잭션들을 수송하여, 디바이스가 다른 디바이스의 로컬 메모리에 액세스하도록 하게 한다; 종종, 이는 마치 단일 디바이스인 것처럼 소프트웨어 중재 없이 행해진다. 일 실시예에서, LLI는 트래픽의 3개의 클래스들, 링크 상에서의 신호 전달, GPIO 카운트 저감을 허용한다. 예로서, LLI는 이하에서 보다 상세하게 설명되는 MPHY와 같은 통신 또는 물리 계층(PHY)에 대한 계층화된 프로토콜 스택을 정의한다.
SSIC는 SuperSpeed Inter-Chip를 지칭한다. SSIC는 저전력 물리층을 이용하여 고속 USB 디바이스의 설계를 가능하게 할 수 있다. 예로서, MPHY 계층이 이용되지만, 보다 양호한 전력 성능을 위해서 USB 3.0 컴플라이언트 프로토콜 및 소프트웨어가 MPHY 위에서 이용된다.
유니프로(UniPro)는 애플리케이션 프로세서들, 코-프로세서들, 모뎀들, 및 주변기기들과 같은 광범위한 디바이스들 및 구성요소들을 인터커넥트할 뿐만 아니라, 제어 메시지들, 벌크 데이터 전송 및 패킷화된 스트리밍을 포함하는 데이터 트래픽의 상이한 타입들을 지원하기 위한 범용의 에러 처리 고속 솔루션(a general purpose, error-handling, high speed solution)을 제공하면서, 물리 계층 추상화에 따른 계층화된 프로토콜 스택을 기술한다. 유니프로는 MPHY 또는 DPHY의 사용을 지원할 수 있다.
또한, 다른 인터페이스들은 여기서 설명되는 장치 및 방법을 이용할 수 있는 다른 인터페이스들을 통해 호스트 프로세서(1405), 예를 들어 디버그(1490), 네트워크(1485), 디스플레이(1470), 카메라(1475), 및 저장 장치(1480)에 직접 결합될 수 있다.
디버그 인터페이스(1490) 및 네트워크(1485)는 PTI와 같은 디버그 인터페이스(1491), 또는 기능적 네트워크 연결부(1485) 상에서 동작하는 디버그 인터페이스와 같은 네트워크 연결부를 통해 애플리케이션 프로세서(1405)와 통신한다.
디스플레이(1470)는 하나 이상의 디스플레이를 포함한다. 일 실시예에서, 디스플레이(1470)는 터치 입력을 수신할 수 있는 하나 이상의 터치 센서를 갖는 디스플레이를 포함한다. 여기서, 디스플레이(1470)는 디스플레이 인터페이스(DSI)(1471)를 통해 애플리케이션 프로세서(1405)에 결합된다. DSI(1471)은 호스트 프로세서와 D-PHY 물리 인터페이스를 이용할 수 있는 주변 디바이스들과의 사이에서의 프로토콜들을 정의한다. 이는, 통상, 디스플레이 픽셀 인터페이스 2(DPI-2)와 같은 비디오 포맷들 및 시그널링을 위한 픽셀 포맷들 및 정의된 커맨드 세트, 또한 디스플레이 커맨드 세트(DCS)를 통한 제어 디스플레이 로직 파라미터들을 채택한다. 예로서, DSI(1471)은 레인 당 대략 1.5Gb/s로, 또는 6Gb/s까지로 동작한다.
일 실시예에서, 카메라(1475)는 정지 화상, 비디오 캡처 또는 양쪽 모두에 사용되는 이미지 센서를 포함한다. 전방 및 후방 카메라는 모바일 디바이스에서 일반적이다. 듀얼 카메라는 입체적 지원을 제공하는 데 사용될 수 있다. 도시된 바와 같이, 카메라(1475)는 CSI(1476)와 같은 주변 인터커넥트를 통해 애플리케이션 프로세서(1405)에 결합된다. CSI(1476)는 주변 디바이스(예를 들어, 카메라, 이미지 신호 프로세서)와 호스트 프로세서(예를 들어, 1405, 베이스밴드, 애플리케이션 엔진) 사이에서의 인터페이스를 정의한다. 일 실시예에서, 이미지 데이터 전송은 데이터 및 클록 신호와 함께 단방향 차동 직렬 인터페이스인 DPHY를 통해 수행된다. 일 실시예에서, 주변 장치의 제어는 카메라 제어와 같은 별도의 백(back) 채널 상에서 일어난다. 설명을 위한 예로서, CSI의 속도는 50Mbps~2Gpbs 범위일 수 이거나, 그 안의 임의의 범위/값일 수 있다.
일례에서, 저장 장치(1480)는 대량의 정보를 저장하기 위해 애플리케이션 프로세서(1405)에 의해 이용되는 비휘발성 메모리를 포함한다. 이는 하드 디스크와 같은 자기 형태의 저장 장치 또는 플래시 기술에 기초할 수 있다. 여기서, 1480은 범용 플래시 저장(UFS; Universal Flash Storage) 인터커넥트(1481)를 통해 프로세서(1405)에 결합된다. UFS(1481)는, 일 실시예에서, 모바일 시스템들과 같은 저전력 컴퓨팅 플랫폼들을 위해 맞춤화된 인터커넥트를 포함한다. 예로서, 이는 랜덤 판독/기록 속도들을 증대시키는 데 큐잉(queuing) 특징들을 이용하여 200~500MB/s 전송 레이트(예를 들어, 300MB/s)를 제공한다. 일 구현예에서, UFS(1481)는 유니프로와 같은 MPHY 물리 계층 및 프로토콜 계층을 이용한다.
모뎀(1410)은 종종 변조기/복조기를 나타낸다. 모뎀(1410)은 일반적으로 셀룰러 네트워크로의 인터페이스를 제공한다. 이는, 어떤 통신 표준이 이용되는지에 따라, 상이한 네트워크 타입들 및 상이한 주파수들을 갖고서 통신할 수 있다. 일 실시예에서, 음성 접속 및 데이터 접속의 양쪽이 지원된다. 모뎀(1410)은 LLI, SSIC, 유니프로, 모바일 익스프레스, 등 중 하나 이상과 같은 임의의 공지된 인터커넥트를 이용하여 호스트(1405)에 결합된다.
일 실시예에서, 제어 버스는 무선(1435), 스피커(1440), 마이크로폰(1445)과 같은 제어 또는 데이터 인터페이스들을 결합하는 데 사용된다. 이러한 버스의 예는 광범위한 오디오 및 제어 솔루션들을 지원할 수 있는 유연한 저전력 멀티-드롭 인터페이스인 SLIMbus이다. 다른 예들은 PCM, I2S, I2C, SPI, 및 UART를 포함한다. 무선(1435)은 2개의 디바이스들 간의 근거리 통신 표준(예를 들어, 블루투스 또는 NFC), 포지션 및/또는 시간을 삼각측량할 수 있는 네비게이션 시스템(예를 들어, GPS), 아날로그 또는 라디오 방송용 수신기(예를 들어, FM 라디오), 혹은 다른 공지된 무선 인터페이스 또는 표준 등의 인터페이스를 포함한다. 스피커(들)(1440)는 소리를 생성하는 임의의 디바이스, 예를 들어 벨소리 또는 음악을 생성하는 전기기계 디바이스를 포함한다. 다수의 스피커들은 스테레오 또는 멀티-채널 사운드를 위해 이용될 수 있다. 마이크로폰(1445)은 종종 통화(a call) 중에 말하는 것과 같은 음성 입력에 이용된다.
무선 주파수 집적 회로(RFIC; Radio Frequency Integrated Circuit)(1415)는 무선 신호들의 프로세싱, 예를 들어 증폭, 믹싱, 필터링, 및 디지털 변환과 같은 아날로그 프로세싱을 수행해야 한다. 도시된 바와 같이, RFIC(1415)는 인터페이스(1412)를 통해 모뎀(1410)에 결합된다. 일 실시예에서, 인터페이스(1412)는 LTE, 3GPP, EGPRS, UMTS, HSPA+, 및 TD-SCDMA와 같은 통신 표준들을 지원하는 양방향성 고속 인터페이스(예를 들어, DigRF)를 포함한다. 특정 예로서, DigRF는 M-PHY 물리 계층에 기초한 프레임 지향성의 프로토콜(a frame-oriented protocol)을 이용한다. DigRF는, 통상, 현재 레인 당 1.5 또는 3Gbps 사이에서 동작하고, 4개의 레인들과 같은 다수의 레인들을 갖고서 구성 가능한 최적화된 핀 카운트를 갖는 RF 친화적이며 낮은 지연의 저전력으로 불린다.
인터페이스(1461)(예를 들어, RF 제어 인터페이스)는 단순한 디바이스 내지 복잡한 디바이스를 지원하는 플렉서블 버스를 포함한다. 특정 예로서, 인터페이스(1461)는 RF 전단(Front-End) 구성요소들의 제어를 위해 설계된 플렉서블 2-와이어 직렬 버스를 포함한다. 하나의 버스 마스터는 RF 신호를 증폭하는 전력 증폭기(1450), 센서 입력을 수신하는 센서들, 네트워크 모드에 따라 RF 신호 경로들 사이를 스위칭하는 스위치 모듈(들)(1460), 및 나쁜 안테나 상태를 보상하거나 대역폭을 강화하기 위한 안테나 튜너들(1465)과 같은 다수의 디바이스들에 대해 기록 및 판독을 행할 수 있다. 인터페이스(1461)는, 일 실시예에서, 타이밍 중요 이벤트들 및 낮은 EMI를 위한 그룹 트리거 기능을 갖는다.
전력 관리(1420)는 모바일 디바이스에서의 구성요소들에 대한 효율을 개선하도록 전압을 감소시키거나 증가시키는 등의 전력 관리된 전압을 모바일 디바이스(1400)에서의 모든 상이한 구성요소들에게 제공하는데 사용된다. 이는, 일 실시예에서, 배터리 충전 및 잔여 에너지를 제어 및 모니터링하기도 한다. 배터리 인터페이스는 전력 관리(1420)와 배터리 사이에서 이용될 수 있다. 설명을 위한 예로서, 배터리 인터페이스는 모바일 단말 및 스마트/저비용 배터리들 사이에서의 단선식 통신(a single-wire communication)을 포함한다.
도 15를 참조하면, 멀티코어 프로세서의 실시예의 블록도가 도시되어 있다. 도 15의 실시예에 도시된 바와 같이, 프로세서(1500)는 다수의 도메인들을 포함한다. 구체적으로, 코어 도메인(1530)은 복수의 코어들(1530A-1530N)을 포함하고, 그래픽 도메인(1560)은 미디어 엔진(1565)을 갖는 하나 이상의 그래픽 엔진들을 포함하고, 시스템 에이전트 도메인(1510)이 있다. 여기서, 여기서 개시되는 고속 구성 메커니즘은 그래픽(1565) 또는 다른 에이전트와 같은 집적형 디바이스/기능부를 구성하도록 구현될 수 있다. 여기서, 일부 구현예들에서, 시스템 에이전트(1510)가 루트 제어기 또는 컴플렉스로서 동작할 수 있지만, 코어들(1530)은 호스트 프로세싱 디바이스를 포함한다는 것을 유의한다.
여러 실시예들에서, 시스템 에이전트 도메인(1510)은 전력 제어 이벤트들 및 전력 관리를 다룸으로써, 도메인들(1530, 1560)(예를 들어, 코어들 및/또는 그래픽 엔진들)의 개개의 유닛들이 소정의 유닛에서 발생하는 활성화(또는 비활성화)의 관점에서 적절한 전력 모드/레벨(예를 들어, 활성, 터보, 슬립, 동면(hibernate), 딥 슬립, 또는 다른 개선된 구성의 전력 인터페이스 유사 상태)에서 동적으로 동작하도록 독립적으로 제어 가능하다. 도메인들(1530, 1560) 각각은 상이한 전압 및/또는 전력에서 동작할 수 있으며, 또한 도메인들 내의 개개의 유닛들은 독립적인 주파수 및 전압에서 각각 잠재적으로 동작한다. 단지 3개의 도메인들로 도시되어 있지만, 이와 관련해서 본 발명의 범위가 제한되지 않으며 또한 추가적인 도메인들이 다른 실시예들에서 존재할 수 있음을 이해하도록 유의한다.
도시된 바와 같이, 각 코어(1530)는 다수의 실행 유닛들 및 추가적인 프로세싱 요소들에 부가하여 로우 레벨 캐시들을 더 포함한다. 여기서, 다수의 코어들은 서로 결합되며, 또한 최종 레벨 캐시(LLC)(1540A-1540N)의 복수의 유닛들 또는 슬라이스들로 형성되는 공유 캐시 메모리에 결합된다; 이들 LLC들은, 종종, 저장 장치 및 캐시 제어기 기능을 포함하며, 코어들뿐만 아니라 그래픽 엔진 사이에서도 잠재적으로 공유된다.
알 수 있는 바와 같이, 링 인터커넥트(1550)는 코어들을 모두 결합하며, 코어와 LLC 슬라이스 간의 결합부에 각각 있는 복수의 링 중지부들(ring stops)(1552A-1552N)을 통해 코어 도메인(1530), 그래픽 도메인(1560) 및 시스템 에이전트 회로(1510) 사이에서의 인터커넥션을 제공한다. 도 15에서 알 수 있는 바와 같이, 인터커넥트(1550)는 어드레스 정보, 데이터 정보, 확인응답 정보, 및 스누프/무효 정보를 포함한 다양한 정보를 전달하는 데 사용된다. 비록 링 인터커넥트가 도시되어 있지만, 임의의 공지된 온-다이 인터커넥트 또는 패브릭이 이용될 수 있다. 설명을 위한 예로서, 상기한 패브릭들 중 일부(예를 들어, 다른 온-다이 인터커넥트, IOSF(Intel On-chip System Fabric), AMBA(Advanced Microcontroller Bus Architecture) 인터커넥트, 다차원 메시 패브릭, 또는 다른 공지된 인터커넥트 아키텍처)가 유사한 방식으로 이용될 수 있다.
추가로 도시된 바와 같이, 시스템 에이전트 도메인(1510)은 연관된 디스플레이의 제어 및 연관된 디스플레이로의 인터페이스를 제공하는 디스플레이 엔진(1512)을 포함한다. 시스템 에이전트 도메인(1510)은, 시스템 메모리(예를 들어, 다수의 DIMM으로 구현된 DRAM)로의 인터페이스를 제공하는 집적형 메모리 제어기(1520), 메모리 코히런스 동작들을 수행하기 위한 코히런스 로직(1522)과 같은 다른 유닛들을 포함할 수 있다. 다수의 인터페이스들은 프로세서와 다른 회로 사이의 인터커넥션을 가능하게 하도록 존재할 수 있다. 예컨대, 일 실시예에서, 적어도 하나의 다이렉트 미디어 인터페이스(DMI)(1516)뿐만 아니라 하나 이상의 PCIe 인터페이스(1514)가 제공된다. 디스플레이 엔진 및 이들 인터페이스들은 일반적으로 PCIe 브리지(1518)를 통해 메모리와 결합한다. 또한, 추가의 프로세서들 또는 다른 회로와 같은 다른 에이전트들 사이에서 통신을 제공하기 위해, 하나 이상의 다른 인터페이스들(예를 들어, 인텔 QPI(Quick Path Interconnect) 패브릭)이 제공될 수 있다.
다음으로 도 16으로 가면, 본 발명에 따른 시스템 온-칩(SOC) 설계의 실시예가 도시되어 있다. 설명을 위한 특정한 예로서, SOC(1600)는 사용자 장치(UE) 또는 모바일 단말에 포함된다. 일 실시예에서, UE는 통신하기 위해 엔드-유저에 의해 사용되는 임의의 디바이스, 예를 들어 핸드헬드 전화기를 지칭한다. 종종, UE는 사실상 GSM 네트워크에서의 이동국(MS)에 잠재적으로 대응하는 기지국 또는 노드에 연결된다. 그러나, 도시된 SoC는 다른 비-모바일 단말들, 예를 들어 태블릿, 초박형 노트븍, 광대역 어댑터를 구비한 노트북, 또는 임의의 다른 유사한 통신 디바이스에서 이용될 수 있다. SoC(1600) 내에서, 고속 구성 메커니즘은 GPU(1615), 비디오(1620), 비디오(1625), 플래시 제어기(1645), SDRAM 제어기(1640), 부트 ROM(1635), SIM(1630), 전력 제어(1655), PC(1650), 또는 로직의 다른 블록 등의 집적 디바이스들을 구성하기 위해 여기서 설명되는 바와 같이 이용될 있다. 여기서, 블록(1610)에서의 제어기 또는 다른 로직은 루트 컴플렉스로서 동작할 수 있다. 또한, 고속 구성 메커니즘은 도시된 MIPI, HDMI, 또는 다른 미도시된 포트들에 결합된 디바이스들을 구성하는 데 이용될 수 있다.
여기서, SOC(1600)는 2개의 코어들(1606, 1607)을 포함한다. 상기한 것과 마찬가지로, 코어들(1606, 1607)은 인텔 아키텍처 코어-기반 프로세서, AMD 프로세서, MIPS-기반 프로세서, ARM-기반 프로세서 설계와 같은 ISA, 또는 그 고객뿐만 아니라, 이들의 허가 소지자들 또는 사용자들에 따를 수 있다. 코어들(1606, 1607)은 시스템(1600)의 다른 부분들과 통신하기 위해 버스 인터페이스 유닛(1609) 및 L2 캐시(1610)와 연관되는 캐시 제어(1608)에 결합되어 있다. 인터커넥트(1610)는 설명되는 발명의 하나 이상의 측면들을 잠재적으로 구현하는 온-칩 인터커넥트, 예를 들어 IOSF, AMBA, 또는 상기한 다른 인터커넥트를 포함한다.
인터페이스(1610)는 가입자 아이덴티티 모듈(SIM) 카드와 인터페이싱하는 SIM(1630), SOC(1600)를 개시 및 부트하기 위해 코어들(1606, 1607)에 의한 실행용 부트 코드를 유지하는 부트 ROM(1635), 외부 메모리(예를 들어, DRAM(1660))와 인터페이싱하기 위한 SDRAM 제어기(1640), 비휘발성 메모리(예를 들어, 플래시(1665))와 인터페이싱하기 위한 플래시 제어기(1645), 주변 장치들과 인터페이싱하기 위한 주변 장치 제어(1650)(예를 들어, 직렬 주변 인터페이스), 입력(예를 들어, 터치 인에이블형 입력)을 디스플레이 및 수신하기 위한 비디오 코덱(1620) 및 비디오 인터페이스(1625), 그래픽 관련 계산들을 수행하기 위한 GPU(1615) 등과 같은 다른 구성요소들로의 통신 채널들을 제공한다. 이들 인터페이스들 중 임의의 인터페이스는 여기서 설명되는 본 발명의 측면들을 통합할 수 있다.
또한, 시스템은 블루투스 모듈(1670), 3G 모뎀(1675), GPS(1685), 및 WiFi(1685)와 같은 통신용 주변 장치들을 도시한다. 상기한 바와 같이, UE는 통신용 무선 장치(a radio)를 포함함을 유의한다. 그 결과, 이들 주변 통신 모듈들은 전부 필요로 되지 않는다. 그러나, UE의 일부 형태에서, 외부 통신용 무선 장치가 포함되어야 한다.
상기한 장치들, 방법들, 시스템들이 상기한 바와 같이 임의의 전자 디바이스 또는 시스템에서 구현될 수 있음을 유의한다. 특정 예시로서, 이하의 도면들은 여기서 설명되는 바와 같이 본 발명을 이용하는 예시적인 시스템들을 제공한다. 시스템들이 이하에서 보다 상세하게 설명됨에 따라, 다수의 상이한 인터커넥트들이 개시되고, 설명되며, 상기 논의로부터 재검토된다. 또한, 쉽게 알 수 있는 바와 같이, 상술한 개선 사항들은 상기 인터커넥트들, 패브릭들 또는 아키텍처들 중 임의의 것에 적용될 수 있다.
이제 도 17을 참조하면, 본 발명의 일 실시예에 따른 컴퓨터 시스템에 존재하는 구성요소들의 블록도가 도시되어 있다. 상기 논의와 마찬가지로, 고속 구성 메커니즘은 도 17에 도시/설명된 블록들 중 임의의 것을 구성하기 위해 프로세서(1710) 상에서 이용되거나, 혹은 프로세서(1710)에 결합될 수 있다. 도시된 바와 같이, 시스템(1700)은 구성요소들의 임의의 조합을 포함한다. 이 구성요소들은 IC들, IC들 중 일부, 별도의 전자 디바이스들, 또는 다른 모듈들, 로직, 하드웨어, 소프트웨어, 펌웨어, 또는 컴퓨터 시스템에서 채택되는 이들의 조합으로서, 혹은 이와 달리 컴퓨터 시스템의 섀시(a chassis) 내에 통합되는 구성요소들로서 구현될 수 있다. 또한, 컴퓨터 시스템의 다수의 구성요소들의 상위 레벨 뷰(a high level view)를 나타내도록 도 17의 블록도가 의도된 것임을 유의한다. 그러나, 도시된 구성요소들 중 일부가 생략될 수 있고, 추가적인 구성요소들이 존재할 수 있으며, 도시된 구성요소들의 상이한 배치가 다른 구현예들에서 일어날 수 있음을 이해해야 한다. 그 결과, 상술한 발명은 이하에 도시 또는 설명되는 인터커넥트들 중 하나 이상의 임의의 부분에서 구현될 수 있다.
도 17에서 알 수 있는 바와 같이, 프로세서(1710)는, 일 실시예에서, 마이크로프로세서, 멀티-코어 프로세서, 멀티 스레드 프로세서, 초저전압 프로세서, 임베디드 프로세서, 또는 다른 공지된 프로세싱 요소를 포함한다. 예시된 구현예에서, 프로세서(1710)는 시스템(1700)의 여러 구성요소들 중 다수의 구성요소와의 통신을 위한 메인 프로세싱 유닛 및 중앙 허브로서 동작한다. 일례로서, 프로세서(1700)는 SoC로서 구현된다. 설명을 위한 특정 예로서, 프로세서(1710)는 인텔 아키텍처 코어-기반 프로세서, 예를 들어 캘리포니아 산타클라라에 위치한 인텔 주식회사로부터 입수가능한 i3, i5, i7 또는 다른 프로세서를 포함한다. 그러나, 캘리포니아 서니베일에 위치한 AMD, 캘리포니아 서니베일에 위치한 MIPS 테크놀로지사로부터의 MIPS-기반 설계, ARM 홀딩스사 또는 그 고객으로부터 허가된 ARM-기반 설계, 혹은 이들의 허가 소지자들 또는 사용자들로부터 입수가능한 다른 저전력 프로세서들이, 애플 A5/A6 프로세서, 퀄컴 스냅드래곤 프로세서, 또는 TI OMAP 프로세서와 같은 다른 실시예들에서, 대신에 존재할 수 있음을 이해해야 한다. 고객 버전의 이러한 프로세서들 중 다수가 변형 및 변화되지만, 그것들이 프로세서 사용 허가자(processor licensor)에 의해 제시된 바와 같이 정의된 알고리즘들을 수행하는 특정 인스트럭션 세트를 지원하거나 인지할 수 있음을 유의한다. 여기서, 마이크로 구조적 구현예는 변할 수 있지만, 프로세서의 구조적 기능은 보통 일관적이다. 일 구현예에서의 프로세서(1710)의 아키텍처 및 동작에 관한 소정의 세부 사항들은 설명을 위한 예를 제공하기 위해 이하에서 추가로 논의될 것이다.
프로세서(1710)는, 일 실시예에서, 시스템 메모리(1715)와 통신한다. 설명을 위한 예로서, 이는 일 실시예에서 소정량의 시스템 메모리를 제공하기 위해 다수의 메모리 디바이스들을 통해 구현될 수 있다. 예들로서, 메모리는 JEDEC(Joint Electron Devices Engineering Council) JESD 209-2E(2009년 4월에 공개됨)에 따른 현재의 LPDDR2(low power double data rate 2) 표준, 또는 대역폭을 증대시키기 위해 LPDDR2로의 확장을 제공하는 LPDDR3 또는 LPDDR4로 불리우는 차세대 LPDDR 표준과 같은 JEDEC LPDDR-기반 설계를 따를 수 있다. 다수의 구현예들에서, 개개의 메모리 디바이스들은 싱글 다이 패키시(SDP), 듀얼 다이 패키지(DDP) 또는 쿼드 다이 패키지(Q17P)와 같은 상이한 패키지 타입들일 수 있다. 이 디바이스들은, 일부 실시예들에서, 낮은 프로파일 솔루션(a lower profile solution)을 제공하기 위해 마더보드 상에 직접 땜납되는 반면에, 다른 실시예들에서 디바이스들은 소정의 커넥터에 의해 마더보드에 차례로 결합되는 하나 이상의 메모리 모듈들로서 구성된다. 또한 당연히, 다른 타입의 메모리 모듈들, 예를 들어 microDIMM, MiniDIMM을 비제한적으로 포함하는 상이한 다수의 DIMM(dual inline memory module)과 같은 다른 메모리 구현예들도 가능하다. 설명을 위한 특정 실시예에서, 메모리는 2GB와 16GB 사이의 크기이며, 볼 그리드 어레이(BGA)를 통해 마더보드 상에 땜납되는 LPDDR2 또는 LPDDR3 메모리 혹은 DDR3LM 패키지로서 구성될 수 있다.
데이터, 애플리케이션, 하나 이상의 오퍼레이팅 시스템 등과 같은 정보의 지속적인 저장을 제공하기 위해, 대용량 저장 장치(1720) 또한 프로세서(1310)와 결합한다. 다수의 실시예들에서, 보다 얇고 가벼운 시스템 설계를 가능하게 할 뿐만 아니라 시스템 응답성을 향상시키기 위해, 상기 대용량 저장 장치는 SSD를 통해 구현될 수 있다. 그러나, 다른 실시예들에서, 대용량 저장 장치는 기본적으로 파워 다운 이벤트 동안에 콘텍스트 상태 및 다른 정보의 비휘발성 저장을 가능하게 하도록 SSD 캐시로서 동작하는 보다 소량의 SSD 저장 장치와 함께 디스크 드라이브(HDD)를 이용하여 구현될 수 있어서, 고속 파워 업이 시스템 동작들의 재개시(re-initiation)에 일어날 수 있다. 또한, 도 17에 도시된 바와 같이, 플래시 디바이스(1722)는 예를 들어 직렬 주변 장치 인터페이스(SPI)를 통해 프로세서(1710)에 결합될 수 있다. 이 플래시 디바이스는 BIOS(basic input/output software)뿐만 아니라 시스템의 다른 펌웨어를 포함하는 시스템 소프트웨어의 비휘발성 저장 장치를 제공할 수 있다.
다수의 실시예들에서, 시스템의 대용량 저장 장치는 SSD 단독으로 구현되거나, 혹은 SSD 캐시를 갖는 디스크, 광학 또는 다른 드라이브로서 구현된다. 일부 실시예들에서, 대용량 저장 장치는 복구(RST; restore) 캐시 모듈과 함께 SSD 또는 HDD로서 구현된다. 다수의 구현예들에서, HDD는 320GB-4테라바이트(TB) 및 그 이상 사이의 저장 장치를 제공하는 반면에, RST 캐시는 24GB-256GB의 용량을 갖는 SSD로 구현된다. 이러한 SSD 캐시는 적절한 레벨의 응답성을 제공하기 위해 단일 레벨 캐시(SLC) 또는 멀티-레벨 캐시(MLC) 옵션으로서 구성될 수 있다. SSD만의 옵션에서, 모듈은 mSATA 또는 NGFF 슬롯에서와 같은 다수의 위치들에서 수용될 수 있다. 일례로서, SSD는 120GB-1TB 범위의 용량을 갖는다.
다양한 입/출력(IO) 디바이스들이 시스템(1700) 내에 존재할 수 있다. 도 17의 실시예에서 구체적으로 도시된 것은, 섀시의 덮개(lid) 부분 내에서 구성된 고선명 LCD 또는 LED 패널일 수 있는 디스플레이(1724)이다. 또한, 이 디스플레이 패널은, 디스플레이 패널 위에서 외부적으로 구성된 터치 스크린(1725)을 제공할 수 있어, 예컨대 이 터치 스크린과 사용자의 상호작용을 통해 원하는 동작들, 예를 들어 정보의 디스플레이, 정보의 액세스 등과 관련된 동작들을 가능하게 하도록 사용자 입력들이 시스템에 제공될 수 있다. 일 실시예에서, 디스플레이(1724)는 고성능 그래픽 인터커넥트로서 구현될 수 있는 디스플레이 인터커넥트를 통해 프로세서(1710)에 결합될 수 있다. 터치 스크린(1725)은 일 실시예에서 I 2 C 인터커넥트일 수 있는 다른 인터커넥트를 통해 프로세서(1710)에 결합될 수 있다. 도 17에 추가로 도시된 바와 같이, 터치 스크린(1725)에 부가하여, 터치에 의한 사용자 입력은, 섀시 내에서 구성될 수 있고 또한 터치 스크린(1725)와 동일한 I2C 인터커넥트에 결합될 수도 있는 터치 패드(1730)를 통해 발생할 수도 있다.
디스플레이 패널은 다수의 모드에서 동작할 수 있다. 제 1 모드에서, 디스플레이 패널은 그 디스플레이 패널이 가시광에 대해 투명한 투명 상태로 구성될 수 있다. 다양한 실시예들에서, 대다수의 디스플레이 패널은 주변부 둘레의 베젤(a bezel)을 제외한 디스플레이일 수 있다. 시스템이 노트북 모드에서 동작되고 디스플레이 패널이 투명 상태로 동작되면, 사용자는 디스플레이 패널 상에 존재하는 정보를 볼 수 있음과 동시에 디스플레이 뒤쪽의 물체들을 볼 수도 있다. 또한, 디스플레이 패널 상에 디스플레이되는 정보는 디스플레이 뒤쪽에 위치한 사용자에 의해 보여질 수 있다. 또는, 디스플레이 패널의 동작 상태는 가시광이 디스플레이 패널을 통해 전송되지 못하는 불투명 상태(an opaque state)일 수 있다.
태블릿 모드에서, 베이스 패널의 하부면이 표면에 받쳐져 있거나 사용자에 의해 유지되면, 시스템은 디스플레이 패널의 후방 디스플레이 표면이 한 위치에 멈춰 서서 사용자 바깥쪽으로 향하도록 접혀져서 닫힌다. 태블릿 동작 모드에서, 후방 디스플레이 표면은 터치 스크린 기능을 가질 수 있고 태블릿 디바이스와 같은 종래의 터치 스크린 디바이스의 다른 공지된 기능들을 수행할 수 있음에 따라, 이 표면은 디스플레이 및 사용자 인터페이스의 역할을 수행한다. 이를 위해, 디스플레이 패널은 터치 스크린 계층과 전방 디스플레이 표면 사이에 배치되는 투명도 조정 계층(a transparency-adjusting layer)을 포함할 수 있다. 일부 실시예들에서, 투명도 조정 계층은 일렉트로크로믹(EC; electrochromic) 계층, LCD 계층, 또는 EC 및 LCD 계층들의 조합일 수 있다.
다양한 실시예들에서, 디스플레이는 상이한 사이즈들, 예를 들어 11.6" 또는 13.3" 스크린일 수 있고, 16:9 화면 종횡비 및 적어도 300 니츠(nits) 밝기를 가질 수 있다. 또한, 디스플레이는 풀 HD 해상도(적어도 1920 × 1080p)를 가질 수 있고, 임베디드 디스플레이 포트(eDP)와 호환될 수 있으며, 패널 셀프 리프레시를 갖는 저전력 패널일 수 있다.
터치 스크린 능력과 관련해서, 시스템은 멀티-터치 용량식(multi-touch capacitive)이며 적어도 5개의 핑거를 수용할 수 있는 디스플레이 멀티-터치 패널을 제공할 수 있다. 또한, 일부 실시예들에서, 디스플레이는 10개의 핑거를 수용할 수 있다. 일 실시예에서, 터치 스크린은 "핑거 화상(finger burn)"을 저감하고 "핑거 스킵(finger skipping)"을 피하기 위해 낮은 마찰의 손상 및 스크래치 방지 유리 및 코팅(예를 들어, Gorilla GlassTM 또는 Gorilla Glass 2TM) 내에 수용된다. 향상된 터치 경험 및 응답성을 제공하기 위해, 터치 패널은, 일부 구현예들에서, 핀치 줌(pinch zoom) 동안에 정적 뷰(static view) 당 2개의 프레임들(30Hz) 미만 등의 멀티-터치 기능과, 200ms(포인터에 대한 핑거 상에서의 지연(lag on finger to pointer))의 프레임(30Hz) 당 1cm 미만의 싱글-터치 기능을 갖는다. 디스플레이는, 일부 구현예들에서, 패널 표면과도 같은 높이인 최소 스크린 베젤, 및 멀티-터치의 사용시에 제한된 IO 간섭을 갖는 에지-투-에지 유리(edge-to-edge glass)를 지원한다.
지각적 컴퓨팅(perceptual computing) 및 다른 목적을 위해, 다수의 센서들은 시스템 내에 존재할 수 있고, 상이한 방식으로 프로세서(1710)에 결합될 수 있다. 소정의 관성 센서 및 환경 센서는 센서 허브(1740)를 통해, 예를 들어 I2C 인터커넥트를 거쳐서 프로세서(1710)에 결합할 수 있다. 도 17에 도시된 실시예에서, 이러한 센서들은 가속도계(1741), 주변광 센서(ALS; ambient light sensor)(1742), 나침반(1743) 및 자이로스코프(1744)를 포함할 수 있다. 다른 환경 센서들은, 일부 실시예들에서 시스템 관리 버스(SMBus)를 거쳐 프로세서(910)에 결합하는 하나 이상의 열(thermal) 센서들(1746)을 포함할 수 있다.
플랫폼에 존재하는 다양한 관성 센서 및 환경 센서를 이용하여, 많은 상이한 이용 사례들이 실현될 수 있다. 이러한 이용 사례들은 지각 컴퓨팅을 포함한 개선된 컴퓨팅 동작들을 가능하게 하며, 전력 관리/배터리 수명, 보안, 및 시스템 응답성에 관한 향상을 또한 허용한다.
예컨대, 전력 관리/배터리 수명 문제들과 관해서는, 주변 광 센서로부터의 정보에 적어도 부분적으로 기초하여, 플랫폼 위치에서의 주변 광 상태들이 판정되고 그에 따라 디스플레이 무결성이 제어된다. 따라서, 디스플레이 동작시에 소비되는 전력은 소정의 광 상태들에서 감소된다.
보안 동작들에 대해서는, 센서들로부터 얻은 콘텍스트 정보, 예를 들어 위치 정보에 기초하여, 사용자가 소정의 보안 문서들에 액세스하는 것이 허용되는지 여부를 판정할 수 있다. 예컨대, 사용자는 근무지 또는 집의 위치에서 이러한 문서들에 액세스하는 것을 허가받을 수 있다. 그러나, 플랫폼이 공공 장소에 있는 경우에는 사용자가 이러한 문서들에 액세스하는 것이 금지된다. 이러한 판정은, 일 실시예에서, 위치 정보에 기초하며, 예를 들어 랜드마크들에 대한 GPS 센서 또는 카메라 인지를 통해 결정된다. 다른 보안 동작들은 서로 가까운 범위 내의 디바이스들, 예를 들어 여기서 설명되는 휴대용 플랫폼 및 사용자의 데스크탑 컴퓨터, 이동 전화 등의 페어링(paring)을 제공하는 것을 포함할 수 있다. 소정의 공유는, 일부 실시예들에서, 이들 디바이스들이 이렇게 페어링되는 경우에 NFC(near field communication)를 통해 실현된다. 그러나, 디바이스들이 소정의 범위를 초과하면, 이러한 공유는 디스에이블될 수 있다. 또한, 여기서 설명되는 플랫폼 및 스마트폰을 페어링하는 경우, 디바이스들이 공공 장소에 있을 때 서로로부터 사전 결정된 거리보다 멀리 이동하면 알람이 트리거링되도록 구성될 수 있다. 반대로, 이 페어링된 디바이스들이 안전한 위치, 예를 들어 근무지나 집의 위치에 있으면, 디바이스들은 이러한 알람을 트리거링하는 일 없이 상기 사전 결정된 한계를 초과할 수 있다.
또한, 응답성은 센서 정보를 이용하여 향상될 수 있다. 예컨대, 플랫폼이 저전력 상태에 있을 때에도, 센서들은 비교적 낮은 주파수에서 실행되도록 여전히 인에이블될 수 있다. 따라서, 플랫폼의 위치에서의 임의의 변화들은, 예를 들어 관성 센서, GPS 센서 등에 의해 판정되는 바와 같이 결정된다. 이러한 변화들이 등록되어 있지 않으면, 이 경우에는 이용가능한 무선 네트워크 리소스들을 스캐닝할 필요가 없기 때문에, 와이파이 액세스 포인트 또는 유사한 무선 인에이블러(wireless enabler)와 같은 이전의 무선 허브로의 보다 빠른 접속이 발생한다. 따라서, 저전력 상태로부터 깨어날 때의 보다 높은 수준의 응답성이 달성된다.
여기서 설명되는 플랫폼 내의 통합 센서들을 통해 획득된 센서 정보를 이용하여 많은 다른 이용 사례들이 가능하게 될 수 있으며, 또한 상기 예들은 단지 예시를 위한 것임을 이해해야 한다. 여기서 설명되는 시스템을 이용하여, 지각적 컴퓨팅 시스템은 제스처 인지를 포함한 다른 입력 양식들의 추가를 허용할 수 있으며, 시스템이 사용자 동작들 및 의도를 감지하는 것을 가능하게 할 수 있다.
일부 실시예들에서, 하나 이상의 적외선 또는 다른 열 감지 요소들, 혹은 사용자의 존재 또는 움직임을 감지하기 위한 하나 이상의 다른 요소가 존재할 수 있다. 이러한 감지 요소들은 함께 동작하거나, 순차적으로 동작하거나, 이들 양쪽으로 동작하는 다수의 상이한 요소들을 포함할 수 있다. 예컨대, 감지 요소들은, 광 또는 소리의 투사 등의 초기 감지를 제공한 다음, 후속해서 예를 들어 초음파 ToF(time of flight) 카메라 또는 패터닝된 광 카메라(patterned light camera)에 의한 제스처 검출을 감지하는 요소들을 포함한다.
또한, 일부 실시예들에서, 시스템은 조명 라인(illuminated line)을 생성하는 광 생성기를 포함한다. 일부 실시예들에서, 이 라인은 가상 경계에 관한 시각적 단서(a visual cue), 즉 공간 내의 가공의 또는 가상의 위치를 제공하되, 여기서 가상의 경계 또는 평면(plane)을 뚫거나 통과하는 사용자의 행동은 컴퓨팅 시스템과 교류하려는 의도로서 해석된다. 일부 실시예들에서, 컴퓨팅 시스템이 사용자와 관련한 상이한 상태들로 변환함에 따라 조명 라인은 색상을 변경할 수 있다. 조명 라인은 공간 내 가상 경계의 사용에게 시각적 단서를 제공하는 데 사용될 수 있고, 또한 사용자가 컴퓨터와 교류하길 원하는 때를 판정하는 것을 포함해서 사용자와 관련된 컴퓨터의 상태 변환들을 판정하기 위해 사용자에 의해 사용될 수 있다.
일부 실시예들에서, 컴퓨터는 사용자 포지션을 감지하고, 가상 경계를 통한 사용자의 손의 움직임을 컴퓨터와 교류하고자 하는 사용자의 의도를 나타내는 제스처로서 해석하도록 동작한다. 일부 실시예들에서, 사용자가 가상 라인이나 평면을 통과할 때, 광 발생기에 의해 생성된 광이 변할 수 있음에 따라, 사용자가 컴퓨터로 입력을 제공하는 제스처들을 제공하기 위한 영역에 진입했다는 시각적 피드백을 사용자에게 제공할 수 있다.
디스플레이 스크린들은 사용자와 관련한 컴퓨터 시스템의 상태 변환들에 대한 시각적 표시들(visual indications)을 제공할 수 있다. 일부 실시예들에서, 사용자의 존재가 예를 들어 감시 요소들 중 하나 이상의 사용을 통해 시스템에 의해 감지되는 제 1 상태에서 제 1 스크린이 제공된다.
일부 구현예들에서, 시스템은 예를 들어 안면 인식에 의해 사용자 신원을 감지하도록 동작한다. 여기서, 컴퓨팅 시스템이 사용자 신원을 인지한 제 2 상태에서 제 2 스크린으로의 변환이 제공되며, 여기서 상기 제 2 스크린은 사용자가 새로운 상태로 변환했다는 시각적 피드백을 사용자에게 제공한다. 제 3 스크린으로의 변환은, 사용자가 그 사용자에 대한 인지를 확인한 제 3 상태에서 일어날 수 있다.
일부 실시예들에서, 컴퓨팅 시스템은 사용자를 위해 가상 경계의 위치를 판정하기 위해 변환 메커니즘을 사용할 수 있으며, 여기서 가상 경계의 위치는 사용자 및 콘텍스트에 따라 변할 수 있다. 컴퓨팅 시스템은 시스템과 교류하기 위한 가상 경계를 나타내도록 조명 라인과 같은 광을 생성할 수 있다. 일부 실시예들에서, 컴퓨팅 시스템은 대기 상태에 있을 수 있고, 광은 제 1 컬러로 생성될 수 있다. 컴퓨팅 시스템은, 감지 요소들을 이용하여 사용자의 존재 및 움직임을 감지하는 등에 의해, 사용자가 가상 경계를 지나서 도달했는지를 검출할 수 있다.
일부 실시예들에서, 사용자가 가상 경계를 가로지른 것(예를 들어, 사용자의 손이 가상 경계선보다 컴퓨팅 시스템에 더 가까이 있는 것)으로 검출했으면, 컴퓨팅 시스템은 사용자로부터 제스처 입력들을 수신하기 위한 상태로 변환할 수 있으며, 여기서 상기 변환을 나타내는 메커니즘은 제 2 색상으로 변하는 가상 경계를 나타내는 광을 포함할 수 있다.
그 후에, 일부 실시예들에서, 컴퓨팅 시스템은 제스처 움직임이 검출되는지를 판정할 수 있다. 제스처 움직임이 검출되면, 컴퓨팅 시스템은 제스처 인지 프로세스로 진행할 수 있되, 이 프로세스는 컴퓨팅 디바이스 내 메모리에 존재하거나 그렇지 않으면 컴퓨팅 디바이스에 의해 액세스될 수 있는 제스처 데이터 라이브러리로부터의 데이터 사용을 포함할 수 있다.
사용자의 제스처가 인지되는면, 컴퓨팅 시스템은 입력에 응답하여 기능을 수행할 수 있고, 또한 사용자가 가상 경계 내에 있는 경우 추가적인 제스처들을 수신하기 위해 되돌아갈 수 있다. 일부 실시예들에서, 제스처가 인지되지 않으면, 컴퓨팅 시스템은 에러 상태로 변환할 수 있고, 여기서 에러 상태를 나타내는 메커니즘은 제 3 색상으로 변하는 가상 경계를 나타내는 광을 포함할 수 있으며, 동시에 시스템은 사용자가 컴퓨팅 시스템과의 교류를 위해 가상 경계 내에 있는 경우 추가적인 제스처들을 수신하기 위해 되돌아간다.
상술한 바와 같이, 다른 실시예들에서 시스템은 적어도 2개의 상이한 모드들인 태블릿 모드와 노트북 모드에서 사용될 수 있는 변환가능 태블릿 시스템으로서 구성될 수 있다. 변환가능 시스템은 2개의 패널들, 즉 디스플레이 패널 및 베이스 패널을 가질 수 있어, 상기 태블릿 모드에서 2개의 패널들은 다른 하나의 위에 스택으로 배치된다. 태블릿 모드에서, 디스플레이 패널은 밖으로 향하고, 종래의 태블릿들에서 발견되는 터치 스크린 기능을 제공할 수 있다. 노트북 모드에서, 2개의 패널들은 오픈 클램셀 구성(a open clamshell configuration)으로 배열될 수 있다.
다양한 실시예들에서, 가속도계는 적어도 50Hz의 데이터 레이트를 갖는 3-축 가속도계일 수 있다. 3-축 자이로스코프일 수 있는 자이로스코프가 포함될 수도 있다. 또한, 전자 나침반(e-compass)/자력계가 존재할 수 있다. 또한, 하나 이상의 근접도 센서들이 (예를 들어, 사람이 시스템에 근접해 있는(그렇지 않은) 때를 감지하고, 또한 배터리 수명 연장을 위해 전력/성능을 조절하도록 열려진 덮개에 있어서) 제공될 수 있다. 일부 OS에 있어서, 가속도계, 자이로스코프 및 나침반을 포함한 센서 융합 능력(Sensor Fusion capability)은 향상된 특징들을 제공할 수 있다. 또한, 실시간 클록(RTC; real-time clock)을 갖는 센서 허브를 통해, 시스템의 나머지 부분이 저전력 상태에 있을 때에 센서 입력을 수신하도록 센서 메커니즘으로부터의 기상이 구현될 수 있다.
일부 실시예들에서, 덮개가 폐쇄/개방되는 때를 나타내는 내부 덮개/디스플레이 개방 스위치 또는 센서는, 시스템을 접속된 스탠바이(Connected Standby)에 두거나 혹은 접속된 스탠바이 상태로부터 자동으로 기상시키는데 사용될 수 있다. 다른 시스템 센서들은 감지된 파라미터들에 기초하여 프로세서 및 시스템 동작 상태들에 대한 변화를 가능하게 하도록 내부 프로세서, 메모리, 및 스킨 온도 모니터링을 위한 ACPI 센서들을 포함할 수 있다.
실시예에서, OS는 접속된 스탠바이를 구현하는 마이크로소프트 윈도우즈 8 OS(여기서 Win8 CS라고도 불림)일 수 있다. 윈도우즈 8 접속된 스탠바이 또는 유사 상태를 갖는 다른 OS는, 여기서 설명되는 플랫폼을 통해, 매우 낮은 울트라 유휴 전력(very low ultra idle power)을 제공하여, 매우 낮은 전력 소비로 예를 들어 클라우드-기반의 위치에 접속된 상태를 애플리케이션들이 유지할 수 있게 한다. 플랫폼은 3개의 전력 상태들, 즉 스크린 온(정상); (디폴트 "오프" 상태로서의) 접속된 스탠바이; 셧다운(shutdown)(0와트의 소비 전력)을 지원할 수 있다. 따라서, 접속된 스탠바이 상태에서, 플랫폼은 스크린이 오프되어 있더라도 논리적으로 (최소 전력 레벨에서) 온이다. 이러한 플랫폼에서, 부분적으로는 최저 전력 공급된 구성요소가 동작을 수행할 수 있도록 하게 하는 오프로드 기술(offload technology)로 인해, 전력 관리는 애플리케이션들에 대해 투명하게 되도록 될 수 있으며, 일정한 연결성을 유지하도록 이루어질 수 있다.
도 17에서 알 수 있는 바와 같이, 다양한 주변 디바이스들은 LPC(low pin count) 인터커넥트를 통해 프로세서(1710)에 결합할 수 있다. 도시된 실시예에서, 다양한 구성요소들은 임베디드 제어기(1735)를 통해 결합될 수 있다. 이러한 구성요소들은 (예를 들어, PS2 인터페이스를 통해 결합된) 키보드(1736), 팬(1737), 및 열 센서(1739)를 포함할 수 있다. 일부 실시예들에서, 터치 패드(1730)은 또한 PS2 인터페이스를 통해 EC(1735)에 결합할 수 있다. 또한, 2003년 10월 2일자 TCG(Trusted Computing Group) TPM(trusted platform module) 사양 버전 1.2에 따른 TPM(1738)과 같은 보안 프로세서 역시 상기 LPC 인터커넥트를 통해 프로세서(1710)에 결합될 수 있다. 그러나, 본 발명의 범위가 이와 관련해서 제한되지 않으며, 또한 보안 정보의 저장 및 보안 프로세싱이 보안 코프로세서에서의 SRAM(static random access memory) 등의 다른 보호 위치에 있을 수 있거나, 혹은 SE(secure enclave) 프로세서 모드에 의해 보호될 때에만 암호 해독되는 암호화 데이터 블롭들(blobs)로서 존재할 수 있음을 이해한다.
특정 구현예에서, 주변 포트들은 (풀 사이즈, 미니 또는 마이크로 등의 상이한 폼 팩터를 갖을 수 있는) HDMI(high definition media interface) 커넥터; USB 개정안 3.0 사양(2008년 11월)에 따른 풀-사이즈 외부 포트들과 같은 하나 이상의 USB 포트들 - 이들 중 적어도 하나는 시스템이 접속된 스탠바이 상태에 있고 AC 벽면 전원에 플러그인 되면 (스마트폰 등의) USB 디바이스의 충전을 위해 전력 공급을 받음 - 를 포함할 수 있다. 또한, 하나 이상의 ThunderboltTM 포트들이 제공될 수 있다. 다른 포트들은 풀 사이즈 SD-XC 카드 리더 및/또는 WWAN를 위한 SIM 카드 리더(예를 들어, 8핀 카드 리더)와 같은 외부 액세스 가능한 카드 리더를 포함할 수 있다. 오디오에 있어서, 스테레오 사운드 및 마이크로폰 능력(예를 들어, 복합 기능)을 가진 3.5mm 잭이 존재할 수 있으며, 동시에 잭 검출을 지원할 수 있다(예를 들어, 덮개 내 마이크로폰의 이용만을 지원하는 헤드폰 또는 케이블 내에 마이크로폰을 갖는 헤드폰). 일부 구현예들에서, 상기 잭은 스테레오 헤드폰과 스테레오 마이크로폰 입력 사이에서의 재작업을 가능하게 할 수 있다. 또한, 파워 잭은 AC 브릭으로의 결합을 위해 제공될 수 있다.
시스템(1700)은 무선을 포함한 다양한 방식으로 외부 디바이스들과 통신할 수 있다. 도 17에 도시된 실시예에서, 특정한 무선 통신 프로토콜을 위해 구성된 무선 장치에 각각이 대응할 수 있는 다수의 무선 모듈들이 존재한다. 니어 필드(a near field)와 같은 단거리에서의 무선 통신을 위한 하나의 방식은, 일 실시예에서 SMBus를 거쳐 프로세서(1710)와 통신할 수 있는 NFC 유닛(1745)을 통한 것일 수 있다. 이러한 NFC 유닛(1745)을 통해, 서로 근접해 있는 디바이스들이 통신할 수 있음을 유의한다. 예컨대, 서로 근접 관계에 있는 2개의 디바이스들을 적응시키는 것과, 식별 정보, 지불 정보, 이미지 데이터와 같은 데이터, 등의 정보를 전송 가능하게 하는 것을 통해, 사용자는 그 사용자의 스마트폰 등의 다른 (예를 들어) 휴대용 디바이스와 시스템(1700)이 통신할 수 있게 한다. 무선 전력 전송 역시 NFC 시스템을 이용하여 수행될 수 있다.
여기서 설명되는 NFC 유닛을 이용하는 경우, 사용자들은 이러한 디바이스들 중 하나 이상의 코일들 사이의 결합을 이용함으로써 (NFC 및 무선 전력 전송(WPT)과 같은) 니어 필드 결합 기능들을 위해 디바이스들을 사이드-바이-사이드로 배치하며 사이드-투-사이드로 맞부딪히게 할 수 있다. 보다 구체적으로, 실시예들은 코일들의 보다 양호한 결합을 제공하기 위해 전략적으로 성형되고 배치된 페라이트 물질들을 디바이스들에 제공한다. 각각의 코일은 그와 연관된 인덕턴스를 가지며, 이 인덕턴스는 시스템에 대한 공통의 공진 주파수를 가능하게 하기 위해 시스템의 저항성, 용량성, 및 다른 특징들과 연계하여 선택될 수 있다.
도 17에서 더욱 알 수 있는 바와 같이, 추가적인 무선 유닛들은 WLAN 유닛(1750) 및 블루투스 유닛(1752)를 포함한 다른 단거리 무선 엔진들을 포함할 수 있다. WLAN 유닛(1750)을 이용하는 경우, 주어진 IEEE 802.11 표준에 따른 와이파이 통신이 실현될 수 있는 반면에, 블루투스 유닛(1752)을 거쳐서 블루투스 프로토콜을 통한 단거리 통신이 일어날 수 있다. 이들 유닛들은, 예를 들어 USB 링크 또는 UART(universal asynchronous receiver transmitter) 링크를 통해 프로세서와 통신할 수 있다. 또는, 이들 유닛들은 예를 들어 (2007년 1월 17일 공개된) PCI ExpressTM Specification Base Specification 버전 3.0에 따른 PCIe 프로토콜, 또는 SDIO(serial data input/output) 표준과 같은 다른 프로토콜에 따라 인터커넥트를 통해 프로세서(1710)에 결합할 수 있다. 물론, 하나 이상의 애드인(add-in) 카드들 상에서 구성될 수 있는 이러한 주변 디바이스들 사이의 실제 물리적 접속은 마더보드에 구성된 NGFF 커넥터들에 의한 것일 수 있다.
또한, 예를 들어 셀룰러 또는 다른 무선 광역 프로토콜에 따른 무선 광역 통신들은, SIM(Subscriber Identity Module)(1757)에 차례로 결합할 수 있는 WWAN 유닛(1756)을 통해 일어날 수 있다. 또한, 위치 정보의 수신 및 사용을 가능하게 하기 위해, GPS 모듈(1755) 또한 존재할 수 있다. 도 17에 도시된 실시예에서, WWAN 유닛(1756) 및 카메라 모듈(1754)과 같은 통합된 캡처 디바이스가 USB 2.0 또는 3.0 링크와 같은 소정의 USB 프로토콜, 혹은 UART 또는 I2C 프로토콜을 통해 통신할 수 있음을 유의한다. 또한, 이들 유닛들의 실제 물리적 접속은 마더보드 상에 구성된 NGFF 커넥터에 대한 NGFF 애드인 카드의 적응화를 통한 것일 수 있다.
특정 실시예에서, 무선 기능은 예컨대 윈도우즈 8 CS를 지원하는 와이파이 802.11ac 솔루션(예를 들어, IEEE 802.11abgn과 역방향 호환 가능한 애드인 카드)에 의해 모듈식으로 제공될 수 있다. 이 카드는 (예를 들어, NGFF 어댑터를 거쳐) 내부 슬롯 내에서 구성될 수 있다. 추가적인 모듈은 블루투스 능력(예를 들어, 역방향 호환성을 가진 블루투스 4.0)뿐만 아니라 인텔 무선 디스플레이 기능을 제공할 수 있다. 또한, NFC 지원은 별도의 디바이스 또는 다중 기능 디바이스를 통해 제공될 수 있으며, 또한 예를 들어 용이한 액세스를 위해 섀시의 앞면 우측부에 배치될 수 있다. 더욱 추가적인 모듈은 3G/4G/LTE 및 GPS에 대한 지원을 제공할 수 있는 WWAN 디바이스일 수 있다. 이 모듈은 내부(예를 들어, NGFF) 슬롯 내에서 구현될 수 있다. 통합된 안테나 지원이 와이파이, 블루투스, WWAN, NFC 및 GPS를 위해 제공될 수 있어, 와이파이로부터 무선 기가비트 사양(2010년 7월)에 따른 WWAN 무선 장치의 무선 기가바이트(WiGig)로의 또한 그 반대로의 심리스(seamless) 변환을 가능하게 한다.
상술한 바와 같이, 통합된 카메라는 덮개 내에 포함될 수 있다. 일례로서, 이 카메라는 예를 들어 적어도 2.0 메가픽셀(MP)의 해상도 및 6.0MP 이상으로 확장되는 해상도를 가진 고해상도 카메라일 수 있다.
오디오 입력 및 출력을 제공하기 위해, 오디오 프로세서는 고선명 오디오(HDA; high definition audio) 링크를 거쳐 프로세서(1710)에 결합할 수 있는 디지털 신호 프로세서(DSP)(1760)를 통해 구현될 수 있다. 마찬가지로, DSP(1760)는 섀시 내에서 구현될 수 있는 출력 스피커(1763)에 차례로 결합될 수 있는 통합된 부호기/복호기(CODEC) 및 증폭기(1762)와 통신할 수 있다. 마찬가지로, 증폭기 및 CODEC(1762)은 마이크로폰(1765)으로부터 오디오 입력을 수신하도록 결합될 수 있고, 상기 마이크로폰은 일 실시예에서 고품질 오디오 입력을 제공하는 듀얼 어레이 마이크로폰(예를 들어, 디지털 마이크로폰)을 통해 구현될 수 있어 시스템 내에서 다양한 동작들의 음성-작동형 제어(voice-activated control)를 가능하게 한다. 또한, 오디오 출력이 증폭기/CODEC(1762)로부터 헤드폰 잭(1764)으로 제공될 수 있음을 유의한다. 도 17의 실시예에 있어서 이 특정 구성요소들로 도시되어 있지만, 이와 관련하여 본 발명의 범위가 제한되지 않음을 이해한다.
특정 실시예에서, 디지털 오디오 코덱 및 증폭기는 스테레오 헤드폰 잭, 스테레오 마이크로폰 잭, 내부 마이크로폰 어레이 및 스테레오 스피커들을 구동할 수 있다. 상이한 구현예들에서, 코덱은 오디오 DSP에 통합되거나, HD 오디오 경로를 통해 주변 제어기 허브(PCH)에 결합될 수 있다. 일부 구현예들에서, 통합된 스테레오 스피커들에 부가하여, 하나 이상의 저음 스피커들이 제공될 수 있으며, 스피커 솔루션은 DTS 오디오를 지원할 수 있다.
일부 실시예들에서, 프로세서(1710)는 FIVR(fully integrated voltage regulator)들로 불리는, 프로세서 다이 내부에 통합되는 다수의 내부 전압 조정기들 및 외부 전압 조정기에 의해 전력 공급될 수 있다. 프로세서에서의 다수의 FIVR들의 사용은 별개의 전력 플레인들(separate power planes)로 구성요소들을 그룹화할 수 있게 하여, 전력이 조정되며 FIVR에 의해 그룹 내 해당 구성요소들에게만 공급된다. 전력 관리 중에, 프로세서가 소정의 저전력 상태로 놓이게 될 때에 하나의 FIVR의 주어진 전력 플레인은 전력이 줄어들거나 전력이 차단될 수 있는 반면에, 다른 FIVR의 다른 전력 플레인은 활성 상태를 유지하거나 완전히 전력이 공급된 상태를 유지한다.
일 실시예에서, 일부 딥 슬립(deep sleep) 상태들 동안에, 프로세서와 PCH 사이의 인터페이스, 외부 VR과의 인터페이스, 및 EC(1735)와의 인터페이스 등의, 여러 개의 I/O 신호들을 위한 I/O 핀들에 전력을 공급하기 위해 지속 전력 플레인(sustain power plane)이 이용될 수 있다. 또한, 이 지속 전력 플레인은 슬립 상태 동안 프로세서 콘텍스트가 저장되는 온-보드 SRAM 또는 다른 캐시 메모리를 지원하는 온-다이 전압 조정기에 전력을 공급한다. 또한, 지속 전력 플레인은 다양한 기동 소스 신호들을 모니터링 및 프로세싱하는 프로세서의 기동 로직에 전력을 공급하는 데 사용된다.
전력 관리시에, 프로세서가 소정의 딥 슬립 상태들에 진입하면 다른 전력 플레인들은 전력이 줄어들거나 전력이 차단되는 반면에, 지속 전력 플레인은 상기 언급된 구성요소들을 지원하기 위해 전력이 공급된 상태를 유지한다. 그러나, 이는 그 구성요소들이 필요로 되지 않을 때에 불필요한 전력 소비 또는 낭비를 초래할 수 있다. 이 때문에, 실시예들은 전용의 전력 플레인을 이용하여 프로세서 콘텍스트를 유지하기 위해 접속된 스탠바이 슬립 상태를 제공할 수 있다. 일 실시예에서, 접속된 스탠바이 슬립 상태는 프로세서와 함께 패키지 내에 그 자체가 존재할 수 있는 PCH의 리소스들을 이용하여 프로세서 기상을 가능하게 한다. 일 실시예에서, 접속된 스탠바이 슬립 상태는 프로세서가 기동할 때까지 PCH 내 프로세서 아키텍처 기능들을 유지하는 것을 용이함으로써, 이는 모든 클럭들을 턴오프하는 것을 포함해서, 딥 슬립 상태들 동안에 이전에 전력 공급된 상태로 남아 있었던 불필요한 프로세서 구성요소들 모두를 턴오프하는 것을 가능하게 할 수 있다. 일 실시예에서 PCH는 접속된 스탠바이 상태 동안에 시스템을 제어하기 위해 타임 스탬프 카운터(TSC) 및 접속된 스탠바이 로직을 포함한다. 유지 전력 플레인에서의 통합된 전압 조정기도 역시 PCH 상에 존재할 수 있다.
일 실시예에서, 접속된 스탠바이 상태 동안에, 통합된 전압 조정기는, 프로세서가 딥 슬립 상태들 및 접속된 스탠바이 상태에 진입할 때에 임계적 상태 변수들과 같은 프로세서 콘텍스트가 저장되는 전용 캐시 메모리를 지원하기 위해 전력 공급된 상태로 남아 있는 전용 전력 플레인으로서 기능할 수 있다. 그러한 임계적 상태는 구조적, 마이크로 구조적, 디버그 상태와 관련된 상태 변수들 및/또는 프로세서와 연관된 유사한 상태 변수들을 포함할 수 있다.
EC(1735)로부터의 기동 소스 신호들은 접속된 스탠바이 상태 동안에 프로세서 대신에 PCH로 전송될 수 있어서, PCH는 프로세서 대신에 기동 프로세싱을 관리할 수 있다. 또한, 프로세서의 구조적 기능들을 유지하는 것을 용이하게 하기 위해 TSC는 PCH 내에서 유지된다. 도 17의 실시예에서 이들 특정 구성요소들로 도시되어 있지만, 이와 관련하여 본 발명의 범위가 한정되지 않음을 이해한다.
프로세서에서의 전력 제어는 개선된 전력 절감을 가져올 수 있다. 예컨대, 전력이 코어들 사이에 동적으로 할당될 수 있고, 개개의 코어들이 주파수/전압을 변경할 수 있으며, 다수의 딥 저전력 상태들이 매우 낮은 전력 소비를 가능하게 하도록 제공될 수 있다. 또한, 코어들 또는 독립된 코어 부분들의 동적 제어는, 구성요소들이 사용되지 않을 때에 이들을 전원 차단함으로써 저감된 전력 소비를 제공할 수 있다.
일부 구현예들은 플랫폼 전력을 제어하기 위해 특정한 전력 관리 IC(PMIC; power management IC)를 제공할 수 있다. 이 솔루션을 이용하여, 시스템은 Win8 접속된 스탠바이 상태에 있을 때와 같은 소정의 스탠바이 상태에 있을 때에 연장된 지속 기간(예를 들어, 16시간) 동안 매우 낮은(예를 들어, 5% 미만의) 배터리 저하를 볼 수 있다. Win8 유휴 상태에서, 예를 들어 9시간을 초과하는 배터리 수명이 (예를 들어, 150니츠에서) 실현될 수 있다. 비디오 재생에 대해서는, 긴 배터리 수명이 실현될 수 있으며, 예컨대 최소 6시간 동안 풀 HD 비디오 재생이 일어날 수 있다. 플랫폼은 일 구현예에서 SSD를 이용하는 Win8 CS에 대해서는 예를 들어 35와트 시간(Whr), 및 (예를 들어) RST 캐시 구성을 가진 HDD를 이용하는 Win8 CS에 대해서는 40-44Whr의 에너지 용량을 가질 수 있다.
특정 구현예는, 대략 25W TDP 설계 포인트까지의 구성 가능 CPU 열 설계 전력(TDP; thermal design power)와 함께, 15W의 공칭 CPU TDP에 대한 지원을 제공할 수 있다. 플랫폼은 상술한 열 특성들로 인해 최소한의 환기구(vents)를 포함할 수 있다. 또한, 플랫폼은 (뜨거운 공기도 사용자에게 불어오지 않는다는 점에서) 필로우 친화적(pillow-friendly)이다. 상이한 최대 온도 포인트들은 섀시 물질에 따라 실현될 수 있다. (적어도 플라스틱의 베이스 부분 또는 덮개를 갖는) 플라스틱 섀시의 일 구현예에서, 최대 동작 온도는 52℃일 수 있다. 또한, 금속 섀시의 구현예에 있어서, 최대 동작 온도는 46℃일 수 있다.
상이한 구현예들에서, TPM과 같은 보안 모듈은 프로세서로 통합되거나 혹은 TPM 2.0 디바이스와 같은 별도의 디바이스일 수 있다. 플랫폼 신뢰 기술(PTT; Platform Trust Technology)이라고도 불리는 통합된 보안 모듈에 의하면, BIOS/펌웨어는, 보안 키보드 및 디스플레이와 같은 보안 사용자 인터페이스들과 함께, 보안 인스트럭션들, 보안 부트, Intel® Anti-Theft Technology, Intel® Identity Protection Technology, Intel® Tursted Execution Technology(TXT) 및 Intel® Manageability Engine Technology를 포함하는 소정의 보안 특징들을 위해 소정의 하드웨어 특징들을 노출할 수 있다.
다수의 예들이 이하에 제시된다. 이들이 순전히 예시적임을 유의한다. 또한, 일부는 장치, 방법, 컴퓨터-판독가능 매체, 수단 등을 가리킨다. 그러나, 예들 중 임의의 것은 제공되거나 교환될 수 있다. 예컨대, 도시예들 중 하나는 실행시에 소정의 항목들을 수행하기 위해 코드를 갖는 컴퓨터 판독 가능 매체를 제공한다. 그 항목들을 수행하기 위해 방법의 항목 또는 장치에서의 로직과 유사하게 그 항목들이 보여질 수 있다.
일례에서, 디바이스 구성을 위한 장치는: 요소에 결합되는 인터페이스 로직과; 요소와 연관되는 구성 콘텍스트로의 참조를 보유하는 구성 저장 장치와; 구성 저장 장치 및 제 2 인터페이스에 결합된 구성 제어 로직을 포함하고, 구성 제어 로직은, 구성 저장 장치에 보유되는 구성 콘텍스트로의 참조에 기초하여, 전력 이벤트의 응답으로, 요소와 연관되는 구성 콘텍스트의 적어도 일부를 구성한다.
일례에서, 인터페이스 로직은 저전력 PHY 사양, MIPI 사양, PCIe 사양 및 고성능 및 고전력 PHY 사양으로 이루어진 그룹에서 선택된 PHY 사양에 기초한 물리 계층 로직을 포함한다.
일례에서, 요소는 복수의 PCIe 사양 정의 프로토콜 통신들을 인지할 수 있는 PCIe 디바이스를 포함한다.
일례에서, 구성 콘텍스트는 요소를 위한 복수의 구성 공간 파라미터들에 대한 상태를 포함한다.
일례에서, 구성 콘텍스트로의 참조를 보유하는 구성 저장 장치는 요소와 연관되는 메모리 맵핑 구성 공간으로의 어드레스 참조를 보유하기 위한 어드레스 레지스터를 포함한다.
일례에서, 장치는 루트 제어기를 포함하고, 구성 저장 장치는 구성 콘텍스트로의 참조 및 구성 콘텍스트를 보유하기 위한 캐시 저장 장치를 포함한다.
일례에서, 캐시 저장 장치는 루트 제어기에 결합되도록 프로세서에 포함되는 하나 이상의 프로세서 캐시들과 코히런트하다.
일례에서, 캐시 저장 장치는 루트 제어기에 결합되도록 프로세서에 포함되는 하나 이상의 프로세서 캐시들과 코히런트하지 않다.
일례에서, 캐시 저장 장치는 라이트-스루 정책을 구현한다.
일례에서, 구성 제어 로직은 요소를 구성하기 위해 호스트 디바이스로부터의 중재가 추가적으로 없더라도 전력 이벤트에 응답하여 구성 콘텍스트의 적어도 일부를 구성한다.
일례에서, 전력 이벤트는 요소가 활성 전력 상태에 진입했다는 표시를 포함한다.
일례에서, 전력 이벤트는 요소가 링크 트레이닝을 완료했다는 표시를 포함한다.
일례에서, 인터페이스 로직, 구성 저장 장치, 및 구성 제어 로직은 음성 통신이 가능한 무선 인터페이스 로직에 결합된 시스템 온 칩(SoC) 상에 집적된다.
일례에서, 인터페이스 로직, 구성 저장 장치, 및 구성 제어 로직은 비-모바일 단말 시스템에서 결합되는 집적 회로 상에 집적된다.
일례에서, 디바이스 구성을 위한 장치는: 호스트 프로세싱 디바이스와; 저장 장치와; 집적 디바이스에 대한 구성 데이터를 저장 장치에 기록하고 저장 장치로의 구성 데이터의 기록에 후속해서 저전력 상태에 진입하는 집적 디바이스와; 호스트 프로세싱 디바이스, 집적 디바이스, 및 저장 장치에 결합된 제어기를 포함하고, 제어기는, 집적 디바이스의 활성 전력 상태로의 진입의 개시에 응답하여, 저장 장치에 보유되는 구성 데이터에 적어도 부분적으로 기초해, 호스트 프로세싱 디바이스의 직접적인 중재 없이 집적 디바이스를 구성한다.
일례에서, 저전력 상태는 슬립 전력 상태를 포함한다.
일례에서, 구성 데이터는 집적 디바이스 내 구성 레지스터들로부터의 데이터를 포함한다.
일례에서, 구성 레지스터들은 메모리에서의 구성 공간에 맵핑되고, 집적 디바이스 내 특정 구성 레지스터로의 기록은 그 특정 구성 레지스터와 연관되는 메모리에서의 구성 공간 내 메모리 어드레스를 처리하기 위한 것이다.
일례에서, 디바이스 구성을 위한 장치는: 호스트 프로세싱 디바이스에 결합하기 위한 제 1 포트와; 구성 레지스터를 포함하는 요소에 다운스트림을 결합시키기 위한 제 2 포트와; 구성 레지스터를 위해 구성 값을 보유하는 캐시와; 메모리 어드레스를 구성 레지스터와 연관시키고, 제 1 구성 모드에서 호스트 프로세싱 디바이스로부터 메모리 어드레스로의 메모리 액세스를 구성 레지스터를 위한 구성 요청으로 변환할 수 있는 제어기를 포함하고, 제어기는 제 2 구성 모드에서 호스트 프로세싱 디바이스로부터 메모리 어드레스로의 메모리 액세스 없이 구성 레지스터에 대한 구성 값을 구성 레지스터에 추가로 제공할 수 있다.
일례에서, 제 1 구성 모드는 ECAM(enhanced configuration access mechanism) 모드를 포함하고, 제 2 구성 모드는 FCAM(fast configuration access mechansim) 모드를 포함한다.
일례에서, 제 2 구성 모드에서 호스트 프로세싱 디바이스로부터 메모리 어드레스로의 메모리 액세스 없이 구성 레지스터에 대한 구성 값을 구성 레지스터에 추가로 제공할 수 있는 상기 제어기는, 호스트 프로세싱 디바이스로부터의 메모리 액세스에 포함되는 구성 값을 캐시에서 캐싱하고; 메모리 액세스에 대한 완료를 호스트 프로세싱 디바이스에 제공하고; 캐시로부터의 구성 값을 요소 내 구성 레지스터에 제공하는 제어기를 포함한다.
일례에서, 디바이스 구성을 위한 방법은: 고속 구성 호환성을 나타내는 디바이스로부터 특정 메시지를 수신하는 단계와; 특정 메시지 수신에 응답하여 디바이스를 위한 구성 어드레스 공간으로의 참조를 이용해서 구성 레지스터를 업데이트하는 단계와; 디바이스를 구성하는 단계 - 디바이스 구성 단계는 구성 어드레스 공간으로의 제 1 메모리 기록을 개시하는 단계를 포함함 - 와; 구성 어드레스 공간에 직교하는 루트 컴플렉스 메모리 공간으로의 제 2 메모리 기록을 개시하는 단계를 포함한다.
일례에서, 특정 메시지는 클린 베이스 어드레스 레지스터 메시지를 포함한다.
일례에서, 특정 메시지는 DRS(device readiness status) 메시지를 포함한다.
일례에서, 고속 디바이스 구성을 위한 장치는: 하나 이상의 클린 구성 레지스터들을 포함하는 클린 블록 영역으로의 합병 및 기록 결합을 지원할 수 있는 구성 로직과; 업스트림 디바이스에 결합하기 위한 포트와; 포트와 연관된 프로토콜 로직을 포함하고, 프로토콜 로직은 고속 구성 능력을 표시하는 특정 메시지를 생성한다.
일례에서, 특정 메시지는 클린 베이스 어드레스 레지스터 메시지를 포함한다.
일례에서, 구성 로직은 추가로 레거시 블록의 기록을 지원한다.
일례에서, 레거시 블록으로의 기록은 데이터가 인터리빙된 판독/기록 바이트 셀렉트들을 포함하고, 증가하는 어드레스 순서로 수행된다.
일례에서, 컴퓨터 판독가능 매체는, 실행시에, 제 1 디바이스로 하여금: 제 2 디바이스의 고속 구성 능력을 나타내는 특정 메시지를 수신하고; 제 3 디바이스로부터 기록 메시지를 수신 - 상기 기록 메시지는 제 1 디바이스의 구성 공간과 연관되는 어드레스를 참조함 - 하고; 제 1 디바이스의 구성 공간으로의 기록을 개시하고; 제 1 디바이스의 구성 공간으로의 기록을 위해 제 1 디바이스로부터의 응답을 수신하지 않고서 제 2 디바이스로의 기록 메시지에 대한 완료를 개시하도록 하는 코드를 갖는다.
일례에서, 엔드포인트 디바이스에서의 제 1 디바이스 및 제 2 디바이스는 호스트 프로세싱 디바이스이다.
일례에서, 제 1, 제 2, 및 제 3 디바이스는 코드를 보유하는 저장 장치와 함께 단일 집적 회로 상에 포함된다.
제한된 수의 실시예들과 관련해서 본 발명을 설명하였지만, 당업자는 그로부터의 수많은 변형 및 변경을 이해할 것이다. 첨부된 청구범위는 이러한 모든 변형 및 변경을 본 발명의 진정한 정신 및 범위 내에 들어가는 것으로서 포함하도록 의도된다.
설계는 생성에서부터 시뮬레이션 내지 제조까지의 다양한 단계들을 거칠 수 있다. 설계를 표현하는 데이터는 다수의 방식으로 설계를 표현할 수 있다. 우선, 시뮬레이션에서 유용함에 따라, 하드웨어는 하드웨어 기술 언어 또는 다른 기능적 기술 언어를 이용하여 표현될 수 있다. 또한, 로직 및/또는 트랜지스터 게이트들을 가진 회로 레벨 모델은 설계 프로세스의 일부 단계들에서 생성될 수 있다. 또한, 대부분의 설계들은, 일부 단계에서, 하드웨어 모델에서의 다양한 디바이스들의 물리적 배치를 표현하는 데이터의 레벨에 도달한다. 종래의 반도체 제조 기술들이 사용되는 경우에, 하드웨어 모델을 표현하는 데이터는 집적 회로를 생성하는 데 사용되는 마스크들에 대한 상이한 마스크 계층들 상의 다양한 특징들의 존재 또는 부재를 특정하는 데이터일 수 있다. 이 설계의 임의의 표현에 있어서, 데이터는 임의의 형태의 기계 판독가능 매체에 저장될 수 있다.
여기서 사용되는 모듈은 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합을 가리킨다. 예로서, 모듈은 마이크로-제어기에 의해 실행되도록 구성된 코드를 저장하는 비일시적 매체와 연관된 마이크로-제어기와 같은 하드웨어를 포함한다. 따라서, 일 실시예에서, 모듈에 대한 언급은, 비일시적 매체 상에서 유지되는 코드를 인지 및/또는 실행하도록 특별히 구성된 하드웨어를 가리킨다. 또한, 다른 실시예에서, 모듈의 사용은 사전 결정된 동작들을 수행하기 위해 마이크로 제어기에 의해 실행되도록 특별히 구성된 코드를 포함하는 비일시적 매체를 가리킨다. 또한, 유추할 수 있는 바와 같이, 또 다른 실시예에서, (이 예에서의) 모듈의 용어는 마이크로 제어기 및 비일시적 매체의 조합을 가리킬 수 있다. 종종, 별개의 것으로 도시된 모듈의 경계들은 일반적으로 변하며 잠재적으로 중첩된다. 예컨대, 제 1 및 제 2 모듈은 잠재적으로는 몇몇의 독립된 하드웨어, 소프트웨어, 또는 펌웨어를 보유하면서, 하드웨어, 소프트웨어, 펌웨어, 또는 그 조합을 공유할 수 있다. 일 실시예에서, 모듈이라는 용어의 사용은 트랜지스터, 레지스터와 같은 하드웨어, 또는 프로그래밍가능 로직 디바이스들과 같은 다른 하드웨어를 포함한다.
일 실시예에서, '~하도록 구성된'이라는 구절의 사용은, 지정되거나 결정된 작업을 수행하기 위해, 장치, 하드웨어, 로직, 또는 요소를 구성, 조립, 제조, 판매를 위한 제공, 수입 및/또는 설계하는 것을 가리킨다. 이 예에서, 동작하고 있지 않은 장치 또는 그 요소는, 상기 지정된 작업을 수행하도록 설계, 결합, 및/또는 인터커넥트되어 있으면, 지정된 작업을 여전히 수행'하도록 구성된다'. 순전히 설명을 위한 예로서, 로직 게이트는 동작 동안에 0 또는 1을 제공할 수 있다. 그러나, 클록에 인에이블 신호를 제공'하도록 구성된' 로직 게이트는 1 또는 0을 제공할 수 있는 모든 잠재적인 로직 게이트를 포함하는 것은 아니다. 대신에, 로직 게이트는, 동작 동안에 1 또는 0이 클록을 인에이블하는 일부 방식으로 결합된 것이다. '~하도록 구성된'이라는 용어의 사용이 동작을 요구하지는 않지만, 대신에 장치, 하드웨어, 및/또는 요소의 잠재적 상태(latent state)에 초점을 맞추고 있는 것이며, 잠재적 상태에서, 장치, 하드웨어, 및/또는 요소가 동작하고 있을 때에 특정한 작업을 장치, 하드웨어, 및/또는 요소가 수행하도록 설계되어 있음을 다시 한번 유의한다.
또한, '~할 수 있는' 및/또는 '~하도록 동작 가능한'이라는 구절의 사용은, 일 실시예에서, 특정한 방식으로 장치, 로직, 하드웨어 및/또는 요소의 사용을 가능하게 하는 이러한 방식으로 설계된 몇몇의 장치, 로직, 하드웨어 및/또는 요소를 가리킨다. ~할 수 있는 또는 ~하도록 동작 가능하다는 것의 사용이, 일 실시예에서, 장치, 로직, 하드웨어, 및/또는 요소의 잠재적 상태를 가리키며, 장치, 로직, 하드웨어, 및/또는 요소가 동작하고 있지 않지만 특정 방식으로 장치의 사용을 가능하게 하는 이러한 방식으로 설계됨을 상기와 같이 유의한다.
여기서 사용되는 값은 숫자, 상태, 로직 상태, 또는 이진 로직 상태의 임의의 공지된 표현을 포함한다. 종종, 로직 레벨들, 로직 값들, 또는 논리적 값들의 사용은 단순히 이진 로직 상태들을 표현하는 1 및 0을 지칭하기도 한다. 예컨대, 1은 하이 로직 레벨을 가리키고, 0은 로우 로직 레벨을 가리킨다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 저장 셀은, 단일의 로직 값 또는 다수의 로직 값들을 유지할 수 있다. 그러나, 컴퓨터 시스템에서의 값들에 대한 다른 표현들이 사용되어 왔었다. 예컨대, 십진수 10은 1010의 이진값 및 16진법 문자 A로서 표현될 수도 있다. 따라서, 값은 컴퓨터 시스템에 유지될 수 있는 정보에 대한 임의의 표현을 포함한다.
또한, 상태들은 값들 또는 값들의 일부에 의해 표현될 수 있다. 예로서, 논리적 1과 같은 제 1 값은 디폴트 또는 초기 상태를 표현할 수 있는 반면에, 논리적 0과 같은 제 2 값은 비-디폴트 상태를 표현할 수 있다. 또한, 리세트 및 세트의 용어들은, 일 실시예에서, 디폴트 및 업데이트된 값이나 상태를 각각 가리킨다. 예컨대, 디폴트 값은 잠재적으로 높은 논리적 값, 즉 리셋을 포함하는 반면에, 업데이트 값은 잠재적으로 낮은 논리적 값, 즉 세트를 포함한다. 임의의 수의 상태들을 표현하는 데 값들의 임의 조합이 이용될 수 있음을 유의한다.
상기한 방법, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예들은 프로세싱 요소에 의해 실행될 수 있는 기계 액세스 가능하거나, 기계 판독 가능하거나, 컴퓨터 액세스 가능하거나, 컴퓨터 판독가능한 매체 상에 저장된 인스트럭션 또는 코드를 통해 구현될 수 있다. 비일시적 기계 액세스 가능/판독 가능한 매체는 컴퓨터 또는 전자 시스템과 같은 기계에 의해 판독 가능한 형태로 정보를 제공하는(즉, 저장 및/또는 전송하는) 임의의 메커니즘을 포함한다. 예컨대, 비일시적 기계 액세스 가능 매체는 SRAM(static RAM) 또는 DRAM(dynamic RAM) 등의 RAM; ROM; 자기 또는 광학 저장 매체; 플래시 메모리 디바이스; 전기 저장 디바이스; 광학 저장 디바이스; 음향 저장 디바이스 등을 포함한다.
본 발명의 실시예들을 수행하기 위한 로직을 프로그래밍하는 데 사용되는 인스트럭션들은 DRAM, 캐시, 플래시 메모리, 또는 다른 저장 장치와 같은 시스템 내 메모리에 저장될 수 있다. 또한, 인스트럭션들은 네트워크를 통해서 또는 다른 컴퓨터 판독가능 매체들을 경유해서 배포될 수 있다. 따라서, 기계 판독가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장하거나 전송하기 위한 임의의 메커니즘을 포함할 수 있지만, 플로피 디스켓, 광학 디스크, 컴팩트 디스크, CD-ROM, 및 광자기 디스크, ROM, RAM, EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 자기 또는 광 카드, 플래시 메모리로 한정되지 않는다. 따라서, 컴퓨터 판독가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 전자적 인스트럭션들 또는 정보를 저장하거나 전송하는데 적합한 임의의 타입의 유형적 기계 판독가능 매체를 포함한다.
본 명세서 전체에 걸쳐 "일 실시예" 또는 "실시예"에 대한 언급은, 실시예와 관련해서 설명된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에 걸쳐 다수의 부분들에서의 "일 실시예에서" 또는 "실시예에서"라는 구절들의 출현은 반드시 동일한 실시예를 모두 가리키는 것은 아니다. 또한, 특정한 특징들, 구조들, 또는 특성들은 하나 이상의 실시예에서 임의의 적절한 방식으로 조합될 수 있다.
이전의 명세서에서, 특정한 실시예들을 참조해서 상세한 설명이 이루어졌다. 그러나, 첨부된 청구범위에 제시된 바와 같이, 본 발명의 보다 넓은 정신 및 범위로부터 벗어나지 않고서, 다양한 변경 및 변형이 이루어질 수 있음이 자명하다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미에서 간주되어야 한다. 또한, 실시예 및 다른 예시적인 언어의 사용은 반드시 동일한 실시예 또는 동일한 예를 가리키는 것은 아니지만, 잠재적으로 동일한 실시예를 가리킬 수 있을 뿐만 아니라, 상이한 실시예 및 별도의 실시예를 가리킬 수 있다.

Claims (30)

  1. 디바이스 구성을 위한 장치로서,
    루트 제어기를 포함하되, 상기 루트 제어기는
    요소에 결합되는 인터페이스 로직과,
    상기 요소와 연관되는 구성 콘텍스트(a configuration context)로의 참조를 보유하는 캐시 저장 장치와,
    상기 캐시 저장 장치 및 상기 인터페이스 로직에 결합된 구성 제어 로직을 포함하고,
    상기 구성 제어 로직은, 상기 요소에서의 전력 이벤트(a power event)에 응답하여, 상기 구성 콘텍스트를 사용하여 상기 요소를 구성하는
    장치.
  2. 제 1 항에 있어서,
    상기 인터페이스 로직은 저전력 PHY(physical layer) 사양, MIPI(mobile industry peripheral interface) 사양, PCIe(peripheral component interconnect express) 사양, 및 고성능 및 고전력 PHY 사양으로 이루어진 그룹에서 선택된 PHY 사양에 기초한 물리 계층 로직을 포함하는
    장치.
  3. 제 1 항에 있어서,
    상기 요소는 복수의 PCIe 사양 정의 프로토콜 통신들을 인지할 수 있는 PCIe 디바이스를 포함하는
    장치.
  4. 제 1 항에 있어서,
    상기 구성 콘텍스트는 상기 요소를 위한 복수의 구성 공간 파라미터들에 대한 상태를 포함하는
    장치.
  5. 삭제
  6. 삭제
  7. 제 1 항에 있어서,
    상기 캐시 저장 장치는 상기 루트 제어기에 결합되도록 프로세서에 포함되는 하나 이상의 프로세서 캐시들과 코히런트(coherent)한
    장치.
  8. 제 1 항에 있어서,
    상기 캐시 저장 장치는 상기 루트 제어기에 결합되도록 프로세서에 포함되는 하나 이상의 프로세서 캐시들과 코히런트하지 않는
    장치.
  9. 제 1 항에 있어서,
    상기 캐시 저장 장치는 라이트-스루 정책(a write-through policy)을 구현하는
    장치.
  10. 삭제
  11. 제 1 항에 있어서,
    상기 전력 이벤트는 상기 요소가 활성 전력 상태에 진입한다는 표시를 포함하는
    장치.
  12. 제 1 항에 있어서,
    상기 전력 이벤트는 상기 요소가 링크 트레이닝(link training)을 완료한다는 표시를 포함하는
    장치.
  13. 제 1 항에 있어서,
    상기 루트 제어기는 음성 통신이 가능한 무선 인터페이스 로직에 결합된 시스템 온 칩(SoC) 상에 집적되는
    장치.
  14. 제 1 항에 있어서,
    상기 루트 제어기는 비-모바일 단말 시스템에서 결합되는 집적 회로 상에 집적되는
    장치.
  15. 디바이스 구성을 위한 장치로서,
    호스트 프로세싱 디바이스와,
    저장 장치와,
    집적 디바이스에 대한 구성 데이터를 상기 저장 장치에 기록하고, 상기 저장 장치로의 상기 구성 데이터의 기록에 후속해서 저전력 상태에 진입하는 집적 디바이스와,
    상기 호스트 프로세싱 디바이스, 상기 집적 디바이스, 및 상기 저장 장치에 결합된 제어기를 포함하고,
    상기 제어기는, 상기 집적 디바이스의 활성 전력 상태로의 진입의 개시에 응답하여, 상기 저장 장치에 보유되는 상기 구성 데이터에 적어도 부분적으로 기초해, 상기 호스트 프로세싱 디바이스의 직접적인 중재(direct intervention) 없이 상기 집적 디바이스를 구성하는
    장치.
  16. 제 15 항에 있어서,
    상기 저전력 상태는 슬립 전력 상태(a sleep power state)를 포함하는
    장치.
  17. 제 15 항에 있어서,
    상기 구성 데이터는 상기 집적 디바이스 내 구성 레지스터들로부터의 데이터를 포함하는
    장치.
  18. 제 17 항에 있어서,
    상기 구성 레지스터들은 메모리 내 구성 공간에 맵핑되고,
    상기 집적 디바이스 내 특정 구성 레지스터로의 기록은 상기 특정 구성 레지스터와 연관되는 메모리에서의 구성 공간 내에서 메모리 어드레스를 어드레싱하기 위한 것인
    장치.
  19. 디바이스 구성을 위한 장치로서,
    호스트 프로세싱 디바이스에 결합하기 위한 제 1 포트와,
    구성 레지스터를 포함하는 요소에 다운스트림 결합하기 위한 제 2 포트와,
    상기 구성 레지스터에 대한 구성 값을 보유하는 캐시와,
    메모리 어드레스를 상기 구성 레지스터와 연관시키고, 제 1 구성 모드에서 상기 호스트 프로세싱 디바이스로부터 상기 메모리 어드레스로의 메모리 액세스를 상기 구성 레지스터에 대한 구성 요청으로 변환할 수 있는 제어기를 포함하고,
    상기 제어기는 제 2 구성 모드에서 상기 호스트 프로세싱 디바이스로부터 상기 메모리 어드레스로의 메모리 액세스 없이 상기 구성 레지스터에 대한 구성 값을 상기 구성 레지스터에 더 제공할 수 있는
    장치.
  20. 제 19 항에 있어서,
    상기 제 1 구성 모드는 ECAM(enhanced configuration access mechanism) 모드를 포함하고,
    상기 제 2 구성 모드는 FCAM(fast configuration access mechansim) 모드를 포함하는
    장치.
  21. 제 19 항에 있어서,
    상기 제 2 구성 모드에서 상기 호스트 프로세싱 디바이스로부터 상기 메모리 어드레스로의 메모리 액세스 없이 상기 구성 레지스터에 대한 구성 값을 상기 구성 레지스터에 더 제공할 수 있는 상기 제어기는,
    상기 호스트 프로세싱 디바이스로부터의 상기 메모리 액세스에 포함되는 상기 구성 값을 상기 캐시에 캐싱하고,
    상기 메모리 액세스에 대한 완료를 상기 호스트 프로세싱 디바이스에 제공하고,
    상기 캐시로부터의 상기 구성 값을 상기 요소 내 상기 구성 레지스터에 제공하는 제어기를 포함하는
    장치.
  22. 디바이스 구성을 위한 방법으로서,
    디바이스로부터 고속 구성 호환성(fast configuration compatibility)을 나타내는 특정 메시지를 수신하는 단계와,
    상기 특정 메시지 수신에 응답하여 상기 디바이스를 위한 구성 어드레스 공간으로의 참조를 이용해서 구성 레지스터를 업데이트하는 단계와,
    상기 디바이스를 구성하는 단계 - 상기 디바이스 구성 단계는 상기 구성 어드레스 공간으로의 제 1 메모리 기록을 개시하는 단계를 포함함 - 와,
    상기 구성 어드레스 공간에 직교하는 루트 컴플렉스 메모리 공간(a root complex memory space)으로의 제 2 메모리 기록을 개시하는 단계를 포함하는
    방법.
  23. 제 22 항에 있어서,
    상기 특정 메시지는 클린 베이스 어드레스 레지스터 메시지(a clean base address register message)를 포함하는
    방법.
  24. 제 23 항에 있어서,
    상기 특정 메시지는 DRS(device readiness status) 메시지를 포함하는
    방법.
  25. 고속 디바이스 구성을 위한 장치로서,
    하나 이상의 클린 구성 레지스터들을 포함하는 클린 블록 영역으로의 기록 결합 및 합병(write combining and merging)을 지원할 수 있는 구성 로직과,
    업스트림 디바이스에 결합하기 위한 포트와,
    상기 포트와 연관된 프로토콜 로직을 포함하고,
    상기 프로토콜 로직은 고속 구성 능력을 표시하는 특정 메시지를 생성하는
    장치.
  26. 제 25 항에 있어서,
    상기 특정 메시지는 클린 베이스 어드레스 레지스터 메시지를 포함하는
    장치.
  27. 제 25 항에 있어서,
    상기 구성 로직은 레거시 블록(a legacy block)의 기록을 더 지원하고,
    상기 레거시 블록으로의 기록은 데이터가 인터리빙된 판독/기록 바이트 셀렉트들(pead/write byte selects)을 포함하고, 증가하는 어드레스 순서로 수행되는
    장치.
  28. 코드를 가진 컴퓨터 판독가능 저장 매체로서,
    상기 코드는, 실행시에, 제 1 디바이스로 하여금,
    제 2 디바이스의 고속 구성 능력을 나타내는 특정 메시지를 수신하고,
    제 3 디바이스로부터 기록 메시지를 수신 - 상기 기록 메시지는 상기 제 1 디바이스의 구성 공간과 연관되는 어드레스를 참조함 - 하고,
    상기 제 1 디바이스의 상기 구성 공간으로의 기록을 개시하고,
    상기 제 1 디바이스의 상기 구성 공간으로의 기록을 위해 상기 제 1 디바이스로부터의 응답을 수신하지 않고서 상기 제 2 디바이스로의 상기 기록 메시지에 대한 완료를 개시하게 하는
    컴퓨터 판독가능 저장 매체.
  29. 제 28 항에 있어서,
    엔드포인트 디바이스에서의 상기 제 1 디바이스 및 상기 제 2 디바이스는 호스트 프로세싱 디바이스인
    컴퓨터 판독가능 저장 매체.
  30. 제 29 항에 있어서,
    상기 제 1 디바이스, 상기 제 2 디바이스 및 상기 제 3 디바이스는 상기 코드를 보유하는 저장 장치와 함께 단일 집적 회로 상에 포함되는
    컴퓨터 판독가능 저장 매체.
KR1020167015893A 2014-01-16 2014-01-16 고속 구성 메커니즘을 위한 장치, 방법, 및 시스템 KR101995623B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/011899 WO2015108522A1 (en) 2014-01-16 2014-01-16 An apparatus, method, and system for a fast configuration mechanism

Publications (2)

Publication Number Publication Date
KR20160085882A KR20160085882A (ko) 2016-07-18
KR101995623B1 true KR101995623B1 (ko) 2019-07-02

Family

ID=53543281

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167015893A KR101995623B1 (ko) 2014-01-16 2014-01-16 고속 구성 메커니즘을 위한 장치, 방법, 및 시스템

Country Status (8)

Country Link
US (1) US20160274923A1 (ko)
EP (1) EP3095041A4 (ko)
JP (1) JP6286551B2 (ko)
KR (1) KR101995623B1 (ko)
CN (1) CN105830053A (ko)
BR (1) BR112016012902A2 (ko)
DE (1) DE112014006183T5 (ko)
WO (1) WO2015108522A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102371557B1 (ko) * 2015-03-20 2022-03-07 삼성전자주식회사 호스트 장치, 그것과 복수의 장치들을 갖는 호스트 시스템 및 그것의 인터페이스 링크 레이어 구성 방법
GB201516127D0 (en) * 2015-09-11 2015-10-28 Red Lion 49 Ltd Mixing digital audio
US9760513B2 (en) * 2015-09-22 2017-09-12 Cisco Technology, Inc. Low latency efficient sharing of resources in multi-server ecosystems
US9984021B1 (en) * 2015-09-28 2018-05-29 Amazon Technologies, Inc. Location-aware self-configuration of a peripheral device
CN105843767A (zh) * 2016-03-24 2016-08-10 山东超越数控电子有限公司 一种pci总线千兆网络实现方法
JP7163002B2 (ja) * 2016-05-25 2022-10-31 キヤノン株式会社 プロセッサに接続されるデバイスから通知される復帰時間に応じてプロセッサの省電力のレベルを決定する情報処理装置及びプロセッサの省電力方法
US9946325B2 (en) 2016-06-30 2018-04-17 Intel IP Corporation Interprocessor power state transitions
US10156877B2 (en) 2016-10-01 2018-12-18 Intel Corporation Enhanced power management for support of priority system events
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
CN110121703B (zh) * 2016-12-28 2023-08-01 英特尔公司 用于向量通信的系统和方法
US11853244B2 (en) * 2017-01-26 2023-12-26 Wisconsin Alumni Research Foundation Reconfigurable computer accelerator providing stream processor and dataflow processor
US10795820B2 (en) * 2017-02-08 2020-10-06 Arm Limited Read transaction tracker lifetimes in a coherent interconnect system
US20190095554A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Root complex integrated endpoint emulation of a discreet pcie endpoint
US11263143B2 (en) * 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
CN107656895B (zh) * 2017-10-27 2023-07-28 上海力诺通信科技有限公司 一种1u标准高度的正交平台高密度计算架构
US10761983B2 (en) * 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
KR102428450B1 (ko) * 2017-12-21 2022-08-01 삼성전자주식회사 호스트 컨트롤러, 보안 요소 및 직렬 주변기기 인터페이스 통신 시스템
US10545773B2 (en) 2018-05-23 2020-01-28 Intel Corporation System, method, and apparatus for DVSEC for efficient peripheral management
KR102555511B1 (ko) * 2018-11-01 2023-07-14 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11151075B2 (en) 2018-12-14 2021-10-19 Ati Technologies Ulc Data communications with enhanced speed mode
CN110297818B (zh) * 2019-06-26 2022-03-01 杭州数梦工场科技有限公司 构建数据仓库的方法及装置
CN111176408B (zh) * 2019-12-06 2021-07-16 瑞芯微电子股份有限公司 一种SoC的低功耗处理方法和装置
KR20210073225A (ko) * 2019-12-10 2021-06-18 삼성전자주식회사 다수 개의 집적 회로 사이의 인터페이스를 제어하기 위한 전자 장치 및 그의 동작 방법
CN111240626A (zh) * 2020-01-09 2020-06-05 中瓴智行(成都)科技有限公司 一种基于Hypervisor智能座舱操作系统双屏互动的方法和系统
US11443713B2 (en) * 2020-01-30 2022-09-13 Apple Inc. Billboard for context information sharing
CN114003392B (zh) * 2021-12-28 2022-04-22 苏州浪潮智能科技有限公司 一种数据加速计算方法及相关装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110296255A1 (en) * 2010-05-25 2011-12-01 Watkins John E Input/output device including a mechanism for error handling in multiple processor and multi-function systems
JP2012108677A (ja) * 2010-11-16 2012-06-07 Canon Inc データ転送装置及びその制御方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647434B1 (en) * 1999-12-28 2003-11-11 Dell Usa, L.P. Multifunction device with register space for individually enabling or disabling a function of plurality of functions in response to function configuration
US7603516B2 (en) * 2000-12-15 2009-10-13 Stmicroelectronics Nv Disk controller providing for the auto-transfer of host-requested-data from a cache memory within a disk memory system
WO2003019394A1 (en) * 2001-08-24 2003-03-06 Intel Corporation A general input/output architecture, protocol and related methods to support legacy interrupts
US7752361B2 (en) * 2002-06-28 2010-07-06 Brocade Communications Systems, Inc. Apparatus and method for data migration in a storage processing device
US8285907B2 (en) * 2004-12-10 2012-10-09 Intel Corporation Packet processing in switched fabric networks
US7613876B2 (en) * 2006-06-08 2009-11-03 Bitmicro Networks, Inc. Hybrid multi-tiered caching storage system
WO2007146845A2 (en) * 2006-06-08 2007-12-21 Bitmicro Networks, Inc. Configurable and scalable hybrid multi-tiered caching storage system
JP2010211351A (ja) * 2009-03-09 2010-09-24 Ricoh Co Ltd 半導体集積回路、省電力制御方法、省電力制御プログラム及び記録媒体
JP5731108B2 (ja) * 2009-07-03 2015-06-10 日本電気株式会社 中継手段、中継システム、中継方法およびプログラム
JP5370591B2 (ja) * 2010-09-01 2013-12-18 富士通株式会社 システムおよび障害処理方法
JP5915086B2 (ja) * 2011-10-31 2016-05-11 富士通株式会社 切替制御装置、切替制御方法、情報処理装置および切替制御プログラム
US9760661B2 (en) * 2012-04-26 2017-09-12 Hewlett-Packard Development Company, L.P. Providing virtual optical disk drive
US8880747B2 (en) * 2012-05-15 2014-11-04 Dell Products, L.P. Endpoint device discovery system
US8446903B1 (en) * 2012-05-22 2013-05-21 Intel Corporation Providing a load/store communication protocol with a low power physical unit
US20140119463A1 (en) * 2012-10-29 2014-05-01 Texas Instruments Incorporated Scalable Multifunction Serial Link Interface
US10129782B2 (en) * 2015-01-30 2018-11-13 Samsung Electronics Co., Ltd. Methods and apparatus for CSI measurement configuration and reporting on unlicensed spectrum

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110296255A1 (en) * 2010-05-25 2011-12-01 Watkins John E Input/output device including a mechanism for error handling in multiple processor and multi-function systems
JP2012108677A (ja) * 2010-11-16 2012-06-07 Canon Inc データ転送装置及びその制御方法

Also Published As

Publication number Publication date
WO2015108522A1 (en) 2015-07-23
KR20160085882A (ko) 2016-07-18
EP3095041A1 (en) 2016-11-23
DE112014006183T5 (de) 2016-09-22
US20160274923A1 (en) 2016-09-22
BR112016012902A2 (pt) 2017-08-08
CN105830053A (zh) 2016-08-03
JP2017503245A (ja) 2017-01-26
EP3095041A4 (en) 2018-04-25
JP6286551B2 (ja) 2018-02-28

Similar Documents

Publication Publication Date Title
KR101995623B1 (ko) 고속 구성 메커니즘을 위한 장치, 방법, 및 시스템
US11106474B2 (en) System, method, and apparatus for DVSEC for efficient peripheral management
US9953001B2 (en) Method, apparatus, and system for plugin mechanism of computer extension bus
CN108089940B (zh) 处理超时的系统、方法和装置
KR102074018B1 (ko) 저전력 상태로의 포트 진입을 동기화하기 위한 시스템, 방법 및 장치
US20170262395A1 (en) Method, apparatus, system for including interrupt functionality in sensor interconnects
US20230022948A1 (en) System, method, and apparatus for sris mode selection for pcie
CN108027785B (zh) 用于对链路拆分进行去偏斜的方法、设备和系统
US11163717B2 (en) Reduced pin count interface
CN110121703B (zh) 用于向量通信的系统和方法
TWI736559B (zh) 用以針對實體層裝置的組件傳輸資料之控制器
US11126554B2 (en) Prefetching write permissions into address translation cache

Legal Events

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