KR20160111464A - 링크 인터페이스의 미사용 하드웨어의 전력 소모를 제어하는 방법, 장치, 및 시스템 - Google Patents

링크 인터페이스의 미사용 하드웨어의 전력 소모를 제어하는 방법, 장치, 및 시스템 Download PDF

Info

Publication number
KR20160111464A
KR20160111464A KR1020167022597A KR20167022597A KR20160111464A KR 20160111464 A KR20160111464 A KR 20160111464A KR 1020167022597 A KR1020167022597 A KR 1020167022597A KR 20167022597 A KR20167022597 A KR 20167022597A KR 20160111464 A KR20160111464 A KR 20160111464A
Authority
KR
South Korea
Prior art keywords
hardware
link
buffer
maximum
logic
Prior art date
Application number
KR1020167022597A
Other languages
English (en)
Other versions
KR101867435B1 (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 KR20160111464A publication Critical patent/KR20160111464A/ko
Application granted granted Critical
Publication of KR101867435B1 publication Critical patent/KR101867435B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • Y02B60/1235
    • Y02B60/1282
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

실시예에서, 복수의 하드웨어 버퍼는 각기 하나 이상의 가상 버퍼와 연관된 정보를 저장할 수 있다. 그 다음으로, 구성 로직은 링크를 통해 연결된 제 1 및 제 2 디바이스에 의해 공통으로 지원되는 가상 채널의 최대 개수에 대응하는 식별자를 결정하고, 식별자에 기초하여 제어 값을 취득한다. 구성 로직에 연결된 게이트 로직은 제어 값에 기초하여 동작 전압을 하드웨어 버퍼 중의 대응하는 버퍼에 제공한다. 이러한 방식으로, 동작 전압은 가상 채널의 최대 개수가 복수의 하드웨어 버퍼보다 적을 때 동작 전압은 하드웨어 버퍼 중 적어도 하나의 하드웨어 버퍼에 공급되지 않을 수 있다. 다른 실시예가 기술되고 청구된다.

Description

링크 인터페이스의 미사용 하드웨어의 전력 소모를 제어하는 방법, 장치, 및 시스템{A METHOD, APPARATUS, AND SYSTEM FOR CONTROLLING POWER CONSUMPTION OF UNUSED HARDWARE OF A LINK INTERFACE}
본 개시는 컴퓨팅 시스템에 관한 것으로, (배타적인 것은 아니지만) 특히 그러한 시스템 내 링크 인터페이스의 전력 관리에 관한 것이다.
도 1은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템의 블록도의 실시예이다.
도 2는 한 세트의 컴포넌트를 상호 연결하는 포인트-투-포인트 링크로 구성된 패브릭의 실시예이다.
도 3은 계층화된 프로토콜 스택의 실시예이다.
도 4는 PCIe 트랜잭션 서술자의 실시예이다.
도 5는 PCIe 직렬 포인트-투-포인트 패브릭의 실시예이다.
도 6은 실시예에 따른 SoC 디자인의 블록도이다.
도 7은 본 발명의 실시예에 따른 시스템의 블록도이다.
도 8은 본 발명의 실시예에 따른 구성 방법의 흐름도이다.
도 9a는 실시예에 따른 구성 저장소의 블록도이다.
도 9b는 실시예에 따른 전압 제어 회로의 일부분의 블록도이다.
도 10은 실시예에 따른 시스템의 일부분의 블록도이다.
하기 설명에서, 특정 형태의 프로세서 및 시스템 구성, 특정 하드웨어 구조, 특정 아키텍처 및 마이크로 아키텍처 세부사항, 특정 레지스터 구성, 특정 명령어 타입, 특정 시스템 컴포넌트, 특정 치수/높이, 특정 프로세서 파이프라인 스테이지 및 동작 등의 예와 같은 여러 구체적인 세부 사항이 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나 본 기술에서 통상의 지식을 가진 자에게는 이러한 구체적인 세부사항이 본 발명을 실시하기 위해 반드시 이용될 필요는 없다는 것이 명백할 것이다. 다른 사례에서, 본 발명을 불필요하게 모호하게 하지 않기 위해, 특정하고 대안의 프로세서 아키텍처, 서술된 알고리즘에 대한 특정 로직 회로/코드, 특정 펌웨어 코드, 특정 인터커넥트 동작, 특정 로직 구성, 특정 제조 기술 및 재료, 특정 컴파일러 구현, 코드 내 알고리즘의 특정 표현, 특정 파워다운 및 게이팅 기술/로직 및 컴퓨터 시스템의 다른 특정 동작의 세부사항과 같은 공지된 컴포넌트 또는 방법에 관해서는 자세하게 설명하지 않았다.
비록 컴퓨팅 플랫폼이나 마이크로프로세서와 같은 특정 집적 회로에서 후술되는 실시예가 에너지 보존 및 에너지 효율에 관하여 설명되지만, 다른 형태의 집적 회로 및 로직 디바이스에 다른 실시예가 적용될 수도 있다. 본 명세서에서 설명되는 실시예의 유사한 기술 및 교시는 더 나은 에너지 효율 및 에너지 보존으로부터 또한 이득을 얻을 수 있는 다른 형태의 회로 또는 반도체 디바이스에 적용될 수 있다. 예를 들면, 설명된 실시예는 데스크톱 컴퓨터 시스템 또는 울트라북TM으로 한정되지 않으며, 휴대형 디바이스, 태블릿, 다른 신(thin) 노트북, 시스템 온 칩(systems on a chip, SOC) 디바이스, 및 임베디드 애플리케이션과 같은 다른 디바이스에서도 사용될 수 있다. 휴대형 디바이스의 몇 가지 예는 셀룰러 폰, 인터넷 프로토콜 디바이스, 디지털 카메라, 개인 휴대정보 단말기(personal digital assistant, PDA), 및 휴대 PC를 포함한다. 임베디드 애플리케이션은 통상적으로 아래에서 교시된 기능 및 동작을 수행할 수 있는 마이크로컨트롤러, 디지털 신호 프로세서(digital signal processor, DSP), 시스템 온 칩, 네트워크 컴퓨터(network computer, NetPC), 셋톱 박스, 네트워크 허브, 광역 네트워크(wide area network, WAN) 스위치, 또는 임의의 다른 시스템을 포함한다. 더욱이, 본 명세서에서 설명된 장치, 방법 및 시스템은 물리적인 컴퓨팅 디바이스로 한정되지 않고, 에너지 보존 및 효율을 위해 소프트웨어를 최적화하는 것에도 관련될 수 있다. 아래의 설명에서 쉽게 자명해지는 바와 같이, 본 명세서에서 설명된 방법, 장치 및 시스템의 실시예는 (하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합과 관련한 것이든 아니든) 성능 고려 사항과 향후 균형을 이루는 '녹색 기술'에 중요하게 고려된다.
컴퓨팅 시스템이 발달하면서, 컴퓨팅 시스템 내 컴포넌트들은 더욱 복잡해지고 있다. 그 결과 컴포넌트들 사이를 연결하고 통신하게 하는 인터커넥트 아키텍처 또한 최적의 컴포넌트 동작에 필요한 대역폭 요구가 충족되는 것을 보장하기 위해 복잡도가 증가하고 있다. 그뿐만 아니라, 다양한 세분된 시장은 시장의 요구에 맞는 인터커넥트 아키텍처의 다양한 양상을 요구하고 있다. 예를 들면, 서버는 고성능을 요구하는데 반해, 모바일 에코시스템은 때로는 절전을 위해 전체 성능을 희생할 수 있다. 그렇지만, 대부분의 패브릭의 궁극적 목표는 절전을 극대화하면서 가능한한 최고의 성능을 제공하는 것이다. 아래에서, 본 명세서에서 기술되는 본 발명의 양태로부터 잠재적으로 이득을 얻는 복수의 인터커넥트가 논의된다.
도 1을 참조하면, 멀티코어 프로세서를 포함하는 컴퓨팅 시스템의 블록도의 실시예가 도시된다. 프로세서(100)는 코드를 실행하는 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 휴대용 프로세서, 애플리케이션 프로세서, 코프로세서, 시스템 온 칩(SoC), 또는 다른 디바이스와 같은 임의의 프로세서 또는 프로세싱 디바이스를 포함한다. 일 실시예에서, 프로세서(100)는 적어도 두 개의 코어, 즉 비대칭 코어 또는 대칭 코어(예시된 실시예)를 포함하는 코어(101 및 102)를 포함한다. 그러나 프로세서(100)는 대칭 또는 비대칭일 수 있는 임의의 개수의 프로세싱 요소를 포함할 수 있다.
일 실시예에서, 프로세싱 요소는 소프트웨어 스레드(software thread)를 지원하는 하드웨어 또는 로직을 말한다. 하드웨어 프로세싱 요소의 예는 실행 상태 또는 구조적 상태와 같은 프로세서의 상태를 보유할 수 있는 스레드 유닛, 스레드 슬롯, 스레드, 프로세스 유닛, 컨텍스트, 컨텍스트 유닛, 로직 프로세서, 하드웨어 스레드, 코어, 및/또는 임의의 다른 요소를 포함한다. 다시 말해서, 일 실시예에서, 프로세싱 요소는 소프트웨어 스레드, 오퍼레이팅 시스템, 어플리케이션, 또는 다른 코드와 같은, 코드와 독립적으로 관련될 수 있는 임의의 하드웨어를 말한다. 물리적 프로세서(또는 프로세서 소켓)는 일반적으로 코어 또는 하드웨어 스레드와 같은 임의의 개수의 다른 프로세싱 요소를 포함할 가능성이 있는 집적 회로를 말한다.
코어는 종종 독립적인 구조적 상태를 유지할 수 있는 집적 회로에 배치된 로직을 말하며, 여기서 각각의 독립적으로 유지되는 구조적 상태는 적어도 일부의 전용 실행 자원과 연관된다. 코어와 대조적으로, 하드웨어 스레드는 전형적으로 독립적인 구조적 상태를 유지할 수 있는 집적 회로에 배치된 임의의 로직을 말하며, 여기서 독립적으로 유지되는 구조적 상태는 실행 자원에의 액세스를 공유한다. 알 수 있는 바와 같이, 어떤 자원은 공유되고 다른 자원은 구조적 상태에 전용되고 있을 때, 하드웨어 스레드와 코어의 명칭 간의 경계가 겹친다. 그러나 종종, 코어와 하드웨어 스레드는 오퍼레이팅 시스템에 의해 개별적인 논리 프로세서로서 간주되며, 이 경우 오퍼레이팅 시스템은 각 논리 프로세서의 동작을 개별적으로 스케줄링할 수 있다.
물리 프로세서(100)는 도 1에서 예시된 바와 같이 두 개의 코어, 즉 코어(101 및 102)를 포함한다. 여기서, 코어(101 및 102)는 대칭적인 코어, 즉 구성, 기능 유닛 및/또는 로직이 동일한 코어인 것으로 간주된다. 다른 실시예에서, 코어(101)는 비순차적(out-of-order) 프로세스 코어를 포함하는데 반해, 코어(102)는 순차적(in-order) 프로세스 코어를 포함한다. 그러나 코어(101 및 102)는 기본 코어(native core), 소프트웨어 피 관리 코어(software managed core), 기본 명령어 집합 아키텍처(Instruction Set Architecture, ISA)를 실행하도록 적응된 코어, 공동 설계 코어(co-designed core), 또는 다른 공지된 코어와 같은 임의의 형태의 코어로부터 개별적으로 선택될 수 있다. 이기종 코어 환경(즉, 비대칭 코어)에서, 이진 변환과 같은 몇 가지 형태의 변환은 하나의 코어 또는 두 코어에서 코드를 스케줄링하거나 실행하기 위해 활용될 수 있다. 추가로 설명하기 위해, 도시된 실시예에서 코어(102) 내 유닛은 유사한 방식으로 동작하므로, 코어(101)에서 예시된 기능 유닛이 아래에서 더 상세하게 설명된다.
도시된 바와 같이, 코어(101)는 하드웨어 스레드 슬롯(101a 및 101b)이라고도 지칭될 수 있는 두 개의 하드웨어 스레드(101a 및 101b)를 포함한다. 그러므로 일 실시예에서, 오퍼레이팅 시스템과 같은 소프트웨어 엔티티는 잠재적으로 프로세서(100)를 네 개의 소프트웨어 스레드를 동시에 실행할 수 있는 네 개의 별개 프로세서, 즉 네 개의 논리 프로세서 또는 프로세싱 요소라고 간주한다. 앞에서 언급한 바와 같이, 제 1 스레드는 아키텍처 상태 레지스터(101a)와 연관되고, 제 2 스레드는 아키텍처 상태 레지스터(101b)와 연관되고, 제 3 스레드는 아키텍처 상태 레지스터(102a)와 연관될 수 있으며, 제 4 스레드는 아키텍처 상태 레지스터(102b)와 연관될 수 있다. 여기서, 각각의 아키텍처 상태 레지스터(101a, 101b, 102a, 및 102b)는 앞에서 설명한 것처럼 프로세싱 요소, 스레드 슬롯, 또는 스레드 유닛이라고도 지칭될 수 있다. 예시된 바와 같이, 아키텍처 상태 레지스터(101a)는 아키텍처 상태 레지스터(101b)에 복제되며, 그래서 개개의 아키텍처 상태/컨텍스트가 논리 프로세서(101a) 및 논리 프로세서(101b)마다 저장될 수 있다. 코어(101)에서, 할당자 및 리네이머(renamer) 블록(130) 내의 명령어 포인터 및 리네이밍 로직과 같은 다른 더 작은 자원 또한 스레드(101a 및 101b)마다 복제될 수 있다. 재정렬/리타이어먼트(reorder/retirement) 유닛(135) 내 재정렬 버퍼, ILTB(120), 적재/저장 버퍼, 및 큐와 같은 일부 자원은 분할을 통해 공유될 수 있다. 범용의 내부 레지스터, 페이지-테이블 베이스 레지스터(들)(page-table base register(s)), 하위 레벨 데이터-캐시 및 데이터-TLB(115), 실행 유닛(들)(140), 및 비순차적 유닛(135)의 부분과 같은 다른 자원들은 잠재적으로 완전히 공유된다.
프로세서(100)는 종종 완전 공유될 수 있거나, 분할을 통해 공유될 수 있거나, 또는 프로세싱 요소에 의해/프로세싱 요소에 전용될 수 있는 다른 자원을 포함하기도 한다. 도 1에서, 프로세서의 예시적인 논리 유닛/자원을 가진 순전히 예시적인 프로세서의 실시예가 예시된다. 프로세서는 이러한 기능적 유닛 중 임의의 기능적 유닛을 포함하거나 제외할 수 있을 뿐만 아니라, 도시되지 않은 임의의 다른 공지된 기능적 유닛, 로직, 또는 펌웨어를 포함할 수 있다는 것을 주목하여야 한다. 예시된 바와 같이, 코어(101)는 간소화한 대표적인 비순차적(out-of-order, OOO) 프로세서 코어를 포함한다. 그러나 여러 실시예에서 순차적 프로세서가 활용될 수 있다. OOO 코어는 실행될/취할 브랜치를 예측하는 브랜치 타겟 버퍼(120) 및 명령어의 어드레스 변환 엔트리를 저장하는 명령어-변환 버퍼(instruction-translation buffer, I-TLB)(120)를 포함한다.
코어(101)는 또한 페치 유닛(fetch unit)(120)에 연결되어 페치된 요소를 디코딩하는 디코딩 모듈(125)을 포함한다. 일 실시예에서, 페치 로직은 스레드 슬롯(101a, 101b)과 각기 연관된 개개의 시퀀서를 포함한다. 보통 코어(101)는 프로세서(100) 상에서 실행 가능한 명령어를 정의/명시하는 제 1 ISA와 연관된다. 종종 제 1 ISA의 일부인 머신 코드 명령어는 수행될 명령어 또는 연산을 참조/명시하는 명령어(오피코드(opcode))라고 지칭됨)의 일부분을 포함한다. 디코딩 로직(125)은 이러한 명령어를 이 명령어의 오피코드로부터 인식하고 디코딩된 명령어를 전달하여 파이프라인에서 제 1 ISA에 의해 정의된 바와 같이 처리하는 회로를 포함한다. 예를 들면, 아래에서 더 자세히 설명하는 바와 같이, 일 실시예에서, 디코더(125)는 트랜잭션 명령어와 같은 특정 명령어를 인식하도록 설계되거나 적응된 로직을 포함한다. 디코더(125)에 의한 인식의 결과로서, 아키텍처 또는 코어(101)는 특정하고, 미리 정의된 동작을 수행하여 적절한 명령어와 연관된 작업을 수행한다. 본 명세서에서 설명된 작업, 블록, 동작, 및 방법 중 임의의 것은 단일 또는 복수의 명령어에 응답하여 수행될 수 있고, 그 중 일부는 새로운 또는 이전의 명령어일 수 있다는 것을 주목하는 것이 중요하다. 일 실시예에서, 디코더(126)는 동일한 ISA(또는 그의 서브세트)를 인식한다는 것을 주목하여야 한다. 대안으로, 이기종 코어 환경에서, 디코더(126)는 제 2 ISA(제 1 ISA의 서브세트 또는 별도의 ISA)를 인식한다.
일 예에서, 할당자 및 리네이머 블록(130)은 명령어 처리 결과를 저장하는 레지스터 파일과 같이, 자원을 비축하는 할당자를 포함한다. 그러나 스레드(101a 및 101b)는 잠재적으로 비순차적 순서로 실행할 수 있으며, 이 경우 할당자 및 리네이머 블록(130)은 또한 명령어 결과를 추적하기 위해 재정렬 버퍼와 같은 다른 자원을 가진다. 유닛(130)은 또한 프로그램/명령어 참조 레지스터를 프로세서(100) 내부의 다른 레지스터로 리네임하는 레지스터 리네이머를 포함할 수 있다. 재정렬/리타이어먼트 유닛(135)은 앞에서 언급한 재정렬 버퍼, 적재 버퍼, 및 저장 버퍼와 같이, 비순차적 실행을 지원하고 나중에 비순차적으로 실행된 명령어의 순차적 리타이어먼트를 지원하는 컴포넌트를 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들) 블록(140)은 실행 유닛의 명령어/동작을 스케줄링하는 스케줄러 유닛을 포함한다. 예를 들면, 부동 소수점 명령어는 이용 가능한 부동 소수점 실행 유닛을 가진 실행 유닛의 한 포트에 스케줄링된다. 실행 유닛과 연관된 레지스터 파일이 또한 정보 명령어 처리 결과를 저장하기 위해 포함된다. 예시적인 실행 유닛은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 적재 실행 유닛, 저장 실행 유닛, 및 다른 공지된 실행 유닛을 포함한다.
하위 레벨 데이터 캐시 및 데이터 변환 버퍼(data translation buffer, D-TLB)(150)는 실행 유닛(들)(140)에 연결된다. 데이터 캐시는 잠재적으로 메모리 코히어런시 상태로 유지되는 데이터 피연산자(data operand)와 같이, 요소에서 최근에 사용된/연산된 것을 저장한다. D-TLB는 최신의 가상/선형 물리 어드레스 변환을 저장한다. 특정한 예로서, 프로세서는 물리적 메모리를 복수의 가상 페이지로 나누는 페이지 테이블 구조를 포함할 수 있다.
여기서, 코어(101 및 102)는 온-칩 인터페이스(110)와 연관된 제 2 레벨 캐시와 같은 상위-레벨(higher-level) 또는 그 이상 레벨의(further-out) 캐시로의 액세스를 공유한다. 상위-레벨 또는 그 이상 레벨은 실행 유닛(들)으로부터 높아지거나 더 멀어지는 캐시 레벨을 말한다는 것을 주목하여야 한다. 일 실시예에서, 상위-레벨 캐시는 제 2 또는 제 3 레벨 데이터 캐시와 같이, 프로세서(100)의 메모리 계층에서 마지막 캐시인 라스트-레벨 데이터 캐시이다. 그러나 상위 레벨 캐시는 명령어 캐시와 연관될 수 있거나 명령어 캐시를 포함할 수 있으므로, 그렇게 제한되지 않는다. 트레이스 캐시 - 명령어 캐시의 한 형태 - 는 그 대신 최근에 디코딩된 트레이스를 저장하기 위해 디코더(125) 뒤에 연결될 수 있다. 여기서, 명령어는 잠재적으로 복수의 마이크로 명령어(마이크로-동작)로 디코딩될 수 있는 매크로-명령어(즉, 디코더에 의해 인식되는 일반적인 명령어)를 말한다.
도시된 구성에서, 프로세서(100)는 또한 온-칩 인터페이스 모듈(110)을 포함한다. 과거에, 아래에서 더 상세히 설명되는 메모리 컨트롤러는 프로세서(100) 외부의 컴퓨팅 시스템에 포함되었다. 이러한 시나리오에서, 온-칩 인터페이스(110)는 시스템 메모리(175), 칩셋(종종 메모리 컨트롤러 허브를 메모리(175)에 접속시키는 것과 I/O 컨트롤러 허브를 주변 디바이스에 접속시키는 것을 포함함), 메모리 컨트롤러 허브, 노스브릿지, 또는 다른 집적 회로와 같이, 프로세서(100) 외부의 디바이스와 통신한다. 그리고 이러한 시나리오에서, 버스(105)는 멀티-드롭 버스, 포인트-투-포인트 인터커넥트, 직렬 인터커넥트, 병렬 버스, 코히어런트(예를 들면, 캐시 코히어런트) 버스, 계층화된 프로토콜 아키텍처, 차동 버스, 및 GTL 버스와 같은 임의의 공지된 인터커넥트를 포함할 수 있다.
메모리(175)는 프로세서(100)에 전용될 수 있거나 시스템 내 다른 디바이스와 공유될 수 있다. 메모리(175)의 유형의 일반적인 예는 DRAM, SRAM, 비휘발성(non-volatile memory, NV) 메모리, 및 다른 공지된 저장 디바이스를 포함한다. 디바이스(180)는 그래픽 가속기, 메모리 컨트롤러 허브에 연결된 프로세서 또는 카드, I/O 컨트롤러 허브에 연결된 데이터 저장소, 무선 송수신기, 플래시 디바이스, 오디오 컨트롤러, 네트워크 컨트롤러, 또는 다른 공지된 디바이스를 포함할 수 있다는 것을 주목하여야 한다.
그러나 최근에는 더 많은 로직 및 디바이스가 SOC와 같이 단일의 다이 상에 집적되고 있으므로, 이들 디바이스는 각기 프로세서(100)에 통합될 수 있다. 예를 들면, 일 실시예에서, 메모리 컨트롤러 허브는 프로세서(100)와 함께 동일한 패키지 및/또는 다이상에 존재한다. 여기서, 코어의 일부분 (온-코어 부분)(110)은 메모리(175) 또는 그래픽 디바이스(180)와 같은 다른 디바이스와 인터페이스하기 위한 하나 이상의 컨트롤러(들)를 포함한다. 그러한 디바이스와 인터페이스하기 위한 인터커넥트 및 컨트롤러를 포함하는 구성은 종종 온-코어(또는 언-코어(un-core) 구성)이라고 지칭한다. 일 예로서, 온-칩 인터페이스(110)는 온-칩 통신을 위한 링 인터커넥트 및 오프-칩 통신을 위한 고속의 직렬 포인트-투-포인트 링크(105)를 포함한다. 그렇지만, SOC 환경에서, 네트워크 인터페이스, 코-프로세서, 메모리(175), 그래픽 프로세서(180), 및 임의의 다른 공지된 컴퓨터 디바이스/인터페이스와 같은 더 많은 디바이스들이 단일의 다이 또는 집적 회로상에서 통합되어 고기능 및 저전력 소비가 가능한 소형의 폼 팩터를 제공할 수 있다.
일 실시예에서, 프로세서(100)는 애플리케이션 코드(176)를 컴파일, 변환, 및/또는 최적화하는 컴파일러, 최적화 및/또는 변환기 코드(177)를 실행하여 본 명세서에서 설명된 장치 및 방법을 지원하거나 이들과 인터페이스할 수 있다. 컴파일러는 종종 소스 텍스트/코드를 타겟 텍스트/코드로 변환하는 프로그램 또는 프로그램의 세트를 포함한다. 보통, 컴파일러를 이용한 프로그램/애플리케이션 코드의 컴파일은 상위-레벨의 프로그래밍 언어 코드를 하위-레벨의 머신 또는 어셈블리 언어 코드로 변환하는 복수의 단계 및 과정으로 이루어진다. 그렇지만, 간단한 컴파일을 위해 단일 과정의 컴파일러가 여전히 활용될 수 있다. 컴파일러는 임의의 공지된 컴파일 기술을 활용하여 어휘 분석, 전처리, 파싱, 시맨틱 분석, 코드 생성, 코드 변환, 및 코드 최적화와 같은 임의의 공지된 컴파일러 동작을 수행할 수 있다.
보다 큰 컴파일러는 흔히 여러 단계를 포함하지만, 대부분의 이러한 단계는 종종 두 가지의 일반적인 단계, 즉 (1) 프론트-엔드, 즉 일반적으로 구문론적 처리, 의미론적 처리, 및 일부의 변환/최적화가 이루어질 수 있는 프론트-엔드, 및 (2) 백-엔드, 즉 분석, 변환, 최적화, 및 코드 생성이 이루어지는 백-엔드 내에 포함된다. 일부 컴파일러는 컴파일러의 프론트-엔드와 백-엔드 간의 서술의 불분명함을 설명하는 매개자를 말한다. 결과적으로, 컴파일러의 삽입, 연관, 생성, 또는 다른 동작이라는 것은 앞에서 언급한 단계 또는 과정 중의 임의의 단계 또는 과정에서뿐만 아니라, 컴파일러의 임의의 다른 공지된 단계 또는 과정에서 일어날 수 있다. 예시적인 예로서, 컴파일러는 호출/연산을 컴파일의 프론트-엔드 단계에 삽입한 다음 변환 단계 동안 호출/연산을 하위-레벨 코드로 변환하는 것과 같이, 연산, 호출, 함수 등을 잠재적으로 하나 이상의 컴파일 단계에 삽입한다. 동적으로 컴파일링하는 동안, 컴파일러 코드 또는 동적 최적화 코드가 그러한 연산/호출을 삽입할 뿐만 아니라 런타임 동안 실행하기 위한 코드를 최적화할 수 있다는 것을 주목하여야 한다. 특정의 예시로서, 이진 코드(이미 컴파일링된 코드)가 런타임 동안 동적으로 최적화될 수 있다. 여기서, 프로그램 코드는 동적 최적화 코드, 이진 코드, 또는 이들의 조합을 포함할 수 있다.
컴파일러와 유사하게, 이진 변환기와 같은 변환기가 코드를 정적 또는 동적으로 변환하여 코드를 최적화 및/또는 변환한다. 그러므로 코드, 애플리케이션 코드, 프로그램 코드, 또는 기타 소프트웨어 환경을 실행하는 것은 (1) 프로그램 코드를 컴파일링하거나, 소프트웨어 구조를 유지하거나, 다른 동작을 수행하거나, 코드를 최적화하거나, 또는 코드를 변환하기 위해 컴파일러 프로그램(들), 최적화 코드 최적화기, 또는 변환기를 동적 또는 정적으로 실행하는 것, (2) 최적화된/컴파일된 애플리케이션 코드와 같은 연산/호출을 포함하는 메인 프로그램 코드를 실행하는 것, (3) 라이브러리와 같이, 소프트웨어 구조를 유지하거나, 다른 소프트웨어 관련 동작을 수행하거나, 또는 코드를 최적화하기 위해 메인 프로그램 코드와 연관된 다른 프로그램 코드를 실행하는 것, 또는 (4) 이들의 조합을 말할 수 있다.
하나의 인터커넥트 패브릭 아키텍처는 PCIe 아키텍처를 포함한다. PCIe의 기본적인 목표는 여러 세분 시장, 즉 클라이언트(데스크톱 및 모바일), 서버(표준형 및 기업용), 및 임베디드 및 통신 디바이스를 연결해주는 개방형 아키텍처에서 여러 벤더들의 컴포넌트 및 디바이스를 상호 동작할 수 있게 하는 것이다. PCI 익스프레스는 다양한 미래의 컴퓨팅 및 통신 플랫폼을 목적으로 정의된 고성능의 범용 I/O 인터커넥트이다. 그 사용 모델, 로드-스토어(load-store architecture) 아키텍처, 및 소프트웨어 인터페이스와 같은 일부 PCI 속성은 개정을 통해 유지되어 온 반면, 이전의 병렬 버스 구현은 뛰어난 확장성의 완전 직렬 인터페이스로 대체되었다. PCI 익스프레스의 최신 버전은 새로운 레벨의 성능 및 기능을 전달하기 위하여 최신의 포인트-투-포인트 인터커넥트, 스위치-기반 기술, 및 패킷화된 프로토콜을 활용한다. 전력 관리, 서비스 품질(Quality Of Service, QoS), 핫-플러그/핫-스왑 지원, 데이터 무결성, 및 오류 처리는 PCI 익스프레스에 의해 지원되는 최신의 특징 중 몇 가지이다.
도 2를 참조하면, 도시된 한 세트의 컴포넌트를 상호 접속하는 포인트-투-포인트 링크로 구성된 일 실시예를 도시한다. 시스템(200)은 컨트롤러 허브(215)에 연결된 프로세서(205) 및 시스템 메모리(210)를 포함한다. 프로세서(205)는 마이크로프로세서, 호스트 프로세서, 임베디드 프로세서, 코-프로세서, 또는 다른 프로세서와 같은 임의의 프로세싱 요소를 포함할 수 있다. 프로세서(205)는 프론트-사이드 버스(front-side bus, FSB)(206)를 통해 컨트롤러 허브(215)에 연결된다. 일 실시예에서, FSB(206)는 아래에서 설명되는 바와 같이 직렬의 포인트-투-포인트 인터커넥트이다. 다른 실시예에서, 링크(206)는 다양한 인터커넥트 표준을 준용하는 직렬의 차동 인터커넥트 아키텍처를 포함한다.
시스템 메모리(210)는 시스템(200) 내 디바이스에 의해 액세스 가능한 랜덤 액세스 메모리(random access memory, RAM), 비-휘발성(non-volatile, NV) 메모리, 또는 다른 메모리와 같은 임의의 메모리 디바이스를 포함한다. 시스템 메모리(210)는 메모리 인터페이스(216)를 통해 컨트롤러 허브(215)에 연결된다. 메모리 인터페이스의 예는 이배속 데이터(double-data rate, DDR) 메모리 인터페이스, 듀얼-채널 DDR 메모리 인터페이스 및 다이나믹 RAM(DRAM) 메모리 인터페이스를 포함한다.
일 실시예에서, 컨트롤러 허브(215)는 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express, PCIe 또는 PCIE) 상호접속 계층에서 루트 허브, 루트 콤플렉스, 또는 루트 컨트롤러를 포함할 수 있다. 컨트롤러 허브(215)의 예는 칩셋, 메모리 컨트롤러 허브(memory controller hub, MCH), 노스브릿지, 인터커넥트 컨트롤러 허브(interconnect controller hub, ICH), 사우스브릿지, 및 루트 컨트롤러/허브를 포함한다. 흔히 칩셋이라는 용어는 물리적으로 별개인 두 개의 컨트롤러 허브, 즉 인터커넥트 컨트롤러 허브(ICH)에 연결된 메모리 컨트롤러 허브(MCH)를 말한다. 본 발명의 시스템은 종종 프로세서(205)와 함께 통합된 MCH를 포함하지만, 컨트롤러(215)는 아래에서 설명되는 바와 유사한 방식으로 I/O 디바이스와 통신한다는 것을 주목하여야 한다. 일부 실시예에서, 선택사양으로 피어-투-피어 라우팅이 루트 콤플렉스(215)를 통해 지원된다.
여기서, 컨트롤러 허브(215)는 직렬 링크(219)를 통해 스위치/브릿지(220)에 연결된다. 인터페이스/포트(217 및 221)라고도 지칭될 수 있는 입력/출력 모듈(217 및 221)은 컨트롤러 허브(215)와 스위치(220) 사이에서 통신을 제공하는 계층화된 프로토콜 스택을 포함/구현할 수 있다. 일 실시예에서, 복수의 디바이스가 스위치(220)에 연결될 수 있다.
스위치/브릿지(220)는 패킷/메시지를 디바이스(225)로부터 컨트롤러 허브(215)를 향해 업스트림으로, 즉 루트 콤플렉스를 향한 계층 위쪽으로 라우팅하며, 프로세서(205) 또는 시스템 메모리(210)로부터 디바이스(225)를 향해 다운스트림으로, 즉 루트 컨트롤러로부터 계층 아래쪽으로 라우팅한다. 일 실시예에서, 스위치(220)는 복수의 가상 PCI 대 PCI 브릿지 디바이스의 논리적 어셈블리라고 지칭된다. 디바이스(225)는 I/O 디바이스, 네트워크 인터페이스 컨트롤러(Network Interface Controller, NIC), 애드-인 카드(add-in card), 오디오 프로세서, 네트워크 프로세서, 하드 드라이브, 저장 디바이스, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 이동식 저장 디바이스, 파이어와이어 디바이스, 범용 직렬 버스(Universal Serial Bus, USB) 디바이스, 스캐너, 및 다른 입력/출력 디바이스와 같은 전자 시스템에 연결되는 임의의 내부 또는 외부 디바이스나 컴포넌트를 포함한다. 흔히 PCIe에서, 디바이스와 같은 용어는 엔드포인트라고 지칭된다. 비록 구체적으로 도시되지 않을지라도, 디바이스(225)는 레거시 또는 다른 버전의 PCI 디바이스를 지원하는 PCIe 대 PCI/PCI-X 브릿지를 포함할 수 있다. PCIe에서 엔드포인트 디바이스는 종종 레거시, PCIe, 또는 루트 콤플렉스 통합형 엔드포인트로서 분류되기도 한다.
그래픽 가속기(230) 또한 직렬 링크(232)를 통해 컨트롤러 허브(215)에 연결된다. 일 실시예에서, 그래픽 가속기(230)는 ICH에 연결된 MCH에 연결된다. 그러면 스위치(220)가 ICH에 연결되고 이에 따라서 I/O 디바이스(225)가 ICH에 연결된다. I/O 모듈(231 및 218)은 또한 그래픽 가속기(230)와 컨트롤러 허브(215) 사이에서 통신하기 위해 계층화된 프로토콜 스택을 구현한다. 앞에서 MCH의 설명과 유사하게, 그래픽 컨트롤러 또는 그래픽 가속기(230) 자체는 프로세서(205) 내에 통합될 수 있다.
도 3을 참조하면, 계층화된 프로토콜 스택의 실시예가 도시된다. 계층화된 프로토콜 스택(300)은 퀵패스 인터커넥트(Quick Path Interconnect, QPI) 스택, PCIe 스택, 차세대 고성능 컴퓨팅 인터커넥트(next generation high performance computing interconnect, HPI) 스택, 또는 다른 계층화된 스택과 같은 임의의 형태의 계층화된 통신 스택을 포함한다. 도 2 내지 도 5를 참조하는 바로 아래에서의 설명은 PCIe 스택과 관련 있을지라도, 동일한 개념이 다른 인터커넥트 스택에 적용될 수 있다. 일 실시예에서, 프로토콜 스택(300)은 트랜잭션 계층(305), 링크 계층(310), 및 물리 계층(320)을 포함하는 PCIe 프로토콜 스택이다. 인터페이스는 통신 프로토콜 스택(300)으로서 표현될 수 있다. 통신 프로토콜 스택이라는 표현은 프로토콜 스택을 구현하는/포함하는 모듈 또는 인터페이스라고도 지칭될 수 있다.
PCIe 익스프레스는 컴포넌트들 사이에서 정보를 전달하기 위해 패킷을 사용한다. 패킷은 트랜잭션 계층(305) 및 데이터 링크 계층(310)에서 형성되어 정보를 송신 컴포넌트로부터 수신 컴포넌트로 전달한다. 송신된 패킷은 다른 계층을 통해 흐르므로, 패킷은 그러한 계층에서 패킷을 처리하는데 필요한 부가적인 정보로 확장된다. 수신 측에서, 역 처리가 수행되며 패킷은 그러한 물리 계층(320) 표현으로부터 데이터 링크 계층(310) 표현으로 변환되고 최종적으로 (트랜잭션 계층 패킷의 경우) 수신 디바이스의 트랜잭션 계층(305)에 의해 처리될 수 있는 형태로 변환된다.
일 실시예에서, 트랜잭션 계층(305)은 디바이스의 프로세싱 코어와 인터커넥트 아키텍처, 이를테면 데이터 링크 계층(310) 및 물리 계층(320) 사이에서 인터페이스를 제공한다. 이와 관련하여, 트랜잭션 계층(305)의 주요 기능은 패킷(즉, 트랜잭션 계층 패킷(transaction layer packet) 또는 TLP)의 조립과 해체이다. 트랜잭션 계층(305)은 전형적으로 TLP에 대하여 크레딧 기반 흐름 제어(Credit-based flow control)를 관리한다. PCIe는 스플릿 트랜잭션(split transaction), 즉 타겟 디바이스가 응답에 필요한 데이터를 수집하는 동안 링크로 하여금 다른 트래픽을 전달하게 해주는, 요청과 응답이 시간에 의해 분리되어 있는 트랜잭션을 구현한다.
또한 PCIe는 크레딧(credits) 기반 흐름 제어를 활용한다. 이러한 체계에서, 디바이스는 트랜잭션 계층(305)에서 각각의 수신 버퍼마다 초기 크레딧 수량을 광고한다. 컨트롤러 허브와 같이, 링크의 반대편에 있는 외부 디바이스는 각각의 TLP에 의해 소모된 크레딧의 개수를 카운트한다. 트랜잭션은 만일 그 트랜잭션이 크레딧 한계치를 초과하지 않으면 송신될 수 있다. 응답을 수신하면, 크레딧 수량이 복원된다. 크레딧 체계의 장점은 크레딧 제한에 처하지 않으면, 크레딧 반환의 지연이 성능에 영향을 미치지 않는다는 것이다.
일 실시예에서, 네 개의 트랜잭션 어드레스 공간은 구성 어드레스 공간, 메모리 어드레스 공간, 입력/출력 어드레스 공간, 및 메시지 어드레스 공간을 포함한다. 메모리 공간 트랜잭션은 데이터를 메모리-매핑된 위치로/로부터 전달하는 판독 요청 및 기록 요청 중 하나 이상의 요청을 포함한다. 일 실시예에서, 메모리 공간 트랜잭션은 두 가지 상이한 어드레스 포맷, 예를 들면 32비트 어드레스와 같이 짧은 어드레스 포맷, 또는 64비트 어드레스와 같이 긴 어드레스 포맷을 사용할 수 있다. 구성 공간 트랜잭션은 PCIe 디바이스의 구성 공간에 액세스하기 위해 사용된다. 구성 공간과의 트랜잭션은 판독 요청 및 기록 요청을 포함한다. 메시지 공간 트랜잭션(또는 간단히 메시지)은 PCIe 에이전트들 사이에서 대역-내(in-band) 통신을 지원하기 위해 정의된다.
그러므로, 일 실시예에서, 트랜잭션 계층(305)은 패킷 헤더/패이로드(306)를 조립한다. 현재 패킷 헤더/패이로더의 포맷은 PCIe 사양서 웹사이트에 있는 PCIe 사양서에서 찾아볼 수 있다.
잠시 도 4를 참조하면, PCIe 트랜잭션 서술자의 실시예가 예시된다. 일 실시예에서, 트랜잭션 서술자(400)는 트랜잭션 정보를 반송하기 위한 메커니즘이다. 이와 관련하여, 트랜잭션 서술자(400)는 시스템에서 트랜잭션의 식별을 지원한다. 다른 잠재적인 용도는 디폴트 트랜잭션 정렬 및 트랜잭션과 채널과의 연계의 추적 수정을 포함한다.
트랜잭션 서술자(400)는 글로벌 식별자(global identifier) 필드(402), 속성 필드(404) 및 채널 식별자 필드(406)를 포함할 수 있다. 도시된 예에서, 글로벌 식별자 필드(402)는 로컬 트랜잭션 식별자(local transaction identifier) 필드(408) 및 소스 식별자 필드(410)를 포함하는 것으로 도시된다. 일 실시예에서, 글로벌 식별자 필드(402)는 모든 미처리 요청에 대해 고유하다.
일 구현예에 따르면, 로컬 트랜잭션 식별자 필드(408)는 요청 에이전트에 의해 생성되는 필드이며, 그 요청 에이전트에게 완료를 요구하는 모든 미처리 요청에 대해 고유할 수 있다. 그뿐만 아니라, 이 예에서, 소스 식별자(310)는 인터커넥트 계층 내에서 요청 에이전트를 고유하게 식별한다. 따라서, 소스 ID(410)와 함께, 로컬 트랜잭션 식별자(408) 필드는 계층 도메인 내 트랜잭션의 전역적인 식별을 제공한다.
속성 필드(404)는 트랜잭션의 특징 및 관계를 명시한다. 이와 관련하여, 속성 필드(404)는 트랜잭션의 디폴트 처리를 수정하게 하는 부가 정보를 제공하기 위해 잠재적으로 사용된다. 일 실시예에서, 속성 필드(404)는 우선순위 필드(412), 예약 필드(414), 정렬 필드(416), 및 노-스누프(no-snoop) 필드(418)를 포함한다. 여기서, 우선순위 서브-필드(412)는 개시자에 의해 트랜잭션에 우선순위를 할당하기 위하여 수정될 수 있다. 예약 속성 필드(414)는 미래를 위해 예약되거나 또는 벤더가 정의하는 용도로 남겨 놓는다. 우선순위 또는 보안 속성을 이용하는 가능성 있는 사용 모델은 예약 속성 필드를 이용하여 구현될 수 있다.
이 예에서, 정렬 속성 필드(416)는 디폴트 정렬 규칙을 수정할 수 있는 정렬의 유형을 전달하는 옵션 정보를 공급하기 위해 사용될 수 있다. 일 예의 구현예에 따르면, "0"이라는 정렬 속성은 디폴트 정렬 규칙을 적용한다는 것을 나타내며, "1"이라는 정렬 속성은 완화된 정렬을 나타내며, 쓰기는 동일한 방향으로 쓰기를 나아가게 할 수 있으며, 읽기 완료는 동일한 방향으로 쓰기를 나아가게 할 수 있다. 스누프 속성 필드(418)는 트랜잭션이 감시되는지를 결정하기 위해 사용된다. 도시된 바와 같이, 채널 ID 필드(406)는 트랜잭션이 연관되어 있는 채널을 식별한다.
데이터 링크 계층(310)이라고도 지칭되는 링크 계층(310)은 트랜잭션 계층(305)과 물리 계층(320) 사이의 중간 단계로서 작용할 수 있다. 일 실시예에서, 데이터 링크 계층(310)의 기능은 링크상의 두 컴포넌트 사이에서 트랜잭션 계층 패킷(transaction layer packet, TLP)을 교환하기 위한 신뢰할 수 있는 메커니즘을 제공하는 것이다. 데이터 링크 계층(310)의 일 측은 트랜잭션 계층(305)에 의해 조립되는 TLP를 받아들이고, 패킷 시퀀스 식별자(311) 즉, 식별 번호 또는 패킷 번호를 적용하고, 오류 검출 코드, 즉 CRC(312)를 계산하여 적용하고, 물리 계층을 통해 외부 디바이스로 전송하기 위해 수정된 TLP를 물리 계층(320)에 제공한다.
일 실시예에서, 물리 계층(320)은 패킷을 물리적으로 외부 디바이스에 송신하는 논리 서브블록(321) 및 물리 서브블록(322)을 포함한다. 여기서 논리 서브블록(321)은 물리 계층(321)의 "디지털" 기능을 책임진다. 이와 관련하여, 논리 서브블록은 물리적 서브블록(322)에 의해 전송하기 위한 발송 정보를 준비하는 송신 섹션과, 수신된 정보를 링크 계층(310)에 전달하기 전에 수신된 정보를 식별하고 준비하는 수신 섹션을 포함한다.
물리 블록(322)은 송신기와 수신기를 포함한다. 송신기는 논리 서브블록(321)에 의해, 송신기가 직렬화하여 외부 디바이스에 송신하는 심볼을 공급받는다. 수신기는 외부 디바이스로부터 직렬화된 심볼을 공급받고 수신된 신호를 비트스트림으로 변환한다. 비트스트림은 역직렬화되어 논리 서브블록(321)에 공급된다. 일 실시예에서, 8b/10b 송신 코드가 사용되고, 10 비트 심볼이 송신되고/수신된다. 여기서, 패킷을 프레임(323)으로 구성하기 위해 특수한 심볼이 사용된다. 또한 일 예에서, 수신기는 또한 입력 직렬 스트림으로부터 복구된 심볼 클록을 제공한다.
앞에서 설명된 바와 같이, 트랜잭션 계층(305), 링크 계층(310) 및 물리 계층(320)이 PCIe 프로토콜 스택의 특정 실시예에 관하여 설명되었지만, 계층화된 프로토콜 스택은 그것으로 제한되지 않는다. 실제로, 임의의 계층화된 프로토콜이 포함되고/구현될 수 있다. 일 예로서, 계층화된 프로토콜로서 표현되는 포트/인터페이스는, (1) 패킷을 조립하는 제 1 계층 즉, 트랜잭션 계층과, 패킷을 순차적으로 배열하는 제 2 계층 즉, 링크 계층과, 패킷을 송신하는 제 3 계층 즉, 물리 계층을 포함할 수 있다. 특정한 예로서, QPI 계층화된 프로토콜이 활용된다.
다음으로 도 5를 참조하면, PCIe 직렬 포인트-투-포인트 패브릭의 실시예가 도시된다. 직렬 포인트-투-포인트 링크가 직렬 데이터를 송신하기 위한 임의의 송신 경로를 포함하므로, PCIe 직렬 포인트-투-포인트 링크의 실시예가 예시되기 하지만, 직렬 포인트-투-포인트 링크는 그렇게 제한되지 않는다. 도시된 실시예에서, 기본 PCIe 링크는 두 개의 낮은 전압의 차동 구동된 신호 쌍들, 즉 송신 쌍(506/511) 및 수신 쌍(512/507)을 포함할 수 있다. 따라서, 디바이스(505)는 데이터를 디바이스(510)로 송신하는 송신 로직(506) 및 데이터를 디바이스(510)로부터 수신하는 수신 로직(507)을 포함한다. 다시 말해서, 두 개의 송신 경로, 즉 경로(516 및 517), 및 두 개의 수신 경로, 즉 경로(518 및 519)가 PCIe 링크에 포함된다.
전송 경로는 전송 회선, 구리 회선, 광 회선, 무선 통신 채널, 적외선 통신 링크, 또는 다른 통신 경로와 같이 데이터를 송신하기 위한 임의의 경로를 말한다. 두 디바이스, 이를테면 디바이스(505)와 디바이스(510) 사이의 연결은 링크(415)와 같은 링크라고 지칭된다. 링크는 하나의 레인(lane)을 지원할 수 있고, 각각의 레인은 한 세트의 차동 신호 쌍(하나의 쌍은 송신용, 하나의 쌍은 수신용)을 나타낸다. 대역폭을 조정하기 위해, 링크는 xN으로 표기된 복수의 레인을 합친 것일 수 있으며, 여기서 N은 예를 들어 1, 2, 4, 8, 12, 16, 32, 64, 또는 그보다 넓은 임의의 지원된 링크 폭이다.
차동 쌍은 레인(516 및 517)과 같이 차동 신호를 송신하는 두 개의 송신 경로를 말한다. 일 예로서, 회선(516)이 저전압 레벨에서 고전압 레벨로 토글할 때, 즉, 상승 에지일 때, 회선(517)은 하이 로직 레벨에서 로우 로직 레벨로, 즉 하강 에지로 진행한다. 차동 신호는 잠재적으로 더 양호한 신호 무결성(signal integrity), 즉 크로스-커플링, 전압 오버슈트/언더슈트, 링잉 등과 같은 더 양호한 전기적 특성을 보여준다. 이것은 더 양호한 타이밍 윈도우를 가능하게 해주며, 이것은 통신 주파수를 더 빠르게 해준다.
다음으로 도 6을 참조하면, 본 발명에 따른 시스템 온-칩(SoC) 디자인의 실시예가 도시된다. 특정한 예시적인 예로서, SoC(2000)는 사용자 장비(user equipment, UE)에 포함된다. 일 실시예에서, UE는 휴대폰, 스마트폰, 태블릿, 울트라-신 노트북, 광대역 어댑터를 갖춘 노트북, 또는 임의의 다른 유사 통신 장치와 같이 최종 사용자에 의해 통신하는데 사용되는 임의의 장치를 말한다. 종종 UE는 GSM 네트워크에서 사실상 아마도 이동국(mobile station, MS)에 해당하는 기지국이나 노드에 접속한다.
여기서, SoC(2000)는 2 코어(2006 및 2007)를 포함한다. 앞에서 논의한 바와 유사하게, 코어(2006 및 2007)는 인텔® 아키텍처 코어TM 기반의 프로세서, 어드번스드 마이크로 디바이스 인코포레이티드(AMD) 프로세서, MIPS 기반 프로세서, ARM 기반 프로세서 디자인, 또는 이들의 고객뿐만 아니라 이들의 판매권 소유자 또는 어댑터(adoptor)와 같은 명령어 집합 아키텍처를 준용할 수 있다. 코어(2006 및 2007)는 버스 인터페이스 유닛(2009) 및 L2 캐시(2011)와 연관된 캐시 제어(2008)에 결합되어 시스템(2000)의 다른 부품과 통신한다. 인터커넥트(2010)는 앞에서 논의한 바와 같이, 본 명세서에서 설명된 하나 이상의 양태를 잠재적으로 구현하는IOSF, AMBA, 또는 다른 인터커넥트와 같은 온-칩 인터커넥트를 포함한다.
인터커넥트(2010)는 SIM 카드와 인터페이스하는 가입자 식별 모듈(Subscriber Identity Module, SIM)(2030), 코어(2006 및 2007)에 의해 실행하기 위한 부팅 코드를 보유하여 SOC(2000)를 초기화하고 부팅하는 부팅 롬(2035), 외부 메모리(예를 들면, DRAM(2060))와 인터페이스하는 SDRAM 컨트롤러(2040), 비휘발성 메모리(예를 들면, 플래시(2065))와 인터페이스하는 플래시 컨트롤러(2045), 주변기기와 인터페이스하는 주변기기 컨트롤러(2050), 입력(예를 들면, 터치에 의한 입력)을 디스플레이하고 수신하는 비디오 코덱(2020) 및 비디오 인터페이스(2025), 그래픽 관련 계산을 수행하는 GPU(2015) 등과 같은 다른 컴포넌트에 통신 채널을 제공한다. 이러한 인터페이스 중 임의의 인터페이스는 본 명세서에서 설명된 양태를 포함할 수 있다.
또한 시스템은 블루투스 모듈(2070), 3G 모뎀(2075), GPS(2080), 및 WiFi(2085)와 같은 통신을 위한 주변기기를 예시한다. 시스템에는 또한 전력 컨트롤러(2055)가 포함된다. 앞에서 언급한 바와 같이, UE는 통신을 위한 무선 디바이스를 포함한다는 것을 주목하자. 결과적으로, 이러한 주변 통신 모듈은 모두 필요한 것은 아니다. 그러나 UE에서, 외부 통신을 위한 몇몇 형태의 무선 디바이스가 포함될 것이다.
다양한 실시예에서, 특정 인터커넥트를 거쳐 연결된 하나 이상의 디바이스의 회로의 적어도 일부분은 디바이스의 구성에 의해 그러한 회로가 사용되지 않을 것이 확인될 때 전력 제어(예를 들면, 전력 조절)될 수 있다. 본 명세서에서 기술된 실시예의 일 예로서, 인터커넥트를 통해 통신을 제공하는 하나 이상의 가상 채널과 연관된 회로는 디바이스의 구성에 의해 그러한 회로가 통신에 사용되지 않을 것이 확인될 때 (예를 들면, 그러한 회로에 동작 전압을 제공하지 않음으로써) 전력 공급 중단 상태에 놓일 수 있다. 물론 실시예는 이러한 예로 제한되지 않으며, 본 명세서에서 설명된 기술은 다른 회로의 전력 제어에도 동일하게 적용한다.
도 7은 본 발명의 실시예에 따른 시스템의 블록도이다. 도 7에서 도시된 바와 같이, 시스템(700)은 각종 디바이스가 스위치(720)에 연결된 PCIeTM 시스템의 구현예이다. 각각의 디바이스는 각기 대응하는 링크(링크 1-4)에 의해 스위치(720)에 연결된다. 실시예에서, 각각의 링크는 상이한 특징 및 동작 파라미터를 가질 수 있다는 것을 주목하자.
예로서, 디바이스(730, 740 및 750)는 상이한 종류의 주변 디바이스일 수 있다. 한가지 그러한 예로서, 디바이스(730)는 그래픽 가속기 디바이스일 수 있고, 디바이스(740)는 저장 디바이스일 수 있으며, 디바이스(750)는 다른 종류의 휴대형 디바이스, 예를 들면 캡처 디바이스일 수 있다. 스위치(720)에는 또한 다른 링크(링크 4)에 의해 루트 콤플렉스(710)가 연결된다. 일 예로서, 루트 콤플렉스(710)는 멀티코어 프로세서와 같이 시스템의 주요 데이터 프로세서일 수 있다. 물론 콤플렉스의 다른 예가 가능하다.
특히 스위치(720)와 디바이스(730) 사이의 연결을 언급하자면, 가상 채널의 개수는 디바이스마다 다르게 제공된다. 보는 바와 같이, 본 예에서 스위치(720)는 8개의 가상 채널을 포함하는데, 각각의 가상 채널은 링크 인터페이스(725)에서 대응하는 하드웨어 버퍼를 갖고 있다. 대신에, 디바이스(730)는 단지 4개의 가상 채널을 포함하며 그래서 단지 4개의 하드웨어 버퍼를 포함하는 링크 인터페이스(735)를 갖는다. 이러한 디바이스는 전혀 다른 개수의 가상 채널 및 버퍼를 갖기 때문에, 스위치(720)의 링크 인터페이스(725) 내부의 버퍼 중 적어도 일부의 버퍼는 사용되지 않을 것이다. 따라서, 본 발명의 실시예를 이용하여, 이들 버퍼는 하드웨어적으로 작동 불능 처리되어 이들 버퍼로 인한 전력 소모가 방지되도록 한다. 도 7의 실시예에서는 이와 같은 특정한 구현예로 도시되지만, 많은 변형 예가 가능함은 물론이다.
이제 도 8을 참조하면, 본 발명의 실시예에 따른 구성 방법의 흐름도가 도시된다. 특정 실시예에서, 방법(800)은 링크를 통해 함께 연결된 디바이스의 구성 로직에 의한 디바이스 초기화 동안 수행될 수 있다. 그뿐만 아니라, 방법은 또한 디바이스 또는 링크를 통해 디바이스에 연결된 하드웨어에서 임의의 변경이 있을 때마다 동적으로 수행될 수 있다. 예를 들어, 만일 새로운 디바이스가 엔드포인트에 연결되면, 링크는 재정비될 것이며 구성 로직은 이에 따라서 소정의 결정된 값을 다시 할당할 것이다. 도 8을 참조하면, 방법(800)은 구성 저장소의, 로컬 디바이스나 엔드포인트의, 그리고 이들 2 디바이스를 연결하는 링크의 먼 위치에서 배치되어 있는 원격 디바이스나 엔드포인트의 확장된 VC 카운트 필드를 읽음으로써 시작한다(블록(810) 및 블록(820)). 일 실시예에서, 이와 같은 확장된 VC 카운트 필드는 대응하는 디바이스의 저장소에 예를 들면, PCIeTM 구성 공간 내부에 저장될 수 있다. 설명 목적상 로컬 디바이스(엔드포인트 1)가 도 7의 스위치(720)에 대응하며 원격 디바이스(엔드포인트 2)가 도 7의 디바이스(730)에 대응한다고 가정한다.
앞에서 언급한 (스위치(720)에 8개의 가상 채널 및 버퍼가 존재하고 디바이스(730)에 4개의 가상 채널 및 버퍼가 존재하는) 내용에 따르면, 스위치 디바이스(720)로부터 반환된 확장된 VC 카운트 필드의 값은 8이 될 것이며, 디바이스(730)로부터 반환된 값은 4일 것이다. 특히 이러한 카운트 필드가 3-비트 필드인 실시예에서, 0의 값은 지원되는 단일의 가상 채널 (예를 들면, VC0)에 대응하며 이러한 3-비트 이진 값 중의 1-7 값은 지원되는 VC의 추가 개수에 대응한다. 그래서 본 실시예에서, 스위치(720)에 대한 확장된 VC 카운트 필드는 111b라는 값을 가지며 디바이스(730)에 대한 확장된 VC 카운트 필드는 011b라는 카운트를 갖는다. 물론 다른 표현이 가능하다.
도 8을 계속 참조하면, 후속 제어는 판단 블록(830)으로 진행하고 여기서 로컬 디바이스에 대한 VC 카운트가 원격 디바이스에 대한 VC 카운트보다 큰지의 여부가 결정될 수 있다. 만일 크다면, 제어는 블록(835)으로 진행하고 여기서 링크 최대 VC 값이 원격 디바이스로부터의 확장된 VC 카운트 필드로 설정될 수 있다. 이러한 링크 최대 VC 값 또는 VC ID 값은 접속된 엔드포인트의 확장된 VC 카운트 필드의 최대 값에 대응한다는 것을 주목하자. 그래서 이러한 사례에서, 이와 같은 링크 최대 VC 값은 011b라는 값으로 설정된다.
그러나 만일 크지 않다면, 그 대신 제어는 판단 블록(830)에서 판단 블록(840)으로 진행하고 여기서 로컬 디바이스에 대한 VC 카운트가 원격 디바이스에 대한 VC 카운트와 동일한지가 결정될 수 있다. 만일 동일하면, 제어는 블록(845)으로 진행하고 여기서 링크 최대 VC 값은 로컬 디바이스로부터의 확장된 VC 카운트 필드로 설정될 수 있다. 동일하지 않다면, 제어는 판단 블록(850)으로 진행하고 여기서 로컬 디바이스에 대한 VC 카운트가 원격 디바이스에 대한 VC 카운트보다 적은지가 결정된다. 이 경우, 제어는 블록(850)으로 진행하고 여기서 링크 최대 VC 값은 로컬 디바이스로부터의 확장된 VC 카운트 필드로 설정될 수 있다.
블록(835, 845, 및 855) 중 한 블록에서 설정된 링크 최대 VC 값에 상관없이, 제어는 블록(860)으로 진행하며, 여기서 이러한 링크 최대 VC 값을 가진 테이블 저장소와 같은 구성 저장소가 액세스될 수 있다. 구체적으로, 이와 같은 테이블에 액세스함으로써 선택된 링크 최대 VC 값의 다른 표현이 취득될 수 있다. 도 9a와 관련하여 추가로 도시되는 바와 같이, 테이블은 복수의 엔트리를 포함할 수 있고, 각각의 엔트리는 최대 링크 VC 값의 3-비트 표현 및 같은 값의 대응하는 8-비트 표현을 제공한다. 그렇게 해서 제어는 블록(870)으로 진행하고 여기서 액세스된 엔트리의 개개의 비트가 취득될 수 있는데, 여기서 각각의 비트는 가용 개수의 가상 채널 중 하나에 대응하며 그리고 대응하는 하드웨어 버퍼의 인에이블된 상태를 나타낸다. 즉, 일 예로 로직 0 값은 활성 상태의 버퍼를 표시하고 이에 따라 대응하는 인에이블된 상태를 표시하며, 로직 1 값은 비활성 상태의 버퍼를 표시하고 이에 따라 대응하는 디스에이블된 상태를 표시한다. 물론 다른 표현이 가능하다.
이제 도 9a를 참조하면, 실시예에 따른 구성 저장소의 블록도가 도시된다. 도 9a에서 도시된 바와 같이, 저장소(900)는 시스템 내부의 요구된 장소에 예를 들면 별도의 비휘발성 저장소 내에 존재할 수 있다. 그게 아니면 예를 들면 시스템의 각 디바이스의 구성 공간 내에 구성 저장소(900) 내의 정보의 사본이 존재할 수 있다. 또 다른 실시예는 이러한 정보를 외부 레지스터 또는 판독 전용 메모리와 같은 또 다른 장소 내에 저장할 수 있다. 보는 바와 같이, 저장소(900)는 복수의 엔트리(9100 - 910n)을 포함한다. 각각의 엔트리는 제 1 필드(920) 및 제 2 필드(930)를 포함한다. 제 1 필드(920)는 최대 링크 VC 값에 대응할 수 있고 그래서 저장소(900)의 선택된 엔트리에 액세스하기 위한 어드레스 가능한 수단으로서 사용된다. 다음으로 제 2 필드(930)는 최대 링크 VC 값의 대응하는 8-비트 표현을 제공한다. 실시예에서, VC ID로부터 맵핑되는 8-비트 값은 각각의 비트가 그 엔드포인트의 가상 채널 버퍼 또는 그 엔드포인트의 다른 레인 맵핑에 대응하도록 하는 그런 값일 수 있는데, 예를 들면 비트 0는 VC0에 맵핑하고, 비트 1은 VC1에 맵핑하며 최종적으로 비트 7은 VC7에 맵핑한다. 이러한 실시예에서, 이진수 1은 '파워 온' 상태를 나타내는 반면 0는 '파워 오프'를 나타낸다. 실시예에서, 이러한 상태는 동작 전압을 버퍼에 제공하는 것을 제어하는 (아니면 그와 달리 동작 전압을 제공하지 않는) 각 버퍼의 전압 제어 회로에 보내진다.
다음으로 도 9b를 참조하면, 테이블로부터 취득한 선택된 엔트리(910x) 및 이를 이용하여 동작 전압을 디바이스의 대응하는 하드웨어 버퍼로 제공하는 것을 제어하는 것이 도시된다. 구체적으로 도 9b는 한 세트의 AND 게이트(9500 - 950n)를 도시한다. 이러한 각각의 로직 게이트는 선택된 엔트리로부터 대응하는 비트 및 예를 들어 오프-칩 전압 조정기로부터 취득되는 대응하는 동작 전압을 수신하도록 구성된다. 물론 동작 전압은 그대신 다른 장소, 즉 온-칩 또는 오프-칩 중 어느 한 곳으로부터 수신될 수 있다. 주어진 비트가 로직 하이 값을 가지면, AND 게이트는 활성상태이고 그래서 동작 전압은 대응하는 하드웨어 버퍼로 제공된다. 그렇지 않으면, AND 게이트는 동작 전압을 버퍼로 전달하지 않으며, 버퍼는 정상 동작 중에 디스에이블되고, 그래서 전력 소비를 줄이게 된다. 도 9b의 실시예에서 이와 같이 하이 레벨로 도시되지만, 변형 예가 가능함은 물론이다.
이제 도 10을 참조하면, 실시예에 따른 시스템의 일부분의 블록도가 도시된다. 도 10에 도시된 바와 같이, 시스템(1000)은 다양한 컴포넌트를 포함할 수 있다. 본 명세서에서 설명 목적상, 간단하게 두 개의 컴포넌트 즉 링크(1005)를 통해 다른 회로(도시되지 않음)에 연결된 임의의 종류의 집적 회로일 수 있는 디바이스(1010), 및 링크(1090)을 통해 연결된 비휘발성 저장소(1080)가 도시된다. 도시된 실시예에서, 링크(1005)는 송신 방향 및 수신 방향의 양방향 직렬 링크를 가진 PCIe™ 링크일 수 있다.
디바이스(1010)는 루트 콤플렉스(root complex), 스위치, 또는 주변 기기 등을 비롯한 임의의 유형의 디바이스일 수 있다. 용이한 예시를 위해 디바이스(1010)의 적절한 부분이 도시된다. 구체적으로, 한 세트의 수신 버퍼(10250-1025n)가 제공된다. 각각의 이러한 하드웨어 버퍼는 특정의 가상 채널(VC0-VCn)에 대응할 수 있다. 또한, 한 세트의 송신 버퍼(10200-1020n)가 또한 제공되며, 마찬가지로 각각의 버퍼는 특정의 가상 채널과 연관된다. 각종 트래픽 클래스(traffic class, TC)는 특정 VC 및 대응하는 하드웨어 버퍼를 통해 라우팅되도록 할당될 수 있다. 본 발명의 실시예를 이용하여, 이러한 가상 채널 하드웨어 버퍼 중에서 인에이블된 하드웨어 버퍼만이 동작 전압을 게이트 로직(1060)을 통해 공급받을 수 있고, 그 결과 구성 로직(1050)으로부터 제어 정보를 수신하는데, 이에 관한 상세 내용은 아래에서 추가로 설명된다.
계속 디바이스(1010)를 참조하면, 버퍼(1020 및 1025)는 물리 계층의 다른 회로(도 10에서는 용이한 예시를 위해 도시되지 않음)와 통신할 수 있다. 다른 회로로부터, 통신신호는 각종 링크 계층 처리를 수행하는 링크 로직(1030)으로 진행할 수 있다. 이후, 통신신호는 트랜잭션 계층 처리를 수행할 수 있는 트랜잭션 로직(1035)으로 진행할 수 있다. 이후, 디바이스(1010)의 주요 로직 회로일 수 있는 코어 로직(1040)과 통신이 이루어질 수 있다. 예를 들면, 멀티코어 프로세서의 맥락에서, 코어 로직(1040)은 하나 이상의 프로세서 코어 또는 다른 처리 유닛일 수 있다. 다른 예로서 디바이스(1010)가 그래픽 가속기 디바이스인 경우, 코어 로직(1040)은 그래픽 처리 유닛일 수 있다.
도 10에는 또한 시스템(1000)이 파워 온될 때, 디바이스(1010)가 리셋될 때, 또는 동작 중에 다른 동적인 변화가 발생할 때 구성 작업(configuration operation)을 수행하기 위해 사용되는 하드웨어, 소프트웨어 및/또는 펌웨어(또는 이들의 조합)일 수 있는 구성 로직(1050)이 도시된다. 실시예에서, 구성 로직(1050)은 본 명세서에서 설명된 전력 관리 제어를 수행하는 로직을 포함할 수 있다. 그러므로 도 10에서 도시된 실시예에서, 구성 로직(1050)은 앞에서 논의된 방법(800)과 같은 방법을 실행하도록 구성될 수 있는 전력 관리 로직(1055)을 포함한다.
이러한 목적을 위해, 구성 로직(1050)은 구성 저장소(1070)와 통신할 수 있다. 다양한 실시예에서, 구성 저장소(1070)는 PCIeTM 구성 저장 공간을 포함하는 디바이스(1010)의 비휘발성 저장소일 수 있다. 이곳에 저장되는 각종 구성 정보 중에서 본 명세서에서 기술된 바와 같은 확장된 VC 카운트 필드(1075)가 이곳에 저장된다. 물론 부가적인 구성 정보가 또한 구성 저장소(1070) 내에 저장된다.
특정 실시예에서, 3-비트의 최대 VC 카운트 값을 대응하는 8-비트 값에 연계시키는 맵핑 테이블이 제공될 수 있다. 물론 가능한 가상 채널, 하드웨어 버퍼, 또는 제어되는 다른 회로의 양에 따라서, 코딩된 비트의 개수 및 개개 비트의 표현이 바뀔 수 있다. 도시된 실시예에서, 개개의 비휘발성 저장소(1080)는 맵핑 테이블(1085)을 포함할 수 있다. 맵핑 테이블(1085)은 최대 VC 카운트 값을 레인 맵핑에 연계시킬 수 있다. 달리 말하자면, 지원되는 최대 개수의 가상 채널의 개수의 표시는 동작 전압이 하나 이상의 하드웨어 버퍼 - 각각의 하드웨어 버퍼는 대응하는 가상 채널과 연관됨 - 에 제공되는지를 관리하는데 사용될 수 있는 대응 세트의 인에이블 표시자에 맵핑될 수 있다. 물론 본 실시예에서는 인에이블된 가상 채널에 기초하여 하드웨어 버퍼를 제어하는 것을 설명하였지만, 디바이스 내 부가적인 하드웨어도 마찬가지로 제어될 수 있음은 물론이다. 예로서, 레인별로 또는 가상 채널 단위로 제어될 수 있는 그와 같은 부가적인 하드웨어는 그래픽 카드, USB-대-PCIeTM 이나 SATA-대-PCIeTM 카드와 같은 도터 카드(daughter card) 또는 다른 그와 같은 디바이스를 포함할 수 있다.
그러므로 실시예는 VC 하드웨어 버퍼와 같은 미사용 하드웨어를 예를 들면 구성 로직에 의한 구성 제어 하에서 전력 공급이 중단되도록 할 수 있다. 이러한 방법에서, 실제로 사용되는 하드웨어만이 전력 공급을 받으므로 시스템 전력이 저감될 수 있다.
다음의 예는 또 다른 실시예와 관련된다.
예에서, 장치는 복수의 하드웨어 버퍼 - 각각의 하드웨어 버퍼는 하나 이상의 가상 채널과 연관된 정보를 저장함 - 와, 링크를 통해 연결된 제 1 디바이스 및 제 2 디바이스에 의해 공통으로 지원되는 가상 채널의 최대 개수에 대응하는 식별자를 결정하고 상기 식별자에 기초하여 제어 값을 취득하는 구성 로직과, 제어 값에 기초하여 동작 전압을 상기 복수의 하드웨어 버퍼의 대응하는 버퍼에 제공하는 게이트 로직을 포함한다.
실시예에서, 게이트 로직은 상기 가상 채널의 최대 개수가 상기 복수의 하드웨어 버퍼보다 적을 때 상기 동작 전압이 상기 복수의 하드웨어 버퍼 중 적어도 하나의 하드웨어 버퍼에 제공되지 않도록 구성될 수 있다.
예에서, 상기 구성 로직은 상기 제 1 디바이스와 연관된 제 1 가상 채널 카운트 및 상기 제 2 디바이스와 연관된 제 2 가상 채널 카운트에 기초하여 가상 채널의 상기 최대 개수를 결정한다.
예에서, 구성 로직은 상기 제 1 디바이스의 구성 저장소의 가상 채널 카운트 필드로부터 상기 제 1 가상 채널 카운트를 취득하고 상기 제 2 디바이스의 구성 저장소의 가상 채널 카운트 필드로부터 상기 제 2 가상 채널 카운트를 취득한다.
예에서, 게이트 로직은 복수의 로직 회로를 포함하며, 각각의 로직 회로는 상기 제어 값의 비트 및 상기 동작 전압을 수신하고 상기 비트의 값에 기초하여 상기 동작 전압을 상기 복수의 하드웨어 버퍼 중 하나의 버퍼에 제공한다.
예에서, 비휘발성 저장소는 복수의 엔트리를 갖는 맵핑 테이블을 구비 - 각각의 엔트리는 식별자를 제어 값과 연관시킴 - 하며 장치에 연결될 수 있다. 실시예에서, 구성 로직은 상기 식별자를 이용하여 액세스되는 상기 맵핑 테이블의 엔트리로부터 상기 제어 값을 취득한다. 제어 값은 복수의 비트를 포함할 수 있으며, 각각의 비트는 상기 복수의 하드웨어 버퍼 중의 하나의 하드웨어 버퍼와 연관되고, 제 1 상태의 상기 비트의 각각은 상기 연관된 하드웨어 버퍼가 인에이블되는 것을 표시하고 제 2 상태의 상기 비트의 각각은 상기 연관된 하드웨어 버퍼가 디스에이블되는 것을 표시한다.
예에서, 제 1 디바이스는 상기 제 1 디바이스에 의해 지원되는 가상 채널의 상기 최대 개수의 카운트를 저장하고 또한 상기 맵핑 테이블의 하나 이상의 엔트리의 사본을 저장하는 구성 저장소를 포함한다. 실시예에서, 비휘발성 저장소는 상기 제 1 디바이스와 별개의 컴포넌트이고 제 2 링크를 통해 상기 제 1 디바이스에 연결된다.
전술한 디바이스는 다양한 수단을 이용하여 구현될 수 있다는 것을 주목하자.
예에서, 프로세서는 사용자 디바이스 터치 가능 디바이스에서 통합되는 시스템 온 칩(system on chip, SoC)을 포함한다.
다른 예에서, 시스템은 디스플레이 및 메모리를 포함하고, 전술한 예 중의 하나 이상의 예의 디바이스를 구비한다.
다른 예에서, 방법은 링크를 통해 연결된 제 1 엔드포인트 및 제 2 엔드포인트에 의해 지원 가능한 가상 채널의 공통 개수를 결정하는 단계와, 가상 채널의 공통 개수에 대응하는 제어 설정을 취득하기 위해 상기 가상 채널의 공통 개수를 이용하여 저장소에 액세스하는 단계와, 제어 설정에 기초하여 동작 전압을 상기 제 1 엔드포인트의 선택된 제 1 하드웨어 버퍼 및 상기 제 2 엔드포인트의 선택된 제 2 하드웨어 버퍼에 제공하는 단계를 포함한다.
예에서, 상기 동작 전압을 제공하는 단계는 상기 동작 전압을 상기 선택된 제 1 및 제 2 하드웨어 버퍼에 제공하고, 상기 동작 전압을 선택되지 않은 제 1 하드웨어 버퍼 및 선택되지 않은 제 2 하드웨어 버퍼에 제공하지 않는 단계를 포함한다.
예에서, 방법은 상기 선택된 제 1 하드웨어 버퍼 및 상기 선택된 제 2 하드웨어 버퍼를 이용하여 상기 제 1 엔드포인트와 상기 제 2 엔드포인트 사이에서 데이터를 전달하는 단계를 더 포함한다.
예에서, 방법은 상기 링크의 구성 동안, 상기 가상 채널의 공통 개수를 이용하여 상기 저장소에 액세스하는 단계를 더 포함하며, 상기 저장소는 상기 제 1 및 제 2 엔드포인트와 별개이고 복수의 엔트리를 포함하며, 각각의 엔트리는 가상 채널의 공통 개수 및 제어 설정을 저장한다.
예에서, 방법은 상기 링크의 재구성에 응답하여, 상기 제 1 및 제 2 엔드포인트에 의해 지원 가능한 가상 채널의 제 2 공통 개수를 결정하는 단계와, 제 2 제어 설정을 취득하기 위해 상기 가상 채널의 제 2 공통 개수를 이용하여 저장소에 액세스하는 단계와, 제 2 제어 설정에 기초하여 동작 전압을 상기 선택된 제 1 하드웨어 버퍼와 상이한 상기 제 1 하드웨어 버퍼 중의 버퍼 및 상기 선택된 제 2 하드웨어 버퍼와 상이한 상기 제 2 하드웨어 버퍼 중의 버퍼에 제공하는 단계를 더 포함한다.
다른 예에서, 명령어를 포함하는 컴퓨터 판독가능한 매체는 전술한 예 중 어느 예의 방법을 수행한다.
다른 예에서, 장치는 전술한 예 중의 어느 한 예의 방법을 수행하는 수단을 포함한다.
또 다른 예에서, 장치는 장치를 상기 장치와 제 2 디바이스 사이에 연결된 링크와 인터페이스하는 제 1 링크 인터페이스 - 상기 제 1 링크 인터페이스는 복수의 독립적인 회로를 포함하고, 각각의 회로는 대응하는 트래픽 클래스의 데이터를 전달함 - 와, 복수의 독립적인 회로의 개수에 대응하는 최대 지원 가능 값을 저장하는 제 1 구성 저장소와, 상기 제 1 구성 저장소에 저장된 상기 최대 지원 가능 값과 상기 제 2 디바이스의 제 2 구성 저장소에 저장된 최대 지원 가능 값 중의 최소치에 대응하는 링크 최대 값을 결정하고 상기 링크 최대 값의 상이한 표현을 취득하는 구성 로직과, 링크 최대 값이 상기 복수의 독립적인 회로의 개수보다 적을 때, 상기 상이한 표현에 응답하여 상기 복수의 독립적인 회로 중의 제 1 세트를 인에이블하고 상기 복수의 독립적인 회로 중의 제 2 세트를 디스에이블하는 제어 로직을 포함한다.
예에서, 제 1 구성 저장소에 저장된 상기 최대 지원 가능 값은 또한 상기 장치의 가상 채널 카운트 값에 대응한다.
예에서, 상기 장치에 연결된 비휘발성 저장소는 복수의 엔트리를 갖는 맵핑 테이블을 구비하고, 각각의 엔트리는 링크 최대 값을 상기 링크 최대 값의 상이한 표현과 연관시킨다. 맵핑 테이블은 상기 구성 로직에 의해 결정되는 상기 링크 최대 값을 이용하여 액세스될 수 있다.
예에서, 상이한 표현은 복수의 비트를 포함하며, 각각의 비트는 상기 복수의 독립적인 회로의 하나의 독립적인 회로와 연관되고, 제 1 상태의 상기 비트의 각각은 상기 연관된 독립적인 회로가 인에이블되는 것을 표시하고 제 2 상태의 상기 비트의 각각은 상기 연관된 독립적인 회로가 디스에이블되는 것을 표시한다.
예에서, 상기 제어 회로는 복수의 로직 회로를 포함하며, 각각의 로직 회로는 상기 상이한 표현의 복수의 비트 중 한 비트 및 전압 조정기로부터의 동작 전압을 수신하고 상기 비트의 값에 기초하여 상기 동작 전압을 상기 복수의 독립적인 회로 중 하나의 독립적인 회로에 제공한다.
예에서, 상기 복수의 독립적인 회로는 각기 가상 채널과 연관된 하드웨어 버퍼를 포함한다.
또 다른 예에서, 시스템은 복수의 제 1 하드웨어 버퍼를 갖는 제 1 링크 인터페이스를 구비하는 제 1 디바이스 - 각각의 하드웨어 버퍼는 하나 이상의 가상 채널과 연관된 정보를 저장함 - 와, 링크를 통해 상기 제 1 디바이스에 연결된 제 2 디바이스를 포함한다. 실시예에서, 제 2 디바이스는 복수의 제 2 하드웨어 버퍼를 갖는 제 2 링크 인터페이스 - 각각의 하드웨어 버퍼는 상기 가상 채널 중의 하나 이상의 가상 채널과 연관된 정보를 저장하고, 상기 복수의 제 2 하드웨어 버퍼는 상기 복수의 제 1 하드웨어 버퍼보다 더 많음 - 와, 제 1 디바이스 및 제 2 디바이스에 의해 공통으로 지원되는 가상 채널의 최대 개수를 결정 - 상기 최대 개수는 상기 복수의 제 1 하드웨어 버퍼의 상기 개수에 대응함 - 하고 상기 최대 개수에 기초하여 제어 값을 취득하는 컨트롤러와, 상기 제어 값에 응답하여 상기 복수의 제 2 하드웨어 버퍼를 전체보다 적게 해주는 게이트 로직을 포함한다.
예에서, 상기 제 1 디바이스는 제 1 최대 가상 채널 카운트를 구비하는 제 1 구성 저장소를 포함하며, 상기 제 2 디바이스는 제 2 최대 가상 채널 카운트를 구비하는 제 2 구성 저장소를 포함한다.
예에서, 상기 컨트롤러는 상기 제 1 최대 가상 채널 카운트 및 상기 제 2 최대 가상 채널 카운트를 이용하여 상기 공통으로 지원되는 가상 채널의 최대 개수를 결정한다.
예에서, 비휘발성 저장소는 복수의 엔트리를 갖는 맵핑 테이블을 구비하며, 각각의 엔트리는 공통으로 지원되는 가상 채널의 최대 개수를 연관시킨다.
예에서, 상기 컨트롤러는 상기 공통으로 지원되는 가상 채널의 결정된 최대 개수를 이용하여 액세스되는 상기 맵핑 테이블의 엔트리로부터 상기 제어 값을 취득할 수 있다. 실시예에서, 제어 값은 복수의 비트를 포함하며, 각각의 비트는 상기 복수의 제 2 하드웨어 버퍼 중의 하나의 하드웨어 버퍼와 연관되고, 제 1 상태의 상기 비트의 각각은 상기 연관된 제 2 하드웨어 버퍼가 인에이블되는 것을 표시하고 제 2 상태의 상기 비트의 각각은 상기 연관된 제 2 하드웨어 버퍼가 디스에이블되는 것을 표시한다.
예에서, 상기 게이트 로직은 복수의 로직 회로를 포함하며, 각각의 로직 회로는 상기 제어 값의 한 비트 및 동작 전압을 수신하고 상기 비트의 값에 기초하여 상기 동작 전압을 상기 복수의 제 2 하드웨어 버퍼 중 하나의 하드웨어 버퍼에 제공한다.
전술한 예들의 다양한 조합이 가능하다는 것을 이해하여야 한다.
실시예는 많은 여러 형태의 시스템에서 사용될 수 있다. 예를 들면, 일 실시예에서, 통신 디바이스는 본 명세서에서 설명되는 다양한 방법 및 기술을 수행하도록 구성될 수 있다. 물론, 본 발명의 범주는 통신 디바이스로 한정되지 않으며, 그 대신 다른 실시예는 명령어를 처리하는 다른 형태의 장치, 또는 컴퓨팅 디바이스에서 실행됨에 따라서 디바이스로 하여금 본 명세서에서 설명된 방법 및 기술 중 한가지 이상을 실행하게 하는 명령어를 포함하는 하나 이상의 머신 판독 가능한 매체에 관한 것일 수 있다.
실시예는 코드로 구현될 수 있으며 명령어를 수행하기 위해 시스템을 프로그래밍하는데 사용될 수 있는 명령어가 저장된 비일시적 저장 매체에 저장될 수 있다. 저장 매체는 이것으로 한정되는 것은 아니지만, 전자 명령어를 저장하기에 적합한 플로피 디스크, 광 디스크, 고체 상태 드라이브(solid state drive, SSD), 콤팩트 디스크 판독 전용 메모리(compact disk read-only memory, CD-ROM), 콤팩트 디스크 리라이터블(compact disk rewritable, CD-RW), 광자기 디스크를 포함하는 임의의 형태의 디스크, 판독 전용 메모리(read-only memory, ROM)와 같은 반도체 디바이스, 다이나믹 랜덤 액세스 메모리(dynamic random access memory, DRAM), 스태틱 랜덤 액세스 메모리(static random access memory, SRAM)와 같은 랜덤 액세스 메모리(RAM), 소거가능한 프로그래머블 판독 전용 메모리(erasable programmable read-only memory, EPROM), 플래시 메모리, 전기적으로 소거가능한 프로그래머블 판독 전용 메모리(electrically erasable programmable read-only memory, EEPROM), 자기 또는 광학 카드, 또는 임의의 다른 유형의 매체를 포함할 수 있다.
본 발명이 제한된 수의 실시예에 대해 설명되었지만, 본 기술분야에서 통상의 지식을 가진 자라면 그로부터의 수많은 수정 및 변형을 인식할 것이다. 첨부된 청구범위는 본 발명의 진정한 사상 및 범주에 속하는 그러한 모든 수정 및 변형을 포괄하고자 한다.

Claims (27)

  1. 복수의 하드웨어 버퍼 - 각각의 하드웨어 버퍼는 하나 이상의 가상 채널과 연관된 정보를 저장함 - 와,
    링크를 통해 연결된 제 1 디바이스 및 제 2 디바이스에 의해 공통으로 지원되는 가상 채널의 최대 개수에 대응하는 식별자를 결정하고 상기 식별자에 기초하여 제어 값을 취득하는 구성 로직과,
    상기 제어 값에 기초하여 동작 전압을 상기 복수의 하드웨어 버퍼의 대응하는 버퍼에 제공하는 게이트 로직 - 상기 게이트 로직은 상기 가상 채널의 최대 개수가 상기 복수의 하드웨어 버퍼보다 적을 때 상기 동작 전압이 상기 복수의 하드웨어 버퍼 중 적어도 하나의 하드웨어 버퍼에 제공되지 않게 함 - 을 포함하는
    장치.
  2. 제 1 항에 있어서,
    상기 구성 로직은 상기 제 1 디바이스와 연관된 제 1 가상 채널 카운트 및 상기 제 2 디바이스와 연관된 제 2 가상 채널 카운트에 기초하여 상기 가상 채널의 최대 개수를 결정하는
    장치.
  3. 제 2 항에 있어서,
    상기 구성 로직은 상기 제 1 디바이스의 구성 저장소의 가상 채널 카운트 필드로부터 상기 제 1 가상 채널 카운트를 취득하고 상기 제 2 디바이스의 구성 저장소의 가상 채널 카운트 필드로부터 상기 제 2 가상 채널 카운트를 취득하는
    장치.
  4. 제 1 항에 있어서,
    상기 게이트 로직은 복수의 로직 회로를 포함하며, 각각의 로직 회로는 상기 제어 값의 비트 및 상기 동작 전압을 수신하고 상기 비트의 값에 기초하여 상기 동작 전압을 상기 복수의 하드웨어 버퍼 중 하나의 버퍼에 제공하는
    장치.
  5. 제 1 항에 있어서,
    복수의 엔트리를 갖는 맵핑 테이블을 구비하는 비휘발성 저장소를 더 포함하며, 각각의 엔트리는 식별자를 제어 값과 연관시키는
    장치.
  6. 제 5 항에 있어서,
    상기 구성 로직은 상기 식별자를 이용하여 액세스되는 상기 맵핑 테이블의 엔트리로부터 상기 제어 값을 취득하는
    장치.
  7. 제 6 항에 있어서,
    상기 제어 값은 복수의 비트를 포함하며, 각각의 비트는 상기 복수의 하드웨어 버퍼 중의 하나의 하드웨어 버퍼와 연관되고, 제 1 상태의 상기 비트의 각각은 상기 연관된 하드웨어 버퍼가 인에이블되는 것을 표시하고 제 2 상태의 상기 비트의 각각은 상기 연관된 하드웨어 버퍼가 디스에이블되는 것을 표시하는
    장치.
  8. 제 5 항에 있어서,
    상기 제 1 디바이스는 상기 제 1 디바이스에 의해 지원되는 상기 가상 채널의 최대 개수의 카운트를 저장하는 구성 저장소를 포함하며, 상기 구성 저장소는 또한 상기 맵핑 테이블의 하나 이상의 엔트리의 사본을 저장하는
    장치.
  9. 제 8 항에 있어서,
    상기 비휘발성 저장소는 상기 제 1 디바이스와 별개의 컴포넌트이고 제 2 링크를 통해 상기 제 1 디바이스에 연결되는
    장치.
  10. 링크를 통해 연결된 제 1 엔드포인트 및 제 2 엔드포인트에 의해 지원 가능한 가상 채널의 공통 개수를 결정하는 단계와,
    상기 가상 채널의 공통 개수를 이용하여 저장소에 액세스하여 상기 가상 채널의 공통 개수에 대응하는 제어 설정을 취득하는 단계와,
    상기 제어 설정에 기초하여 동작 전압을 상기 제 1 엔드포인트의 선택된 제 1 하드웨어 버퍼 및 상기 제 2 엔드포인트의 선택된 제 2 하드웨어 버퍼에 제공하는 단계를 포함하는
    방법.
  11. 제 10 항에 있어서,
    상기 동작 전압을 제공하는 단계는 상기 동작 전압을 상기 선택된 제 1 및 제 2 하드웨어 버퍼에 제공하고, 상기 동작 전압을 선택되지 않은 제 1 하드웨어 버퍼 및 선택되지 않은 제 2 하드웨어 버퍼에는 제공하지 않는 단계를 포함하는
    방법.
  12. 제 10 항에 있어서,
    상기 선택된 제 1 하드웨어 버퍼 및 상기 선택된 제 2 하드웨어 버퍼를 이용하여 상기 제 1 엔드포인트와 상기 제 2 엔드포인트 사이에서 데이터를 전달하는 단계를 더 포함하는
    방법.
  13. 제 10 항에 있어서,
    상기 링크의 구성 동안, 상기 가상 채널의 공통 개수를 이용하여 상기 저장소에 액세스하는 단계를 더 포함하며, 상기 저장소는 상기 제 1 엔드포인트 및 상기 제 2 엔드포인트와 별개이고 복수의 엔트리를 포함하며, 각각의 엔트리는 가상 채널의 공통 개수 및 제어 설정을 저장하는
    방법.
  14. 제 13 항에 있어서,
    상기 링크의 재구성에 응답하여,
    상기 제 1 엔드포인트 및 상기 제 2 엔드포인트에 의해 지원 가능한 가상 채널의 제 2 공통 개수를 결정하는 단계와,
    상기 가상 채널의 제 2 공통 개수를 이용하여 저장소에 액세스하여 제 2 제어 설정을 취득하는 단계와,
    상기 제 2 제어 설정에 기초하여 상기 동작 전압을 상기 선택된 제 1 하드웨어 버퍼와 상이한 상기 제 1 하드웨어 버퍼 중의 버퍼 및 상기 선택된 제 2 하드웨어 버퍼와 상이한 상기 제 2 하드웨어 버퍼 중의 버퍼에 제공하는 단계를 더 포함하는
    방법.
  15. 장치로서,
    상기 장치와 제 2 디바이스 사이에 연결된 링크에 상기 장치를 인터페이스하는 제 1 링크 인터페이스 - 상기 제 1 링크 인터페이스는 복수의 독립적인 회로를 포함하고, 각각의 회로는 대응하는 트래픽 클래스의 데이터를 전달함 - 와,
    상기 복수의 독립적인 회로의 개수에 대응하는 최대 지원 가능 값(maximum supportable value)을 저장하는 제 1 구성 저장소와,
    상기 제 1 구성 저장소에 저장된 상기 최대 지원 가능 값과 상기 제 2 디바이스의 제 2 구성 저장소에 저장된 최대 지원 가능 값 중의 최소치에 대응하는 링크 최대 값을 결정하고 상기 링크 최대 값의 상이한 표현을 취득하는 구성 로직과,
    상기 링크 최대 값이 상기 복수의 독립적인 회로의 개수보다 적을 때, 상기 상이한 표현에 응답하여 상기 복수의 독립적인 회로 중의 제 1 세트를 인에이블하고 상기 복수의 독립적인 회로 중의 제 2 세트를 디스에이블하는 제어 로직을 포함하는
    장치.
  16. 제 15 항에 있어서,
    상기 제 1 구성 저장소에 저장된 상기 최대 지원 가능 값은 또한 상기 장치의 가상 채널 카운트 값에 대응하는
    장치.
  17. 제 15 항에 있어서,
    상기 장치에 연결된 비휘발성 저장소를 더 포함하며,
    상기 비휘발성 저장소는 복수의 엔트리를 갖는 맵핑 테이블을 구비하고, 각각의 엔트리는 링크 최대 값을 상기 링크 최대 값의 상이한 표현과 연관시키고, 상기 맵핑 테이블은 상기 구성 로직에 의해 결정되는 상기 링크 최대 값을 이용하여 액세스되는
    장치.
  18. 제 17 항에 있어서,
    상기 상이한 표현은 복수의 비트를 포함하며, 각각의 비트는 상기 복수의 독립적인 회로 중 하나의 독립적인 회로와 연관되고, 제 1 상태의 상기 비트의 각각은 상기 연관된 독립적인 회로가 인에이블되는 것을 표시하고 제 2 상태의 상기 비트의 각각은 상기 연관된 독립적인 회로가 디스에이블되는 것을 표시하는
    장치.
  19. 제 18 항에 있어서,
    상기 제어 회로는 복수의 로직 회로를 포함하며, 각각의 로직 회로는 상기 상이한 표현의 상기 복수의 비트 중 한 비트 및 전압 조정기로부터의 동작 전압을 수신하고 상기 비트의 값에 기초하여 상기 동작 전압을 상기 복수의 독립적인 회로 중 하나의 독립적인 회로에 제공하는
    장치.
  20. 제 15 항에 있어서,
    상기 복수의 독립적인 회로는 각기 가상 채널과 연관된 하드웨어 버퍼를 포함하는
    장치.
  21. 복수의 제 1 하드웨어 버퍼를 갖는 제 1 링크 인터페이스를 구비하는 제 1 디바이스 - 상기 복수의 제 1 하드웨어 버퍼 각각은 하나 이상의 가상 채널과 연관된 정보를 저장함 - 와,
    링크를 통해 상기 제 1 디바이스에 연결된 제 2 디바이스를 포함하며,
    상기 제 2 디바이스는,
    복수의 제 2 하드웨어 버퍼를 갖는 제 2 링크 인터페이스 - 상기 복수의 제 2 하드웨어 버퍼 각각은 상기 가상 채널 중의 하나 이상의 가상 채널과 연관된 정보를 저장하고, 상기 복수의 제 2 하드웨어 버퍼는 상기 복수의 제 1 하드웨어 버퍼보다 더 많음 - 와,
    상기 제 1 디바이스 및 상기 제 2 디바이스에 의해 공통으로 지원되는 가상 채널의 최대 개수를 결정 - 상기 최대 개수는 상기 복수의 제 1 하드웨어 버퍼의 상기 개수에 대응함 - 하고 상기 최대 개수에 기초하여 제어 값을 취득하는 컨트롤러와,
    상기 제어 값에 응답하여 상기 복수의 제 2 하드웨어 버퍼를 전체보다 적게 인에이블하는 게이트 로직을 포함하는
    시스템.
  22. 제 21 항에 있어서,
    상기 제 1 디바이스는 제 1 최대 가상 채널 카운트를 구비하는 제 1 구성 저장소를 포함하며, 상기 제 2 디바이스는 제 2 최대 가상 채널 카운트를 구비하는 제 2 구성 저장소를 포함하는
    시스템.
  23. 제 22 항에 있어서,
    상기 컨트롤러는 상기 제 1 최대 가상 채널 카운트 및 상기 제 2 최대 가상 채널 카운트를 이용하여 상기 공통으로 지원되는 가상 채널의 최대 개수를 결정하는
    시스템.
  24. 제 21 항에 있어서,
    복수의 엔트리를 갖는 맵핑 테이블을 구비하는 비휘발성 저장소를 더 포함하며, 각각의 엔트리는 공통으로 지원되는 가상 채널의 최대 개수를 연관시키는
    시스템.
  25. 제 24 항에 있어서,
    상기 컨트롤러는 상기 공통으로 지원되는 가상 채널의 결정된 최대 개수를 이용하여 액세스되는 상기 맵핑 테이블의 엔트리로부터 상기 제어 값을 취득하는
    시스템.
  26. 제 25 항에 있어서,
    상기 제어 값은 복수의 비트를 포함하며, 각각의 비트는 상기 복수의 제 2 하드웨어 버퍼 중의 하나의 하드웨어 버퍼와 연관되고, 제 1 상태의 상기 비트의 각각은 상기 연관된 제 2 하드웨어 버퍼가 인에이블되는 것을 표시하고 제 2 상태의 상기 비트의 각각은 상기 연관된 제 2 하드웨어 버퍼가 디스에이블되는 것을 표시하는
    시스템.
  27. 제 26 항에 있어서,
    상기 게이트 로직은 복수의 로직 회로를 포함하며, 각각의 로직 회로는 상기 제어 값의 한 비트 및 동작 전압을 수신하고 상기 비트의 값에 기초하여 상기 동작 전압을 상기 복수의 제 2 하드웨어 버퍼 중 하나의 하드웨어 버퍼에 제공하는
    시스템.
KR1020167022597A 2014-03-20 2014-03-20 링크 인터페이스의 미사용 하드웨어의 전력 소모를 제어하는 방법, 장치, 및 시스템 KR101867435B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/031304 WO2015142336A1 (en) 2014-03-20 2014-03-20 A method, apparatus, and system for controlling power consumption of unused hardware of a link interface

Publications (2)

Publication Number Publication Date
KR20160111464A true KR20160111464A (ko) 2016-09-26
KR101867435B1 KR101867435B1 (ko) 2018-07-23

Family

ID=54120167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167022597A KR101867435B1 (ko) 2014-03-20 2014-03-20 링크 인터페이스의 미사용 하드웨어의 전력 소모를 제어하는 방법, 장치, 및 시스템

Country Status (9)

Country Link
US (1) US9552045B2 (ko)
EP (1) EP3120216B1 (ko)
JP (1) JP6321194B2 (ko)
KR (1) KR101867435B1 (ko)
CN (1) CN104932996B (ko)
DE (1) DE112014006490T5 (ko)
RU (1) RU2653306C1 (ko)
TW (1) TWI556094B (ko)
WO (1) WO2015142336A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109844725B (zh) * 2016-07-01 2023-07-25 英特尔公司 点对点互连中的非对称通道
WO2018112886A1 (en) * 2016-12-23 2018-06-28 Intel Corporation Virtual channels for hardware acceleration
US10372657B2 (en) * 2016-12-26 2019-08-06 Intel Corporation Bimodal PHY for low latency in high speed interconnects
KR20180095765A (ko) 2017-02-17 2018-08-28 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US20190095554A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Root complex integrated endpoint emulation of a discreet pcie endpoint
US11630480B2 (en) * 2017-10-05 2023-04-18 Intel Corporation System, method, and apparatus for SRIS mode selection for PCIe
CN110139063B (zh) * 2018-02-09 2020-12-18 杭州海康威视数字技术股份有限公司 一种确定设备支持视频流路数的方法、装置及设备
CN108495362B (zh) * 2018-03-09 2021-06-01 广东小天才科技有限公司 一种信号传输方法及通信电路
EP3942749A4 (en) 2019-05-23 2023-06-07 Hewlett Packard Enterprise Development LP OPTIMIZED ADAPTIVE ROUTING TO REDUCE THE NUMBER OF JUMPS
KR20210012439A (ko) * 2019-07-25 2021-02-03 삼성전자주식회사 마스터 지능 소자 및 이의 제어 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030093593A1 (en) * 2001-10-15 2003-05-15 Ennis Stephen C. Virtual channel buffer bypass for an I/O node of a computer system
US6597689B1 (en) * 1998-12-30 2003-07-22 Nortel Networks Limited SVC signaling system and method
US20030221026A1 (en) * 2002-05-22 2003-11-27 Sean Newman Automatic power saving facility for network devices
US6715055B1 (en) * 2001-10-15 2004-03-30 Advanced Micro Devices, Inc. Apparatus and method for allocating buffer space

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396635A (en) 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
JPH04359335A (ja) 1991-06-06 1992-12-11 Fujitsu Ltd メモリアクセス方式
US5781784A (en) 1992-07-09 1998-07-14 Zilog, Inc. Dynamic power management of solid state memories
US6222825B1 (en) 1997-01-23 2001-04-24 Advanced Micro Devices, Inc. Arrangement for determining link latency for maintaining flow control in full-duplex networks
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
DE19822259C2 (de) 1998-05-18 2000-07-06 Siemens Ag Sendeeinrichtung und Bussystem zur Datenübertragung
US6938094B1 (en) 1999-09-17 2005-08-30 Advanced Micro Devices, Inc. Virtual channels and corresponding buffer allocations for deadlock-free computer system operation
US6950438B1 (en) * 1999-09-17 2005-09-27 Advanced Micro Devices, Inc. System and method for implementing a separate virtual channel for posted requests in a multiprocessor computer system
US6526469B1 (en) 1999-11-12 2003-02-25 International Business Machines Corporation Bus architecture employing varying width uni-directional command bus
US20020087716A1 (en) 2000-07-25 2002-07-04 Shakeel Mustafa System and method for transmitting customized multi priority services on a single or multiple links over data link layer frames
WO2002015470A2 (en) 2000-08-17 2002-02-21 Advanced Micro Devices, Inc. System and method for separate virtual channels for posted requests in a multiprocessor system
US6665742B2 (en) 2001-01-31 2003-12-16 Advanced Micro Devices, Inc. System for reconfiguring a first device and/or a second device to use a maximum compatible communication parameters based on transmitting a communication to the first and second devices of a point-to-point link
JP2002259327A (ja) 2001-02-28 2002-09-13 Hitachi Ltd バス制御回路
JP3523616B2 (ja) 2001-07-24 2004-04-26 松下電器産業株式会社 バス最適化方法及び通信ノード
US20030088799A1 (en) 2001-11-05 2003-05-08 Bodas Devadatta V. Method and apparatus for regulation of electrical component temperature and power consumption rate through bus width reconfiguration
US8819253B2 (en) 2001-11-13 2014-08-26 Oracle America, Inc. Network message generation for automated authentication
US7200186B2 (en) 2002-03-14 2007-04-03 Intel Corporation Methods and apparatus for reducing power usage of a transmitter and receiver coupled via a differential serial data link
US8103788B1 (en) * 2002-11-19 2012-01-24 Advanced Micro Devices, Inc. Method and apparatus for dynamically reallocating buffers for use in a packet transmission
US7137018B2 (en) 2002-12-31 2006-11-14 Intel Corporation Active state link power management
US7047475B2 (en) 2003-02-04 2006-05-16 Hewlett-Packard Development Company, L.P. CRC encoding scheme for conveying status information
US7188263B1 (en) 2003-05-07 2007-03-06 Nvidia Corporation Method and apparatus for controlling power state of a multi-lane serial bus link having a plurality of state transition detectors wherein powering down all the state transition detectors except one
US7136953B1 (en) 2003-05-07 2006-11-14 Nvidia Corporation Apparatus, system, and method for bus link width optimization
US7706282B2 (en) 2003-06-25 2010-04-27 Leping Huang Bluetooth personal area network routing protocol optimization using connectivity metric
TWI273789B (en) 2004-02-24 2007-02-11 Via Tech Inc Method for adjusting the power consumption of a network interface
US8046488B2 (en) 2004-05-21 2011-10-25 Intel Corporation Dynamically modulating link width
US7313712B2 (en) 2004-05-21 2007-12-25 Intel Corporation Link power saving state
US7957428B2 (en) 2004-05-21 2011-06-07 Intel Corporation Methods and apparatuses to effect a variable-width link
US7844767B2 (en) 2004-05-21 2010-11-30 Intel Corporation Method for identifying bad lanes and exchanging width capabilities of two CSI agents connected across a link
US7197591B2 (en) 2004-06-30 2007-03-27 Intel Corporation Dynamic lane, voltage and frequency adjustment for serial interconnect
US7522520B2 (en) * 2004-09-03 2009-04-21 Intel Corporation Flow control credit updates for virtual channels in the Advanced Switching (AS) architecture
US7472299B2 (en) * 2005-09-30 2008-12-30 Intel Corporation Low power arbiters in interconnection routers
US7484110B2 (en) * 2006-03-16 2009-01-27 Microsoft Corporation Adaptive power management
US7660261B2 (en) 2006-11-14 2010-02-09 The Trustees Of Columbia University In The City Of New York Systems and methods for computing data transmission characteristics of a network path based on single-ended measurements
JP5233360B2 (ja) * 2008-03-27 2013-07-10 富士通株式会社 メモリ制御装置,メモリ制御装置の制御方法および情報処理装置
TW201008234A (en) * 2008-08-12 2010-02-16 Acer Inc Energy-saving method for handheld Internet accessing device, the handheld Internet accessing device, and the real-time message system
JP5085463B2 (ja) * 2008-08-12 2012-11-28 株式会社リコー 情報転送回路、情報処理装置、情報転送回路の制御方法、制御プログラム及び記録媒体
US8379659B2 (en) * 2010-03-29 2013-02-19 Intel Corporation Performance and traffic aware heterogeneous interconnection network
JP5966265B2 (ja) * 2011-07-15 2016-08-10 株式会社リコー データ転送装置及び画像形成システム
US8954635B2 (en) * 2011-08-31 2015-02-10 Advanced Micro Devices, Inc. Buffer management using freelist buffers
US9385962B2 (en) * 2013-12-20 2016-07-05 Intel Corporation Method and system for flexible credit exchange within high performance fabrics

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6597689B1 (en) * 1998-12-30 2003-07-22 Nortel Networks Limited SVC signaling system and method
US20030093593A1 (en) * 2001-10-15 2003-05-15 Ennis Stephen C. Virtual channel buffer bypass for an I/O node of a computer system
US6715055B1 (en) * 2001-10-15 2004-03-30 Advanced Micro Devices, Inc. Apparatus and method for allocating buffer space
US20030221026A1 (en) * 2002-05-22 2003-11-27 Sean Newman Automatic power saving facility for network devices

Also Published As

Publication number Publication date
EP3120216B1 (en) 2020-11-04
US20160259394A1 (en) 2016-09-08
DE112014006490T5 (de) 2016-12-08
US9552045B2 (en) 2017-01-24
RU2653306C1 (ru) 2018-05-07
TWI556094B (zh) 2016-11-01
JP6321194B2 (ja) 2018-05-09
CN104932996B (zh) 2018-04-13
TW201602770A (zh) 2016-01-16
EP3120216A1 (en) 2017-01-25
WO2015142336A1 (en) 2015-09-24
JP2017511529A (ja) 2017-04-20
CN104932996A (zh) 2015-09-23
KR101867435B1 (ko) 2018-07-23
EP3120216A4 (en) 2017-11-29

Similar Documents

Publication Publication Date Title
US20220012189A1 (en) Sharing memory and i/o services between nodes
KR101867435B1 (ko) 링크 인터페이스의 미사용 하드웨어의 전력 소모를 제어하는 방법, 장치, 및 시스템
US10139889B2 (en) Method, apparatus, and system for improving resume times for root ports and root port integrated endpoints
TWI771286B (zh) 電子設備、電子系統及用於通訊之方法
US20220414046A1 (en) Systems, methods, and devices for dynamic high speed lane direction switching for asymmetrical interfaces
CN112825066A (zh) 事务层分组格式
US11347673B2 (en) Method, apparatus, system for thunderbolt-based display topology for dual graphics systems
US20190138470A1 (en) Asymmetric lanes in a point-to-point interconnect
WO2017151267A1 (en) Flattening portal bridge
US10817454B2 (en) Dynamic lane access switching between PCIe root spaces
US9665513B2 (en) Systems and methods for automatic root port to non-transparent bridge switching for a PCI express interconnect architecture
WO2017112345A1 (en) Speculative enumeration of bus-device-function address space

Legal Events

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