KR101974323B1 - 회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템 - Google Patents

회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR101974323B1
KR101974323B1 KR1020187010368A KR20187010368A KR101974323B1 KR 101974323 B1 KR101974323 B1 KR 101974323B1 KR 1020187010368 A KR1020187010368 A KR 1020187010368A KR 20187010368 A KR20187010368 A KR 20187010368A KR 101974323 B1 KR101974323 B1 KR 101974323B1
Authority
KR
South Korea
Prior art keywords
input
output
parallel
bit
clock
Prior art date
Application number
KR1020187010368A
Other languages
English (en)
Other versions
KR20180041257A (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 KR20180041257A publication Critical patent/KR20180041257A/ko
Application granted granted Critical
Publication of KR101974323B1 publication Critical patent/KR101974323B1/ko

Links

Images

Classifications

    • 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
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0858One way delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps

Abstract

실시예에서, 장치는 로컬 클록 신호에 따라서 시작 값과 종료 값 사이를 카운트하는 카운터와, 카운터의 출력을 저장하는 제 1 레지스터와, 제 1 레지스터로부터 수신된 카운터 출력의 샘플을 저장하는 미러 탄성 버퍼 - 미러 탄성 버퍼는 수신기 회로의 탄성 버퍼를 미러링함 - 와, 미러 탄성 버퍼로부터의 카운터 출력 샘플 및 카운터로부터 출력된 현재 카운터 값을 수신하고, 카운터 출력 샘플 및 현재 카운터 값에 적어도 일부 기초하여 수신기 회로를 횡단하는 데이터 요소의 이동 지연을 결정하는 해상도 로직을 포함한다. 다른 실시예가 설명되고 청구된다.

Description

회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템{A METHOD, APPARATUS AND SYSTEM FOR MEASURING LATENCY IN A PHYSICAL UNIT OF A CIRCUIT}
본 개시는 컴퓨팅 시스템에 관한 것으로, 특히 통신 중 이동 지연(transit latency)에 관한 정보를 제공하는 것에 관한 것이지만 이에 국한된 것은 아니다.
도 1은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템의 블록도이다.
도 2는 시스템 온 칩의 일부분과 그의 오프-칩 컴포넌트와의 접속의 일 예의 블록도이다.
도 3은 본 발명의 실시예에 따른 수신기 디바이스의 일부분의 블록도이다.
도 4는 본 발명의 실시예에 따른 방법의 흐름도이다.
도 5는 본 발명의 실시예에 따른 송신기 디바이스의 일부분의 블록도이다.
도 6은 본 발명의 실시예에 따른 디바이스의 PHY/MAC 인터페이스의 블록도이다.
도 7은 실시예에 따른 패브릭 인터커넥션의 블록도이다.
도 8은 실시예에 따른 계층화된 프로토콜 스택의 블록도이다.
도 9는 실시예에 따른 포인트-투-포인트 인터커넥션의 블록도이다.
도 10은 실시예에 따른 시스템 온 칩의 블록도이다.
하기 설명에서, 특정 형태의 프로세서 및 시스템 구성, 특정 하드웨어 구조, 특정 아키텍처 및 마이크로 아키텍처 세부사항, 특정 레지스터 구성, 특정 명령어 타입, 특정 시스템 컴포넌트, 특정 측정치/높이, 특정 프로세서 파이프라인 스테이지 및 동작 등의 예와 같은 많은 특정한 세부 사항이 본 발명의 철저한 이해를 제공하기 위해 설명된다. 그러나 본 기술에서 통상의 지식을 가진 자에게는 이러한 특정 세부사항이 본 발명을 실시하기 위해 반드시 이용될 필요가 없다는 것이 인식될 수 있다. 다른 사례에서, 본 발명을 불필요하게 모호하지 않도록 하기 위해, 특정하고 대안적인 프로세서 아키텍처, 설명된 알고리즘에 대한 특정 로직 회로/코드, 특정 펌웨어 코드, 특정 인터커넥트 동작, 특정 로직 구성, 특정 제조 기술 및 재료, 특정 컴파일러 구현, 코드 내 알고리즘의 특정 표현, 특정 파워다운 및 게이팅 기술/로직 및 컴퓨터 시스템의 다른 특정 동작의 세부사항과 같은 공지된 컴포넌트 또는 방법에 관해서는 자세하게 설명하지 않았다.
비록 다음과 같은 실시예가 컴퓨팅 플랫폼이나 마이크로프로세서와 같은 특정 집적 회로에서 에너지 보존 및 에너지 효율에 관하여 설명될 수 있을지라도, 다른 실시예는 다른 형태의 집적 회로 및 로직 디바이스에 적용 가능하다. 본 명세서에서 설명되는 실시예의 유사한 기술 및 가르침은 더 나은 에너지 효율 및 에너지 보전으로부터 또한 이득을 받을 수 있는 다른 형태의 회로 또는 반도체 디바이스에 적용될 수 있다. 예를 들면, 설명된 실시예는 데스크톱 컴퓨터 시스템 또는 울트라북™으로 한정되지 않으며, 휴대형 디바이스, 태블릿, 다른 씬(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), 소프트웨어 피 관리 코어, 기본 명령어 집합 아키텍처(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)는 페치 유닛(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)은 또한 프로그램/명령어 참조 레지스터를 프로세서(2100) 내부의 다른 레지스터로 리네임하는 레지스터 리네이머를 포함할 수 있다. 재정렬/리타이어먼트 유닛(135)은 앞에서 언급한 재정렬 버퍼, 적재 버퍼, 및 저장 버퍼와 같이, 비순차적 실행을 지원하고 나중에 비순차적으로 실행된 명령어의 순차적 리타이어먼트를 지원하는 컴포넌트를 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들) 블록(140)은 실행 유닛의 명령어/동작을 스케줄링하는 스케줄러 유닛을 포함한다. 예를 들면, 부동 소수점 명령어는 이용 가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 한 포트에 스케줄링된다. 실행 유닛과 연관된 레지스터 파일이 또한 정보 명령어 처리 결과를 저장하기 위해 포함된다. 예시적인 실행 유닛은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 적재 실행 유닛, 저장 실행 유닛, 및 다른 공지된 실행 유닛을 포함한다.
하위 레벨 데이터 캐시 및 데이터 변환 버퍼(data translation buffer, D-TLB)(150)는 실행 유닛(들)(140)에 연결된다. 데이터 캐시는 잠재적으로 메모리 코히어런시 상태로 유지되는 데이터 오퍼랜드와 같이, 요소에서 최근에 사용된/동작된 것을 저장한다. D-TLB는 물리 어드레스 변환에 대한 최신의 가상적/선형적인 것을 저장한다. 특정한 예로서, 프로세서는 물리 메모리를 복수의 가상 페이지로 나누는 페이지 테이블 구조를 포함할 수 있다.
여기서, 코어(101 및 102)는 온-칩 인터페이스(110)와 연관된 제 2 레벨 캐시와 같은 상위-레벨 또는 그 이상 레벨의 캐시로의 액세스를 공유한다. 상위-레벨 또는 그 이상 레벨은 실행 유닛(들)으로부터 증가하거나 더 멀어지는 캐시 레벨을 말한다는 것을 주목하여야 한다. 일 실시예에서, 상위-레벨 캐시는 제 2 또는 제 3 레벨 데이터 캐시와 같이, 프로세서(100)의 메모리 계층에서 마지막 캐시인 라스트-레벨 데이터 캐시이다. 그러나 상위 레벨 캐시는 명령어 캐시와 연관될 수 있거나 명령어 캐시를 포함할 수 있으므로, 그렇게 제한되지 않는다. 트레이스 캐시 - 명령어 캐시의 한 형태 - 는 그 대신 최근에 디코딩된 트레이스를 저장하기 위해 디코더(125)뒤에 연결될 수 있다. 여기서, 명령어는 잠재적으로 복수의 마이크로 명령어(마이크로-동작)으로 디코딩될 수 있는 매크로-명령어(즉, 디코더에 의해 인식되는 일반적인 명령어)를 말한다.
도시된 구성에서, 프로세서(100)는 또한 온-칩 인터페이스 모듈(110)을 포함한다. 역사적으로, 아래에서 더 상세히 설명되는 메모리 제어기는 프로세서(100) 외부의 컴퓨팅 시스템에 포함되었다. 이러한 시나리오에서, 온-칩 인터페이스(11)는 시스템 메모리(175), 칩셋(종종 메모리 제어기 허브를 메모리(175)에 접속시키는 것과 I/O 제어기 허브를 주변 디바이스에 접속시키는 것을 포함함), 메모리 제어기 허브, 노스브릿지, 또는 다른 집적 회로와 같이, 프로세서(100) 외부의 디바이스와 통신한다. 그리고 이러한 시나리오에서, 버스(105)는 멀티-드롭 버스, 포인트-투-포인트 인터커넥트, 직렬 인터커넥트, 병렬 버스, 코히어런트(예를 들면, 캐시 코히어런트) 버스, 계층화된 프로토콜 아키텍처, 차동 버스, 및 GTL 버스와 같은 임의의 공지된 인터커넥트를 포함할 수 있다.
메모리(175)는 프로세서(100)에 전용될 수 있거나 시스템 내 다른 디바이스와 공유될 수 있다. 메모리(175)의 유형의 일반적인 예는 DRAM, SRAM, 비휘발성 메모리(non-volatile memory, NV memory), 및 다른 공지된 저장 디바이스를 포함한다. 디바이스(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) 이들의 조합을 말할 수 있다.
특정 애플리케이션의 경우, 시스템의 여러 컴포넌트 사이에서 정밀 시간 동기화 기술이 유용할 수 있다. 이러한 방법에서, 이들 컴포넌트는 정확도가 높은(예를 들면, 나노 초(nanosecond, ns) 벽시계 시간의 일반적인 인식을 공유할 수 있다. 예시적인 사용은 산업 제어, 오디오-비디오, 음성 처리와 촉각 피드백을 포함하는 휴먼 인터페이스, 및 사용 시간 과금 등을 포함한다. 실시예는 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express, PCIe) 또는 초고속 범용 직렬 버스(Universal Serial Bus, USB) (USB 3.0)와 같은 고속의 직렬 통신 프로토콜을 통해 통신하는 디바이스와 관련하여 정밀 시간 측정치(precise time measurement, PTM)를 제공하는데 사용될 수 있다.
이를 위하여, 실시예는 디바이스의 물리 유닛(physical unit, PHY)로 하여금 PHY를 통한 정보의 이동을 위한 송신 및 수신 타이밍을 정확하게 보고할 수 있게 해주는 메커니즘을 제공할 수 있다. 구체적으로, 실시예는 디바이스의 입력 핀으로부터 PHY를 통한 정보를 전달하고 이후 디바이스의 다른 부분, 예를 들면 매체 액세스 제어(media access control, MAC) 부분에 전달하기 위해, 그리고 이와 반대로 전달하기 위해 지연을 정확하게 결정하고 보고하는데 사용될 수 있다. 특정 실시예에서, PIPE 준용 디바이스는 이러한 정밀 시간 측정치를 제공하는 로직을 포함한다. PIPE는 PCIe, USB 및 다른 기술에 맞는 MAC/PHY 인터페이스 - 이것의 현재 버전은 PCI 익스프레스, SATA 및 USB 3.1 아키텍처 버전 4.2를 위한 PHY 인터페이스이다(2013년 인텔 코포레이션에 의해 공개됨)(이하 PIPE 사양이라고 지칭함) - 를 정의하는 산업 규격이다.
이제 도 2를 참조하면, 시스템 온 칩의 일부분과 그의 오프-칩 컴포넌트와의 접속의 일부분의 일 예의 블록도가 도시된다. 도 2에서 도시된 바와 같이, 시스템(200)은 프로세싱 회로, 다른 기능 회로 및 제어기 회로 등과 같은 임의의 각종 형태의 회로일 수 있는 상류 로직(220)을 포함하고 또한 링크-PHY 인터페이스의 링크 부분을 더 포함할 수 있는 SoC(210)를 포함할 수 있다. 이러한 상류 및 하류의 개념은 PCI Express™ 사양서의 기본 사양 버전 2.0(2007년 1월 17일 공개됨)에 있는 그와 같은 용어의 사용에 기초할 수 있다. 그러나 실시예는 PCIe™ 구현에 한정되지 않으며 상류 및 하류는 간단히 SoC의 코어 요소(예를 들면, 상류 로직(220)의 상류에 연결될 수 있는 SoC의 하나 이상의 코어)에 대하여 통신 방향을 말할 수 있다는 것을 알아야 한다.
온-칩 인터커넥트(222)를 통해, 상류 로직(220)은 PHY(225)와 통신한다. 앞에서 언급한 바와 같이, 일부 실시예에서, 이러한 PHY는 PIPE 사양서에 따라서 배치될 수 있다. 일반적으로, PHY는 고속으로 어떤 조건에서 병렬로 수신될 수 있는 입력 신호를 받고 이 신호를 물리 인터커넥트(230), 즉 오프-칩 인터커넥트를 통해 출력하기 위해 변환하도록 동작한다. 도시된 구현예에서, 오프-칩 인터커넥트는 일부 실시예에서 스탠드얼론 IC일 수 있는 대응하는 PHY(240)에 데이터를 송신하고 PHY(240)로부터 입력되는 차동 신호 쌍을 수신하는 한 쌍의 양방향성 차동 라인일 수 있다. 다른 실시예에서, 여러 Rx/Tx 신호 쌍이 있을 수 있으며, Rx 및 Tx는 대칭적일 필요는 없다. 도 2에서 도시된 바와 같이, Rx 및 Tx는 SoC(210)를 기준으로 하며, PHY(240)에 대해서는 그 반대이다. 그 결과 PHY(240)는 하류 로직(250)과 통신할 수 있으며, 하류 로직은 주변기기 제어기, 예를 들면 디스크 제어기, 네트워크 인터페이스 카드 등과 같은 특정 형태의 기능성을 구비하는 별개의 IC일 수 있다. 이러한 특정 구현예가 도 2의 실시예에서 도시되어 있지만, 다른 구현예에서 PHY(240) 및 하류 로직(250)은 단일의 반도체 다이 상에서 구성될 수 있다는 것을 알아야 한다. 그뿐만 아니라, 다른 실시예에서는 훨씬 더 많은 회로가 SoC 내에 존재할 수 있다는 것을 알아야 한다.
일 PTM 구현예에서, 패킷 송신 및 수신 시간은 디바이스의 핀에서 측정될 수 있다. PHY 내부에서 지연은 가변적이기 때문에, PHY는 실제 지연을 MAC에게 보고하여 MAC이 이에 따라서 시간 값을 조정할 수 있도록 구성될 수 있다. 실시예는 이러한 PTM 정보를 제공하기 위해 한 세트의 부가적인 MAC/PHY 인터페이스 신호를 제공할 수 있다.
실시예에서, PIPE 인터페이스는 자체에서 심볼 별 단위로 제공될 수 있는 PHY 이동 지연을 제공한다. 실시예에서, 인터페이스 신호는 PHY 이동 지연(transit latency)에 대응하는 (그리고 ns 또는 다른 적합한 단위의 관점에서 전달될 수 있는) 송신 및 수신 지연 값(TxTime 및 RxTime), 및 대응하는 송신된/수신된 심볼 별로 한 클록 사이클 동안 활성화된 유효 표시를 제공하는 지연 유효 신호(TxTimeValid 및 RxTimeValid)를 포함한다. 다른 실시예에서는 PTM 정보의 목적을 위해 사용되는 다른 지연 측정 신호가 제공될 수 있다.
실시예에서, 시간 값(TxTime 및 RxTime)은 PTM 클록에 의해 구동되는 자유 주행 카운터로부터 도출된다. 이러한 PTM 클록은 정밀 로컬 클록이다. 이러한 PTM 클록은 ns 그래뉴러리티를 지원할 필요가 없으며, 실시예에서는 대략 10 메가헤르쯔(Hz) 및 기가헤르쯔(GHz) 사이에서 동작할 수 있다는 것을 주목하여야 한다. 이러한 자유 주행 카운터는 실시예에서 비동기적으로 안전하게 샘플링될 수 있도록 그레이(Grey) 인코딩된다. PHY의 수신 경로(Rx) 지연은 복구된 비트 클록과 로컬 클록 사이의 차로 인해 변할 것이며, 본 명세서에서는 로컬 클록을 PCLK라고 지칭하며, 이 클록에서는 병렬 샘플이 PHY에 의해 출력된다.
실시예에서, PHY의 Rx 경로에 필요한 PTM 회로는 복구된 심볼 클록의 각 에지에서 수신된 각 심볼마다 자유 주행 카운터를 샘플링하도록 구성된다. 이러한 샘플은 대응하는 심볼에 1:1로 고정된 파이프라인에서 Rx 경로를 통해, 특히 탄성 버퍼(elastic buffer)를 통해 전파되는데, 탄성 버퍼에서 버퍼 깊이는 수신 클록 대 PCLK 비율에 따라서 변할 것이다. PIPE는 다양한 데이터 경로 폭을 지원하며, 카운터의 샘플링은 PHY가 데이터 경로 폭 변환을 수행하면 언제든 심볼 별 단위로 유지된다는 것을 주목하여야 한다. PTM 회로의 끝 단에서, 이러한 카운터 값은 그레이 코드로부터 통상의 시간 값으로 변환되고 (적절히 랩-어라운드하여) 현재 카운터 값에서 감산되어 지연 값을 제공한다. 대안의 구현예에서는 가변 요소, 예를 들면 탄성 버퍼에만 연관된 카운터를 유지한 다음 각 심볼마다 적절한 연산을 수행하여 PHY 이동 시간을 결정할 수 있다.
PHY의 송신 경로(Tx)의 송신 지연이 고정되어 있지 않은 경우, Tx 경로 또한 자유 주행 카운터를 갖는 PTM 회로를 포함한다. 실시예에서, Tx 및 Rx PTM 회로에는 모두 동일한 카운터가 사용될 수 있다. 그 결과, 이 카운터는 각 PCLK 에지에서 송신하기 위해 제공된 각 데이터 유닛에 대해 샘플링된다. 다른 변형예에서, PCLK는 정밀 로컬 클록으로서 사용될 수도 있다는 것을 주목하여야 한다. 이 샘플은 Tx 클록 율로 1:1 고정된 파이프라인에서 Tx 경로를 통해 전파된다. PIPE는 다양한 데이터 경로 폭을 지원하며, 카운터의 샘플링은 PHY가 데이터 경로 폭 변환을 수행할 때면 언제든 심볼 별 단위로 유지된다는 것을 주목하여야 한다. 끝 단에서, 이러한 카운터 값은 그레이 코드로부터 통상의 시간 값으로 변환되고, (적절히 랩-어라운드되어) 현재 카운터 값으로부터 감산되어 지연을 제공한다. PHY의 Tx 지연이 고정된 경우, 이러한 PTM 로직은 사용될 필요가 없으며, 단순히 고정 값이 보고된다. 일부 사례에서, TxValid 신호는 존재하지 않을 수 있으며, Tx 지연은 다른 수단을 통해, 예를 들면 데이터 시트를 통해 제공될 수 있다. 예를 들면, 반드시 Rx 지연이 일정하도록 하기 위해 PHY에서 보상 지연을 도입함으로써 Rx 경로에 대해서도 유사한 사례가 있을 수 있다는 것을 주목하여야 한다.
이제 도 3을 참조하면, 본 발명의 실시예에 따른 수신기 디바이스의 일부분의 블록도가 도시된다. 도 3에서 도시된 바와 같이, 수신기 디바이스(300)는 차동 직렬 데이터(D+/D-) 형태의 입력 정보를 수신하고 그 입력 정보를 수신기 디바이스의 부가적인 하류 로직에 제공하기 위한 형태로 처리하도록 구성된다. 다양한 구현예에서, 이러한 처리는 일반적으로 입력되는 차동 직렬 데이터를 희망하는 데이터 폭을 가진 병렬 형태로 변환하는 것을 포함할 뿐만 아니라, 주어진 인코딩 체계에 따라서 클록 복구 동작을 수행하고 디코딩하는 것을 포함한다.
도 3에서 도시된 실시예에서, 수신기(300)는 주 데이터 처리 경로(305) 및 별도의 정밀 시간 측정 경로(350)를 포함한다. 각각의 경로는 차례차례 설명될 것이다. 일반적으로, 실시예는 데이터를 (일반적으로 디바이스의 핀에 있는) 수신기 디바이스(300)의 입력으로부터 횡단시켜 수신기 디바이스의 다른 부분, 예를 들면 높은 지연을 일으키는 MAC 계층에 병렬 데이터를 전달하는데 필요한 지연을 결정할 수 있게 하는 PTM 경로(350)를 제공한다.
데이터 신호 처리 경로(305)를 참조하면, 입력되는 정보 스트림은 차동 수신기(310)에 제공되며, 차동 수신기는 직렬 비트스트림을 발생하여 데이터 복구 회로(320) 및 클록 복구 회로(315) 양쪽에 제공한다. 데이터 복구 회로(320)에 제공된 비트스트림으로부터, 복구된 비트 클록 신호가 발생되고 데이터 복구 회로(320) 및 직렬-병렬 변환기(325)를 클록킹하도록 제공된다. 실시예에서, 변환기(325)는 입력되는 직렬 비트가 10비트가 될 때까지 수집하는 x10 변환기로서 구성되며, 이에 따라 비트가 수집되면 10비트의 병렬 폭이 검출 회로(330) 및 탄성 버퍼(335) 양쪽으로 제공된다. 수신기 경로의 변경이 가능하다는 것을 이해하여야 한다. 예를 들면, 일부 사례에서 데이터는 직렬 도메인에서 탄성 버퍼 쪽으로 입력될 수 있으며, SIPO 변환은 탄성 버퍼의 출력에서 수행된다.
탄성 버퍼(335)는 입력되는 병렬 데이터 워드, 예를 들면 10 비트 심볼 또는 다른 가능한 정보, 이를 테면 상태, 제어, 또는 다른 정보를 각기 저장하는 복수의 엔트리를 포함한다. 실시예에서, 버퍼(335)는 대략 8 내지 50 사이의 엔트리를 가질 수 있다.
실시예에서, 검출 회로(330)는 PCIe 구현예에서는 K28.5 제어 심볼에 대응할 수 있는 미리 결정된 심볼을 검출하도록 구성된다. 그러한 심볼이 검출될 때, 검출 회로는 패킷 심볼의 시작을 구성하며 따라서 복구된 심볼 클록 신호가 발생되어 탄성 버퍼(335)의 기록 포트를 클록킹하는데 사용된다. 실시예에서, 심볼 클록은 K28.5 심볼을 검출함으로써 결정된 조정에 따라 비트 클록으로 고정되어서 심볼 클록은 적절한 간격(예를 들면, 매 10b) 마다 계속하여 트리거하게 된다. 그 결과 탄성 버퍼(335)의 판독 포트는 예를 들면 상이한 주파수, 예를 들어 일반적으로 125 또는 250MHz에서 동작할 수 있는 로컬 클록으로부터 취득된 판독 클록 신호를 수신하도록 구성된다.
주 데이터 처리 경로(305)를 계속 참조하면, 탄성 버퍼(335)가 이러한 판독 클록 신호에 따라서 판독될 때, 데이터 워드(예를 들면, 10비트 심볼)가 실시예에서 8b/10b 디코더인 디코더(340)로 출력되며, 그래서 디코더는 10비트 심볼로부터 8비트 워드를 발생한다. 8b/10b 변환을 탄성 버퍼 앞 단에 배치하는 것이 또한 가능하다는 것을 주목하여야 한다. 그 다음, 비트 폭 로직(345)은 선택사양으로 존재할 수 있으며, 이 로직은 수신기 디바이스의 다른 회로(도 3에서는 예시의 편의를 위해 도시되지 않음)에 출력되는 희망하는 폭(예를 들면, x8, x16, 또는 x32)의 병렬 데이터 패킷을 발생하는데 사용될 수 있다. 실시예에서, 이러한 병렬 데이터는 추가 처리를 위해 디바이스의 MAC 회로에 제공될 수 있다. 물론 주어진 수신기에는 부가적인 컴포넌트 및 신호가 존재할 수 있지만, 이러한 컴포넌트 및 신호는 개시된 주제를 모호하게 하지 않도록 하기 위해 본 명세서에서 다루지 않는다. 8b/10b 대신, PTM 처리의 전반적인 양태를 변경하지 않는 다른 인코딩 체계, 예를 들면 (PCIe "3 세대" 8GT/s 모드에서 사용되는) 128b/130b이 적용될 수 있다.
계속 도 3을 참조하면, PTM 경로(350)가 더 예시된다. 일반적으로, PTM 경로(350)는 주 데이터 처리 경로(305) 내부에서 횡단하는 데이터의 지연을 높은 정확도로 결정하도록 구성된다. 이를 위해, 실시예에서 그레이 코드 카운터와 같은 자유 주행 카운터일 수 있는 카운터(360)가 존재한다. 실시예에서, 이 카운터는 대략 4와 7 비트 넓이 사이의 폭을 가질 수 있다. 도시된 바와 같이, 카운터(360)는 실시예에서 정밀 로컬 클록으로부터 발생된 클록 신호인 PTM 클록에 의해 클록킹된다. 일 실시예에서, PTM 클록은 100MHz의 주파수에서 동작할 수 있고 로컬 서브클록에 대응할 수 있다. 이러한 로컬 서브클록을 통해, 클록은 높은 정확도(예를 들면, 50ppm 내)로 구성될 수 있고 또한 확산 스펙트럼 클록킹 없이 동작하도록 구성될 수 있으므로, 높은 정확도가 실현될 수 있다.
카운터(360)의 출력은 실시예에서 복구된 심볼 클록 신호에 따라서 샘플링되는 레지스터로서 구현되는 저장 디바이스(365)에 제공된다. 아래에서 추가로 설명되는 바와 같이, 카운터(360)의 출력은 PTM 경로(350)의 부가 로직에 연결된다는 것을 주목하여야 한다.
복구된 심볼 클록에 따라 샘플링될 때, 저장된 카운터 값은 대응하는 탄성 버퍼(335)와 조정을 유지하도록 구성된 미러 탄성 버퍼(mirror elastic buffer)(370)에 제공된다. 그래서 실시예에서, 미러 탄성 버퍼(370)의 엔트리의 개수는 탄성 버퍼(335) 내에 존재하는 엔트리의 개수와 동일할 수 있다.
특정 구현예에서, 별도의 미러 탄성 버퍼를 마련하는 대신, 직렬-병렬 변환기(325)로부터 수신된 병렬 데이터 및 레지스터(365)에 의해 출력된 카운트 값 모두를 수용하는 폭을 제공하는 넓은 폭의 탄성 버퍼(335)가 제공될 수 있다. 그러한 구현예에서, 소정의 설계 제한이 완화될 수 있다.
어느 경우든, 미러 탄성 버퍼(370)로부터 출력 값은 로컬 클록(즉 탄성 버퍼(335)의 판독 포트 클록 및 디코더(340)의 클록으로서 작용하는 같은 로컬 클록)에 의해 샘플링되는 다른 레지스터로서 구현되는 다른 저장소(375)에 제공된다. 다른 저장소(380)는 이러한 레지스터(375)에 캐스케이드 방식으로 연결되며 (비트 폭 로직(345)으로부터 제공되는 적절한 비트 폭의 병렬 데이터 출력에 대비하여) 병렬 클록(parallel clock, PCLK)에 따라서 샘플링되는 또 다른 레지스터로서 구현될 수 있다.
샘플링될 때, 결과의 카운트 값은 카운터(360)로부터 현재 카운터 출력을 직접 수신하는 해상도 로직(390)에 제공된다. 일반적으로, 해상도 로직(390)은 이러한 두 가지 카운터 값, 즉 PTM 경로(350)를 통해 제공된 카운터 값 및 카운터(360)로부터 직접 취득한 현재 카운터 값에 적어도 일부 기초하여 파이프라인을 횡단하는 데이터의 지연을 결정할 수 있다. 도 3에서 도시된 실시예에서, 이러한 지연 값은 심볼 별로 한번씩 활성화될 수 있는 지연 유효 신호(RxTime Valid)와 함께 신호(RxTime)로서 전달될 수 있다. 비록 도 3의 실시예에서는 이렇게 하이 레벨로 도시되었지만, 본 발명의 범주는 이러한 관점으로 제한되지 않는다는 것을 이해하여야 한다.
예를 들면, 다른 구현예에서, PTM 동작을 수행하기 위해 완전히 별도의 경로를 제공하는 대신, 본 명세서에서 설명된 PTM 정보를 발생하기 위해 소량의 회로가 주 데이터 처리 경로에 추가될 수 있다. 이렇게 최적화할 때, PTM 경로의 적어도 일부분이 제외될 수 있다.
구체적으로 다른 실시예에서, 탄성 버퍼에 의해 유발된 가변 지연을 결정하기 위해, 탄성 버퍼의 현재 깊이에 관한 입력되는 엔트리 부가 정보(즉 새로운 엔트리가 기록되는 시점에 버퍼에서 계류중인 엔트리의 개수)에 추가로 기록하기 위해 탄성 버퍼와 연관된 로직이 제공될 수 있다. 탄성 버퍼(335)가 30 엔트리 버퍼인 실시예에서, 각각의 엔트리는 5비트씩 확장될 수 있고 그래서 엔트리가 기록되는 시점에서 현재 버퍼 깊이에 대응하는 카운트 값을 수용할 수 있다. 이를 위해, 탄성 버퍼(335)는 버퍼의 현재 깊이에 관한 정보를 내부적으로 유지하고 입력 엔트리를 탄성 버퍼에 저장하는 것과 관련하여 현재 깊이에 대응하는 값을 저장하는 PTM 로직을 포함할 수 있다. 그런 다음 이 정보가 추가 처리를 위해 MAC 계층에 사용 가능하도록 이 정보가 탄성 버퍼(335) 및 나머지 부분의 데이터 처리 경로를 횡단할 때 이 정보는 엔트리와 함께 이동할 수 있다. 일부 실시예에서, 이러한 깊이 값은 주 신호 처리 경로와 별개의 하나 이상의 측파대 신호로서 전달될 수 있다. 출력이 표현되는 방법에 따라서, 두 가지 사례에서, 즉 Rx의 경우, PTM 출력에 대해서는 유효 신호를 가질 수 있거나 아니면 PTM 출력을 수신된 심볼 출력과 합칠 수 있는데, 이 경우 둘 다에는 같은 "유효" 표시를 적용한다. Tx의 경우, 만일 동적의 PTM 출력이 있으면, 유효 표시가 또한 발생된다.
탄성 버퍼(335)로부터 출력된 데이터와 함께 제공된 이러한 PTM 값은 가변 지연의 정밀 척도라는 것을 주목하여야 한다. 그러나 데이터를 PHY 유닛의 부가 부분을 통해 횡단시키는 동안 고정 지연이 여전히 발생한다는 것을 이해하여야 한다. 이러한 지연이 고정되어 있다면, 이 실시예에서, MAC 계층(또는 상위 프로토콜 계층)은 고정된 지연에 대응하는 미리 결정된 값을 이러한 PTM 값에 단순히 추가하여 결과적으로 PHY 유닛의 횡단에 필요한 진짜 PTM 지연을 취득할 수 있다.
도 4를 참조하면, 본 발명의 실시예에 따른 방법의 흐름도가 도시된다. 도 4에서 도시된 바와 같이, 방법(400)은 예를 들면 PHY 유닛의 데이터 처리 경로를 통해 횡단하는 데이터의 지연을 높은 정확도로 결정하는 정밀 시간 측정 동작을 수행하기 위해 사용될 수 있다. 실시예에서, PHY 자체, 예를 들면 별개의 PTM 처리 경로 내부의 제어 로직은 PTM 결정을 수행할 수 있다. 그래서 도 4의 실시예는 도 3에서 도시된 바와 같은 PTM 처리를 위한 별도의 병렬 경로와 관련하여 사용하기 위한 것이다.
도시된 바와 같이, 방법(400)은 자유 주행 카운터의 출력을 제 1 레지스터에 저장함으로써 시작한다. 실시예에서, 자유 주행 카운터는 6비트를 가지며 시작 값과 종료 값 사이에서 카운트하는 그레이 코드 카운터일 수 있다. 이러한 카운터는 로컬 PTM 클록에 따라서 동작할 수 있으며 그래서 클록 신호에 따라서 이러한 제 1 레지스터에 저장하기 위한 카운트 값을 출력할 수 있다. 그러나 이러한 레지스터는 카운터 값의 출력 때마다 반드시 샘플링될 필요가 없다는 것을 주목하여야 한다. 즉, 이러한 제 1 레지스터는 입력 데이터 스트림으로부터 복구된 심볼 클록 신호에 따라서 샘플링될 수 있다. 따라서 블록(420)에서 제 1 레지스터에 저장된 현재 값은 이러한 심볼 클록 신호에 따라서 샘플링될 수 있다. 그 다음 블록(430)에서 이렇게 샘플링된 값은 심볼 처리 파이프라인에 고정된 PTM 파이프라인을 통해 전파될 수 있다. 실시예에서, 이러한 PTM 파이프라인은 주 신호 처리 경로의 탄성 버퍼와 동일한 엔트리 개수를 가진 미러 탄성 버퍼를 포함할 수 있다. 주 신호 처리 경로의 부가적인 처리 컴포넌트의 지연을 해명하기 위해 추가적인 저장 요소 또는 레지스터가 제공될 수 있다.
마지막으로, 블록(440)에서 심볼 처리 파이프라인의 지연이 결정될 수 있다. 구체적으로, 이러한 지연은 PTM 파이프라인을 통해 전파된 것으로서 샘플링된 값 및 자유 주행 카운터로부터 직접 제공될 수 있는 현재 카운터 출력 값에 기초하여 결정될 수 있다. 물론 지연을 결정할 때 추가적인 고려 사항이 고려될 수 있다. 예를 들면, 신호 처리 경로의 모든 컴포넌트가 PTM 파이프라인에 의한 이유가 되는 것은 아닐 수 있다. 이와 같이, 주 데이터 처리 경로 내부의 부가적인 처리 컴포넌트의 원인을 해명하기 위해 하나 이상의 미리 결정된 값이 또한 지연 결정에 포함될 수 있다. 실제 계산의 일 예는 다음과 같다.
Figure 112018036549651-pat00001
결정된 지연은 시간 값으로서 수신기 디바이스의 다른 부분, 예를 들면 MAC 회로에 제공될 수 있으며, MAC 회로는 선택사양으로 링크 또는 트랜잭션 계층과 같은 상위 계층에 제공되는 정보를 추가 처리할 수 있거나 또는 또 다른 처리를 수행할 수 있다. 이러한 지연 정보를 제공하는 것 이외에, 대응하는 심볼의 한 PCLK 동안 활성 및 유효 이동 지연 값을 표시하는 유효 신호가 또한 발생될 수 있다. 방법(400)이 수신기 파이프라인의 목적을 위한 것으로 상정하고 있지만, 송신 회로의 지연 시간을 결정하기 위해 송신 파이프라인에 대해서도 유사한 동작이 수행될 수 있다.
이제 도 5를 참조하면, 본 발명의 실시예에 따른 송신기 디바이스의 일부분의 블록도가 도시된다. 도 5에서 도시된 바와 같이, 송신기 디바이스(500)는 예를 들면 디바이스의 MAC 유닛으로부터 입력되는 병렬 정보를 수신하고 그 입력 정보를 인터커넥트를 통해 송신기 디바이스에 연결된 다른 디바이스에 전달하기 위한 형태로 처리하도록 구성된다. 다양한 구현예에서, 이러한 처리는 일반적으로 주어진 폭을 가진 입력되는 병렬 데이터를 차동 직렬 데이터로 변환하는 것뿐만 아니라, 주어진 인코딩 체계에 따라 인코딩을 수행하는 것을 포함할 수 있다.
도 5에서 도시된 실시예에서, (도 3의 수신기(300)와 같은 수신기 부분을 더 포함하는 디바이스의 송신 부분일 수 있는) 송신기(500)는 주 데이터 처리 경로(505) 및 별도의 정밀 시간 측정 경로(550)를 포함한다. 일반적으로, 실시예는 입력으로부터 (예를 들면, MAC/PHY 인터페이스를 통해) 송신기 디바이스(500)까지 디바이스의 핀을 통해 차동 직렬 데이터를 전달하기 위해 데이터를 횡단시키는데 필요한 지연이 높은 정확도로 결정될 수 있도록 지연을 결정할 수 있게 해주는 PTM 경로(550)를 제공한다.
데이터 신호 처리 경로(505)를 참조하면, 입력되는 병렬 데이터는 선택사양의 비트 폭 로직(510)에 제공되며, 비트 폭 로직은 입력되는 병렬 데이터를 (예를 들면, x16 또는 x32 폭으로부터) 적절한 비트 폭(예를 들면, 8비트 워드)으로 변환한 다음 인코더(520)에 제공한다. 실시예에서, 인코더(520)는 8비트로부터 10비트 심볼을 발생하는 8b/10b 디코더이다. 물론, 8b/10b 대신 다른 인코딩 체계, 예를 들면 이는 PTM 처리의 전반적인 양태를 변경하지 않는 128b/130b가 적용될 수 있다. 그 다음, 실시예에서 병렬-직렬 변환기(530)는 병렬 데이터를 디바이스의 핀을 통해 출력하기 위해 차동 직렬 비트스트림을 발생하는 차동 드라이버(540)에 전달하기 위한 직렬 포맷으로 변환하도록 구성된다. 물론 주어진 수신기에서 추가적인 컴포넌트 및 신호가 존재할 수 있지만, 이러한 컴포넌트 및 신호는 개시된 주제를 모호하게 하지 않도록 하기 위해 본 명세서에서 다루지 않는다.
계속 도 5를 참조하면, PTM 경로(550)가 더 예시된다. 일반적으로, PTM 경로(550)는 주 신호 처리 경로(505) 내부에서 횡단하는 데이터의 지연을 높은 정확도로 결정하도록 구성된다. 이를 위해, 실시예에서 그레이 코드 카운터와 같은 자유 주행 카운터일 수 있는 카운터(560)가 존재한다. 일부 실시예에서, 이러한 카운터는 수신 경로의 PTM 로직과 공유될 수 있다. 도시된 바와 같이, 카운터(560)는 PTM 클록에 의해 클록킹된다.
카운터(560)의 출력은 실시예에서 PCLK에 따라서 샘플링되는 레지스터로서 구현되는 저장 디바이스(565)에 제공된다. 아래에서 추가로 설명되는 바와 같이, 카운터(560)의 출력은 PTM 경로(550)의 부가 로직에 연결된다는 것을 주목하여야 한다.
이러한 클록 신호에 따라서 샘플링될 때, 저장된 카운터 값은 다른 저장소(570), 예를 들면 비트 전송률 클록(예를 들면, 이 클록 전송률의 10%)에 기초하여 샘플링되는 다른 레지스터에 제공된다. 이 레지스터로부터, 샘플링된 값은 도시된 실시예에서 결과적으로 비트 전송률 클록 자체에 의해 클록킹되는 다른 레지스터인 또 다른 저장소(480)에 제공된다. 저장소(565, 570 및 580)는 모두 다단의 백-투-백 레지스터(back-to-back register)로 구성될 수 있고, 예를 들면 그래서 요소(570)에서 3 클록 지연은 인코더를 통한 3 클록 파이프라인과의 조정을 유지한다.
이러한 저장소가 샘플링될 때, 결과의 카운트 값은 카운터(560)로부터 현재 카운터 출력을 직접 수신하는 해상도 로직(590)에 제공된다. 일반적으로, 해상도 로직(590)은 이러한 두 가지 카운터 값, 즉 PTM 경로(550)를 통해 제공된 카운터 값 및 카운터(560)로부터 직접 취득한 현재 카운터 값에 적어도 일부 기초하여 파이프라인을 횡단하는 데이터의 지연을 결정할 수 있다. 도 5에서 도시된 실시예에서, 이러한 지연 값은 심볼 별로 한번 활성화될 수 있는 지연 유효 신호(TxTime Valid)와 함께 신호(TxTime)로서 예를 들면 다시 MAC 유닛에 전달될 수 있다. 비록 도 5의 실시예에서는 이렇게 하이 레벨로 도시되었지만, 본 발명의 범주는 이러한 관점으로 제한되지 않는다는 것을 이해하여야 한다. 예를 들면, 지연을 특히 송신 방향에서 결정하기 위해 별도의 PTM 경로를 제공하는 대신, 미리 결정된 지연 값이 사용 가능하여 이러한 별도 경로의 필요성을 제외할 수 있다. 그러한 실시예에서, 이렇게 미리 결정된 값은 수신기에 전달될 수 있고 그래서 수신기는 이러한 이동 지연 정보를 최대한 활용하여 임의의 적절한 계산을 수행할 수 있다. 또한 수신기(300)와 관련하여 앞에서 설명한 바와 같이 유사하게 줄어든 시간 측정 경로를 제공하는 것도 가능하다.
이제 도 6을 참조하면, 본 발명의 실시예에 따른 디바이스의 PHY/MAC 인터페이스의 블록도가 도시된다. 도 6에서 도시된 바와 같이, 도 2의 SoC(200)와 같은 단일의 IC일 수 있는 디바이스(200')는 MAC 계층(223)과 PHY 계층(224) 사이의 인터페이스를 포함한다. 도시된 바와 같이, MAC 계층(223)은 링크 계층을 포함하는 상위의 계층에 연결되는데 반해, PHY 계층(224)은 예를 들면 송신 및 수신 방향의 차동 신호 쌍에 의해 물리 인터커넥트에 연결될 수 있다.
MAC 계층(223)과 PHY 계층(224) 사이에서는 다양한 시그널링이 발생한다. 일반적으로, 디바이스(200')로부터 송신될 데이터(TxData) 및 데이터/제어 신호(TxDataK)는 가변 수량의 커맨드 신호와 함께 MAC 계층(223)으로부터 PHY 계층(224)으로 전송된다. 또한, PHY 계층(224)에 의해 전달되는 각 심볼마다, 지연 시간 값(TxTime) 및 지연 시간 유효 신호(TxTime Valid)는 송신을 위해 제공될 TxData 등에 대해 예상된 이동 시간을 반영하기 위해 다시 MAC 계층(223)으로 전송된다. 또한 PCLK가 이 방향으로 전달될 수 있다.
그 결과, 디바이스(200') 내부에서 입력 데이터가 수신되면, PHY 계층(224)은 병렬 데이터를 대응하는 데이터/제어 정보(RxDataK)와 함께 RX 데이터(RxData)로서 전달한다. 또한 가변 길이의 상태 정보는 대응하는 PCLK와 함께 전달될 수 있다. 또한 각 심볼이 전달될 때마다, 지연 시간 값(RxTime) 및 지연 시간 유효 신호(RxTime Valid)가 또한 전송될 수 있다. 비록 도 6의 실시예에서 이렇게 하이 레벨로 도시되지만, 본 발명의 범주는 이러한 관점으로 제한되지 않는다는 것을 이해하여야 한다.
예를 들면, 실시예는 복수개 레인(lane)의 PIPE가 구현되는 상황에서 사용될 수 있다. 이러한 사례에서, MAC 계층은 물리 계층의 복수개 PHY와의 통신을 레인 별로 제공할 수 있다. 이들 컴포넌트들 사이에서 정보를 전달하기 위해, 송신 및 수신 방향으로 복수의 레인 별 신호가 제공될 수 있다. 또한 레인 중 하나 이상은 정밀 시간 측정 신호를 전달할 수 있다. 특정한 일 구현예에서, 단일의 레인, 예를 들면 레인 제로만이 송신 및 수신 지연 값 및 대응하는 유효 신호를 전달하기 위해 제공될 수 있다. 지연이 대략 복수의 레인 전체에서 동일하므로, 그러한 최적화는 여전히 정밀 지연 정보를 제공하면서 부동산 비용을 줄여줄 수 있다. 물론 다른 실시예에서, 각 레인은 송신 및 수신 지연 정보를 전달하기 위해 제공될 수 있다는 것을 이해하여야 한다.
PTM은 시청각 제어에서부터 산업 제어까지를 범위로 하는 각종 애플리케이션 용도로 사용될 수 있다. PIPE 사양서 또는 다른 MAC/PHY 구현에 따라서 디바이스에 맞는 PTM 메커니즘을 제공함으로써, 네트워크 인터페이스 제어기(network interface controller, NIC) 또는 다른 네트워킹 디바이스는 각자의 시간 값을 그러한 디바이스에 동기화할 수 있다. 또한 본 발명의 실시예에 따르면, PTM은 (실시예에서 1ns만큼 양호한) 한자리 숫자의 PTM 타겟 정확도(ns)를 제공할 수 있다. 실시예는 PCIe 및 USB 디바이스 모두에 사용될 수 있는 PIPE 인터페이스의 목적을 위해 사용될 수 있다. 그러나 본 발명의 범주는 그러한 구현으로 제한되지 않으며, 본 명세서에서 설명된 PTM 메커니즘은 반도체 디바이스 내부와 디바이스 생태계 내에서 모두 넓은 구현 범위의 전반에 걸쳐 사용될 수 있다.
하나의 인터커넥트 패브릭 아키텍처는 PCIe 아키텍처를 포함한다. PCIe의 기본적인 목표는 여러 세분 시장, 즉 클라이언트(데스크톱 및 모바일), 서버(표준형 및 기업용), 및 임베디드 및 통신 디바이스를 연결해주는 개방형 아키텍처에서 여러 벤더들의 컴포넌트 및 디바이스를 상호 동작할 수 있게 하는 것이다. PCI 익스프레스는 다양한 미래의 컴퓨팅 및 통신 플랫폼을 목적으로 정의된 고성능의 범용 I/O 인터커넥트이다. 그의 사용 모델, 로드-스토어(load-store architecture) 아키텍처, 및 소프트웨어 인터페이스와 같은 일부 PCI 속성은 개정을 통해 유지되어 온 반면, 이전의 병렬 버스 구현은 뛰어난 확장성의 완전 직렬 인터페이스로 대체되었다. PCI 익스프레스의 최신 버전은 새로운 레벨의 성능 및 특징을 전달하기 위하여 최신의 포인트-투-포인트 인터커넥트, 스위치-기반 기술, 및 패킷화된 프로토콜을 활용한다. 전력 관리, 서비스 품질(Quality Of Service, QoS), 핫-플러그/핫-스왑 지원, 데이터 무결성, 및 오류 처리는 PCI 익스프레스에 의해 지원되는 최신의 특징들 중 몇 가지이다.
도 7을 참조하면, 도시된 한 세트의 컴포넌트를 상호접속하는 포인트-투-포인트 링크로 구성된 일 실시예를 도시한다. 시스템(700)은 제어기 허브(715)에 연결된 프로세서(705) 및 시스템 메모리(710)를 포함한다. 프로세서(705)는 마이크로프로세서, 호스트 프로세서, 임베디드 프로세서, 코-프로세서, 또는 다른 프로세서와 같은 임의의 프로세싱 요소를 포함할 수 있다. 프로세서(705)는 프론트-사이드 버스(front-side bus, FSB)(706)를 통해 제어기 허브(715)에 연결된다. 일 실시예에서, FSB(706)는 아래에서 설명되는 바와 같이 직렬의 포인트-투-포인트 인터커넥트이다. 다른 실시예에서, 링크(706)는 다양한 인터커넥트 표준을 준용하는 직렬의 차동 인터커넥트 아키텍처를 포함한다.
시스템 메모리(710)는 시스템(700) 내 디바이스에 의해 액세스 가능한 랜덤 액세스 메모리(random access memory, RAM), 비-휘발성(non-volatile, NV) 메모리, 또는 다른 메모리와 같은 임의의 메모리 디바이스를 포함한다. 시스템 메모리(710)는 메모리 인터페이스(716)를 통해 제어기 허브(715)에 연결된다. 메모리 인터페이스의 예는 더블-데이터 레이트(double-data rate, DDR) 메모리 인터페이스, 듀얼-채널 DDR 메모리 인터페이스 및 다이나믹 RAM(DRAM) 메모리 인터페이스를 포함한다.
일 실시예에서, 제어기 허브(715)는 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express, PCIe 또는 PCIE) 상호연결 계층에서 루트 허브, 루트 콤플렉스, 또는 루트 제어기를 포함할 수 있다. 제어기 허브(715)의 예는 칩셋, 메모리 제어기 허브(memory controller hub, MCH), 노스브릿지, 인터커넥트 제어기 허브(interconnect controller hub, ICH), 사우스브릿지, 및 루트 제어기/허브를 포함한다. 종종 칩셋이라는 용어는 물리적으로 별개인 두 개의 제어기 허브, 즉 인터커넥트 제어기 허브(ICH)에 연결된 메모리 제어기 허브(MCH)를 말한다. 본 발명의 시스템은 종종 프로세서(705)와 함께 통합된 MCH를 포함하지만, 제어기(715)는 아래에서 설명되는 바와 유사한 방식으로 I/O 디바이스와 통신한다는 것을 주목하여야 한다. 일부 실시예에서, 선택사양으로 피어-투-피어 라우팅이 루트 콤플렉스(715)를 통해 지원된다.
여기서, 제어기 허브(715)는 직렬 링크(719)를 통해 스위치/브릿지(720)에 연결된다. 인터페이스/포트(717 및 721)라고도 지칭될 수 있는 입력/출력 모듈(717 및 721)은 제어기 허브(715)와 스위치(720) 사이에서 통신을 제공하는 계층화된 프로토콜 스택을 포함/구현할 수 있다. 일 실시예에서, 복수의 디바이스가 스위치(720)에 연결될 수 있다.
스위치/브릿지(720)는 패킷/메시지를 디바이스(125)로부터 상류 측으로, 즉 루트 콤플렉스를 향한 계층 위쪽의 제어기 허브(715)로 라우팅하며 하류 측으로, 즉 루트 제어기로부터 계층 아래쪽으로, 프로세서(705) 또는 시스템 메모리(710)로부터 디바이스(725)로 라우팅한다. 일 실시예에서, 스위치(720)는 복수의 가상 PCI-PCI 브릿지 디바이스의 논리적 어셈블리라고 지칭된다. 디바이스(725)는 I/O 디바이스, 네트워크 인터페이스 제어기(Network Interface Controller, NIC), 애드-인 카드(add-in card), 오디오 프로세서, 네트워크 프로세서, 하드 드라이브, 저장 디바이스, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 이동식 저장 디바이스, 파이어와이어 디바이스, 범용 직렬 버스(Universal Serial Bus, USB) 디바이스, 스캐너, 및 다른 입력/출력 디바이스와 같은 전자 시스템에 연결되는 임의의 내부 또는 외부 디바이스나 컴포넌트를 포함한다. 종종 PCIe에서, 직업 용어 이를 테면 디바이스가 엔드포인트라고 지칭된다. 비록 구체적으로 도시되지 않을지라도, 디바이스(725)는 레거시 또는 다른 버전의 PCI 디바이스를 지원하는 PCIe 대 PCI/PCI-X 브릿지를 포함할 수 있다. PCIe에서 엔드포인트 디바이스는 종종 레거시, PCIe, 또는 루트 콤플렉스 통합형 엔드포인트로서 분류되기도 한다.
그래픽 가속기(730) 또한 직렬 링크(732)를 통해 제어기 허브(715)에 연결될 수 있다. 일 실시예에서, 그래픽 가속기(730)는 ICH에 연결된 MCH에 연결된다. 그러면 스위치(720)가 ICH에 연결되고 이에 따라서 I/O 디바이스(725)가 ICH에 연결된다. I/O 모듈(731 및 718)은 또한 그래픽 가속기(730)와 제어기 허브(715) 사이에서 통신하기 위해 계층화된 프로토콜 스택을 구현한다. 앞에서 MCH의 설명과 유사하게, 그래픽 제어기 또는 그래픽 가속기(730) 자체는 프로세서(705) 내에 통합될 수 있다.
도 8을 참조하면, 계층화된 프로토콜 스택의 실시예가 도시된다. 계층화된 프로토콜 스택(800)은 퀵패스 인터커넥트(Quick Path Interconnect, QPI) 스택, PCIe 스택, 차세대 고성능 컴퓨팅 인터커넥트(next generation high performance computing interconnect, HPI) 스택, 또는 다른 계층화된 스택과 같은 임의의 형태의 계층화된 통신 스택을 포함할 수 있다. 도 7 내지 도 9를 참조하여 바로 아래에서의 설명은 PCIe 스택에 관련할지라도, 동일한 개념이 다른 인터커넥트 스택에 적용될 수 있다. 일 실시예에서, 프로토콜 스택(800)은 트랜잭션 계층(805), 링크 계층(810), 및 물리 계층(820)을 포함하는 PCIe 프로토콜 스택이다. 인터페이스는 통신 프로토콜 스택(800)으로서 대표할 수 있다. 통신 프로토콜 스택이라는 표현은 프로토콜 스택을 구현하는/포함하는 모듈 또는 인터페이스라고도 지칭될 수 있다.
PCIe 익스프레스는 컴포넌트들 사이에서 정보를 전달하기 위해 패킷을 사용한다. 패킷은 트랜잭션 계층(805) 및 데이터 링크 계층(810)에서 형성되어 정보를 송신 컴포넌트로부터 수신 컴포넌트로 전달한다. 송신된 패킷은 다른 계층을 통해 흐르므로, 패킷은 그러한 계층에서 패킷을 처리하는데 필요한 부가적인 정보로 확장된다. 수신 측에서, 역 처리가 수행되며 패킷은 그러한 물리 계층(820) 표현으로부터 데이터 링크 계층(810) 표현으로 변환되고 최종적으로 (트랜잭션 계층 패킷의 경우) 수신 디바이스의 트랜잭션 계층(805)에 의해 처리될 수 있는 형태로 변환된다.
일 실시예에서, 트랜잭션 계층(805)은 디바이스의 프로세싱 코어와 인터커넥트 아키텍처, 이를 테면 데이터 링크 계층(810) 및 물리 계층(820) 사이에서 인터페이스를 제공할 수 있다. 이와 관련하여, 트랜잭션 계층(805)의 주요 기능은 패킷(즉, 트랜잭션 계층 패킷(transaction layer packet) 또는 TLP)의 조립과 해체를 포함할 수 있다. 트랜잭션 계층(805)은 전형적으로 TLP에 대하여 크레딧 기반 흐름 제어(Credit-based flow control)를 관리할 수 있다. PCIe는 스플릿 트랜잭션(split transaction), 즉 타겟 디바이스가 응답에 필요한 데이터를 수집하는 동안 링크로 하여금 다른 트래픽을 전달하게 해주는, 요청과 응답이 시간에 의해 분리되어 있는 트랜잭션을 구현한다.
또한 PCIe는 크레딧 기반 흐름 제어를 활용한다. 이러한 체계에서, 디바이스는 트랜잭션 계층(805)에서 각각의 수신 버퍼마다 초기 크레딧 수량을 광고한다. 제어기 허브와 같이, 링크의 반대편에 있는 외부 디바이스는 각각의 TLP에 의해 소비된 크레딧의 개수를 카운트한다. 트랜잭션은 만일 그 트랜잭션이 크레딧 한계치를 초과하지 않으면 송신될 수 있다. 응답을 수신하면, 크레딧 수량이 복원된다. 크레딧 체계의 장점은 크레딧 제한에 처하지 않으면, 크레딧 반환의 지연이 성능에 영향을 미치지 않는다는 것이다.
일 실시예에서, 네 개의 트랜잭션 어드레스 공간은 구성 어드레스 공간, 메모리 어드레스 공간, 입력/출력 어드레스 공간, 및 메시지 어드레스 공간을 포함할 수 있다. 메모리 공간 트랜잭션은 데이터를 메모리-매핑된 위치로/로부터 전달하는 판독 요청 및 기록 요청 중 하나 이상을 포함한다. 일 실시예에서, 메모리 공간 트랜잭션은 두 가지 상이한 어드레스 포맷, 예를 들면 32비트 어드레스와 같이 짧은 어드레스 포맷, 또는 64비트 어드레스와 같이 긴 어드레스 포맷을 이용할 수 있다. 구성 공간 트랜잭션은 PCIe 디바이스의 구성 공간에 액세스하는데 사용될 수 있다. 구성 공간과의 트랜잭션은 판독 요청 및 기록 요청을 포함할 수 있다. 메시지 공간 트랜잭션(또는 간단히 메시지)는 PCIe 에이전트들 사이에서 대역-내(in-band) 통신을 지원하기 위해 정의된다.
그러므로, 일 실시예에서, 트랜잭션 계층(805)은 패킷 헤더/패이로드(806)를 조립한다. 현재 패킷 헤더/패이로더의 포맷은 PCIe 사양서 웹사이트에서 PCIe 사양서에서 찾아볼 수 있다.
데이터 링크 계층(810)이라고도 지칭되는 링크 계층(810)은 트랜잭션 계층(805)과 물리 계층(820) 사이의 중간 단계로 동작할 수 있다. 일 실시예에서, 데이터 링크 계층(810)의 기능은 링크상의 두 컴포넌트들 사이에서 트랜잭션 계층 패킷(TLP)을 교환하기 위한 신뢰할 수 있는 메커니즘을 제공하는 것이다. 데이터 링크 계층(810)의 일 측은 트랜잭션 계층(805)에 의해 조립되는 TLP를 받아들이고, 패킷 시퀀스 식별자(811) 즉, 식별 번호 또는 패킷 번호를 적용하고, 오류 검출 코드, 즉 CRC(812)를 계산하여 적용하고, 물리 계층을 통해 외부 디바이스로 전송하기 위해 수정된 TLP를 물리 계층(820)에 제공한다.
일 실시예에서, 물리 계층(820)은 패킷을 외부 디바이스에 물리적으로 송신하는 논리 서브블록(821) 및 전기 서브블록(822)을 포함한다. 여기서 논리 서브블록(821)은 물리 계층(821)의 "디지털" 기능에 대한 역할을 수행한다. 이와 관련하여, 논리 서브블록은 물리 서브블록(822)에 의해 전송하기 위한 발송 정보를 준비하는 송신 섹션과, 수신된 정보를 링크 계층(810)에 전달하기 전에 수신된 정보를 식별하고 준비하는 수신 섹션을 포함한다.
물리 블록(822)은 송신기와 수신기를 포함한다. 송신기는 논리 서브블록(821)에 의해, 송신기가 직렬화하여 외부 디바이스에 송신하는 심볼을 공급받는다. 수신기는 외부 디바이스로부터 직렬화된 심볼을 공급받고 수신된 신호를 비트스트림으로 변환한다. 비트스트림은 역직렬화되어 논리 서브블록(821)에 공급된다. 일 실시예에서, 8b/10b 송신 코드가 사용되고, 10 비트 심볼이 송신되고/수신된다. 여기서, 패킷을 프레임(823)으로 구성하기 위해 특수한 심볼이 사용된다. 또한 일 예에서, 수신기는 또한 입력 직렬 스트림으로부터 복구된 심볼 클록을 제공한다.
앞에서 설명된 바와 같이, 비록 트랜잭션 계층(805), 링크 계층(810) 및 물리 계층(820)이 PCIe 프로토콜 스택의 특정 실시예에 관하여 설명되었지만, 계층화된 프로토콜 스택은 그것으로 제한되지 않는다. 실제로, 임의의 계층화된 프로토콜이 포함되고/구현될 수 있다. 일 예로서, 계층화된 프로토콜로서 표현되는 포트/인터페이스는, (1) 패킷을 조립하는 제 1 계층 즉, 트랜잭션 계층과, 패킷을 순차적으로 배열하는 제 2 계층 즉, 링크 계층과, 패킷을 송신하는 제 3 계층, 즉, 물리 계층을 포함할 수 있다. 특정 예로서, QPI 계층화된 프로토콜이 활용된다.
다음으로 도 9를 참조하면, PCIe 직렬 포인트-투-포인트 패브릭의 실시예가 도시된다. PCIe 직렬 포인트-투-포인트 링크의 실시예가 예시되지만, 직렬 포인트-투-포인트는 직렬 데이터를 송신하기 위한 임의의 송신 경로를 포함하므로, 직렬 포인트-투-포인트 링크는 그렇게 한정되지 않는다. 도시된 실시예에서, 기본 PCIe 링크는 두 개의 저 전압의 차동 구동된 신호 쌍들, 즉 송신 쌍(906/911) 및 수신 쌍(912/907)을 포함할 수 있다. 따라서, 디바이스(905)는 데이터를 디바이스(910)로 전송하는 송신 로직(906) 및 데이터를 디바이스(910)로부터 수신하는 수신 로직(907)을 포함한다. 다시 말해서, 두 개의 송신 경로, 즉 경로(916 및 917), 및 두 개의 수신 경로, 즉 경로(918 및 919)가 PCIe 링크에 포함된다.
송신 경로는 송신 회선, 구리 회선, 광 회선, 무선 통신 채널, 적외선 통신 링크, 또는 다른 통신 경로와 같이 데이터를 송신하기 위한 임의의 경로를 말한다. 두 디바이스, 이를 테면, 디바이스(905)와 디바이스(910) 사이의 접속은 링크(415)와 같은 링크라고 지칭된다. 링크는 하나의 레인(lane)을 지원할 수 있고, 각각의 레인은 한 세트의 차동 신호 쌍(하나의 쌍은 송신용, 하나의 쌍은 수신용)을 나타낸다. 대역폭을 조정하기 위해, 링크는 xN으로 표기된 복수의 레인을 합친 것일 수 있으며, 여기서 N은 예를 들어 1,2, 4, 8, 12, 16, 32, 64, 또는 그 보다 넓은 임의의 지원된 링크 폭이다.
차동 쌍은 레인(916 및 917)과 같이 차동 신호를 송신하는 두 개의 송신 경로를 말한다. 일 예로서, 회선(916)이 저전압 레벨에서 고전압 레벨로 토글할 때, 즉, 상승 에지일 때, 회선(917)은 하이 로직 레벨에서 로우 로직 레벨로, 즉 하강 에지로 진행한다. 차동 신호는 잠재적으로 더 양호한 신호 무결성(signal integrity), 즉 크로스-커플링, 전압 오버슈트/언더슈트, 링잉 등과 같은 더 양호한 전기적 특성을 보여준다. 이것은 더 양호한 타이밍 윈도우를 가능하게 해주며, 이것은 통신 주파수를 더 빠르게 해준다.
이제 도 10을 참조하면, 본 발명에 따른 시스템 온-칩(SOC) 디자인의 실시예가 도시된다. 특정한 예시적인 예로서, SOC(2000)는 사용자 장비(user equipment, UE)에 포함된다. 일 실시예에서, UE는 휴대폰, 스마트폰, 태블릿, 울트라-신 노트북, 광대역 어댑터를 갖춘 노트북, 또는 임의의 다른 유사 통신 장치와 같은 최종 사용자에 의해 통신하는데 사용되는 임의의 장치를 말한다. 종종 UE는 GSM 네트워크에서 어쩌면 사실상 이동국(mobile station, MS)에 대응하는 기지국이나 노드에 접속시킨다.
여기서, SOC(2000)는 2 코어(2006 및 2007)를 포함한다. 앞에서 논의한 바와 유사하게, 코어(2006 및 2007)는 인텔® 아키텍처 코어™ 기반의 프로세서, 어드번스드 마이크로 디바이스 인코포레이티드(AMD) 프로세서, MIPS 기반 프로세서, ARM 기반 프로세서 디자인, 또는 이들의 고객뿐만 아니라 이들의 실시권자 또는 사용자와 같은 명령어 집합 아키텍처를 준용할 수 있다. 코어(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(2085), 및 와이파이(2085)와 같은 통신을 위한 주변기기를 예시한다. 시스템에는 또한 전력 제어기(2055)가 포함된다. 앞에서 언급한 바와 같이, UE는 통신을 위한 무선 디바이스를 포함한다는 것을 주목하자. 결과적으로, 이러한 주변 통신 모듈은 모두 필요한 것은 아니다. 그러나 UE의 일부 형태에서, 외부 통신을 위한 무선 디바이스가 포함될 것이다.
다음의 예는 다른 실시예에 관한 것이다.
일 예에서, 장치는 직렬 인터커넥트에 연결된 물리 계층의 경로 내로 들어갈 때 제 1 값을 데이터의 유닛과 연관시키는 타이밍 로직과, 물리 계층의 상기 경로로부터 나올 때 제 2 값을 연관시키고 제 1 및 제 2 값에 기초하여 물리 계층의 상기 경로와 연관된 지연을 결정하는 지연 로직을 포함한다.
일 예에서, 장치는 로컬 클록 신호에 따라서 시작 값과 종료 값 사이를 카운트하는 카운터 -타이밍 로직은 카운터를 포함함 - 와, 카운터의 출력을 저장하는 제 1 레지스터 - 제 1 레지스터는 복구된 클록 신호에 따라서 샘플링됨 - 와, 제 1 레지스터로부터 수신된 카운터 출력의 샘플을 저장하는 미러 탄성 버퍼 - 미러 탄성 버퍼는 물리 계층의 탄성 버퍼를 미러링함 - 와, 미러 탄성 버퍼로부터의 카운터 출력 샘플 및 카운터로부터 출력된 현재 카운터 값을 수신하고, 카운터 출력 샘플 및 현재 카운터 값에 적어도 일부 기초하여 물리 계층을 횡단하는 데이터 유닛의 지연을 결정하는 해상도 로직 - 지연 로직은 해상도 로직을 포함함 - 을 더 포함한다.
일 예에서, 해상도 로직은 지연에 대응하는 시간 값 및 시간 값이 유효하다는 것을 표시하는 유효 값을 MAC 유닛으로 출력한다. 장치는 정밀 시간 측정 회로를 포함할 수 있으며, 정밀 시간 측정 회로의 지연은 물리 계층의 인터커넥트 인터페이스로부터 MAC 인터페이스까지 횡단하는 심볼의 지연으로 고정된다.
일 예에서, 카운터는 그레이 코드 카운터(Gray code counter)를 포함하며 해상도 로직은 현재 카운터 값과 카운터 출력 샘플과의 차를 그레이 코드로부터 이진 값으로 변환한다. 물리 계층은 물리 계층의 검출기에서 제 1 심볼의 검출에 응답하여 복구된 클록 신호를 취득할 수 있다. 미러 탄성 버퍼는 탄성 버퍼의 일부분을 포함할 수 있고, 일부분은 복수의 엔트리를 포함하고, 각각의 엔트리는 탄성 버퍼의 대응하는 엔트리의 미리 결정된 비트 수이다.
다른 예에서, 장치는 직렬 링크에 연결된 PHY를 포함하며, PHY는 직렬 링크를 통해 수신되는 데이터를 처리하는 수신기 경로 - 수신기 경로는 고정 지연과 연관된 적어도 하나의 고정 지연 단 및 적어도 하나의 가변 지연 단을 포함함 -와, 적어도 하나의 가변 지연 단과 연관된 메트릭을 결정하는 가변 지연 로직과, 고정 지연 및 메트릭에 기초하여 수신기 경로에 대한 PHY 지연을 결정하는 PHY 지연 로직을 포함한다.
일 예에서, PHY는 데이터로부터 비트스트림 및 제 1 클록 신호를 복구하는 복구 회로와, 비트스트림을 병렬 데이터로 변환하는 변환기와, 제 1 클록 신호에 따라서 기록되고 제 2 클록 신호에 따라서 판독될 복수의 엔트리를 갖는 탄성 버퍼 - 탄성 버퍼는 가변 지연 단의 적어도 일부분에 대응함 - 와, 메트릭의 결정을 가능하게 하기 위해, 병렬 데이터가 탄성 버퍼의 엔트리에 기록될 때 탄성 버퍼의 깊이를 결정하고 깊이의 값을 대응하는 엔트리와 연관시키는 탄성 버퍼에 연결된 가변 지연 로직을 포함한다.
일 예에서, 가변 지연 로직은 값을 대응하는 엔트리와 함께 탄성 버퍼에 저장한다. 가변 지연 로직은 n비트를 갖는 카운터를 포함하며, 탄성 버퍼의 복수의 엔트리는 2n보다 크지 않다. PHY는 병렬 데이터를 디코딩된 심볼로 디코딩하는 디코더를 더 포함하며, 디코더는 탄성 버퍼의 출력에 연결된다. PHY는 디코딩된 심볼과 함께 값을 전달한다. MAC 유닛은 PHY에 연결되어 디코딩된 심볼 및 대응하는 값을 수신하고 PHY에 대한 이동 지연(transit latency)을 결정한다. MAC 유닛은 메트릭 및 고정 지연에 기초하여 이동 지연을 결정하는 제어기를 더 포함한다.
일 예에서, 장치는 다양한 수단을 이용하여 구현될 수 있는 프로세서일 수 있다. 일 예에서, 프로세서는 사용자 장비의 터치에 의해 작동되는 디바이스에 포함된 SoC를 포함한다. 다른 예에서, 시스템은 디스플레이 및 메모리를 포함하고, 전술한 예 중 하나 이상의 예의 프로세서를 포함한다.
다른 예에서, 방법은 제 1 카운터의 출력을 제 1 저장소에 저장하는 단계와, 심볼 클록 신호에 따라서 제 1 저장소의 값을 샘플링하는 단계와, 샘플링된 값을 심볼 처리 파이프라인에 고정된 병렬 파이프라인을 통해 전파하는 단계 - 심볼 처리 파이프라인은 직렬 데이터를 수신하고 직렬 데이터를 병렬 데이터로 변환하며 병렬 데이터를 MAC 회로에 출력함 - 와, 병렬 파이프라인의 로직에서, 샘플링된 값 및 제 1 카운터의 현재 출력에 기초하여 심볼 처리 파이프라인의 지연을 결정하는 단계를 포함한다.
일 예에서, 방법은 독립적인 클록 신호에 따라 제 1 카운터를 클록킹하는 단계를 더 포함할 수 있다. 일 예에서, 방법은 제 1 저장소로부터 샘플된 값을 미러 버퍼에 저장하는 단계를 더 포함할 수 있으며, 미러 버퍼는 심볼 처리 파이프라인의 탄성 버퍼의 엔트리 개수와 동일한 엔트리의 양을 포함한다. 일 예에서, 방법은 샘플링된 값을 미러 버퍼로부터 출력하는 단계 및 샘플링된 값을 미러 버퍼에 연결된 제 2 저장소에 저장하는 단계를 더 포함할 수 있다.
일 예에서, 방법은 샘플링된 값을 제 2 저장소로부터 해상도 로직으로 제공하는 단계를 더 포함할 수 있으며, 해상도 로직은 또한 제 1 카운터의 현재 출력을 수신한다. 일 예에서, 방법은 해상도 로직에서, 현재 출력, 샘플링된 값, 및 심볼 처리 파이프라인의 고정 지연의 적어도 일부분에 대응하는 미리 결정된 값을 이용하여 지연을 결정하는 단계를 더 포함할 수 있다.
일 예에서, 방법은 지연 값 및 지연 유효 신호를 측파대 채널을 통해 MAC 회로에 전달하는 단계를 더 포함할 수 있으며, 지연 값은 기본 채널을 통해 심볼 처리 파이프라인으로부터 MAC 회로에 전달된 디코딩된 심볼과 연관된다.
일 예에서, 직렬 데이터를 인터커넥트를 통해 PHY로부터 PHY에 연결된 디바이스에 전달하는 단계와, 전달된 직렬 데이터에 대하여 PHY의 송신 부분의 이동 지연에 대응하는 지연 값을 결정하는 단계를 더 포함할 수 있으며, 지연 값은 심볼 별로 하나의 클록 사이클 동안 유효하고 MAC 회로에 전달된다.
다른 예에서, 명령어를 포함하는 컴퓨터 판독가능한 매체는 전술한 예 중 어느 예의 방법을 수행한다.
다른 예에서, 장치는 전술한 예 중 어느 예의 방법을 수행하기 위한 수단을 포함한다.
다른 예에서, 시스템은 직렬 데이터를 인터커넥트를 통해 수신하는 수신기 - 수신기는 직렬 데이터를 수신하고 직렬 데이터를 병렬 데이터로 변환하며 병렬 데이터를 수신기의 MAC 유닛에 제공하는 PHY -PHY는 PHY에서 직렬 데이터를 수신하고 병렬 데이터를 MAC 유닛으로 송신하는 사이에서 가변 지연을 가지며, PHY는 가변 지연의 값을 결정하고 값을 병렬 데이터와 함께 MAC 유닛에 전달하는 로직을 더 포함함 - 과, 병렬 데이터를 수신하고 처리하는 MAC 유닛 - MAC 유닛은 또한 값을 수신 함 - 을 포함함 - 와, 인터커넥트를 통해 수신기에 연결되어 직렬 데이터를 발생하여 수신기에 전달하는 송신기를 포함한다.
PHY는 수신 경로 및 송신 경로를 포함하며, 송신 경로는 MAC 유닛으로부터 병렬 정보를 수신하고 병렬 정보를 인터커넥트를 통해 송신기에 전달하기 위한 직렬 스트림으로 변환한다.
일 예에서, 송신 경로는 제 2 값을 MKAC 유닛에 전달하는 제 2 로직을 포함하며, 제 2 값은 PHY에서 병렬 정보를 수신하여 직렬 스트림을 송신기에 전달하는 사이의 지연에 대응한다.
일 예에서, PHY는 병렬 데이터의 엔트리를 저장하는 탄성 버퍼를 포함할 수 있으며, 탄성 버퍼는 가변 깊이를 가지며, 로직은 값을 대응하는 엔트리와 함께 탄성 버퍼에 저장한다. 로직은 n비트를 갖는 카운터를 포함하며, 탄성 버퍼의 복수의 엔트리는 2n보다 크지 않다. PHY는 탄성 버퍼를 포함하는 심볼 처리 경로 및 카운터를 포함하는 시간 측정 경로를 포함할 수 있으며, 로직 및 미러 탄성 버퍼는 탄성 버퍼의 깊이와 동일한 깊이를 유지한다. MAC 유닛은 값 및 미리 결정된 고정 지연 값에 기초하여 PHY에 대한 이동 지연을 결정하는 제어기를 포함할 수 있다.
전술한 예들의 다양한 조합이 가능하다는 것을 이해하여야 한다.
실시예는 많은 여러 형태의 시스템에서 사용될 수 있다. 예를 들면, 일 실시예에서, 통신 디바이스는 본 명세서에서 설명되는 다양한 방법 및 기술을 수행하도록 구성될 수 있다. 물론, 본 발명의 범주는 통신 디바이스로 한정되지 않으며, 그 대신 다른 실시예는 명령어를 처리하는 다른 형태의 장치, 또는 컴퓨팅 디바이스에서 실행됨에 따라서 디바이스로 하여금 본 명세서에서 설명된 방법 및 기술 중 한가지 이상을 실행하게 하는 명령어를 포함하는 하나 이상의 머신 판독 가능한 매체에 관한 것일 수 있다.
실시예는 코드로 구현될 수 있으며 명령어를 수행하기 위해 시스템을 프로그래밍하는데 사용될 수 있는 명령어가 저장된 비일시적 저장 매체에 저장될 수 있다. 저장 매체는 이것으로 한정되는 것은 아니지만, 전자 명령어를 저장하기에 적합한 플로피 디스크, 광 디스크, 고체 상태 드라이브(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 (16)

  1. 장치로서,
    직렬 링크에 연결된 물리 계층 유닛(physical layer unit: PHY)을 포함하되,
    상기 PHY는 상기 직렬 링크를 통해 수신될 데이터를 처리하는 수신기 블록을 포함하고, 상기 수신기 블록은,
    상기 직렬 링크 및 직렬 출력에 연결되는 차동 입력 쌍(a pair of differential input)을 갖는 차동 수신기와,
    클럭 신호를 수신하는 제 1 입력, 상기 차동 수신기의 출력에 연결되는 제 2 입력, 및 복구된 비트 클럭을 포함하는 출력을 갖는 클럭 복구 회로와,
    상기 차동 수신기의 상기 직렬 출력에 연결되는 제 1 입력, 상기 복구된 비트 클럭을 수신하는 제 2 입력, 및 직렬 출력을 갖는 데이터 복구 회로와,
    상기 데이터 복구 회로의 상기 직렬 출력에 연결되는 제 1 입력, 상기 복구된 비트 클럭을 수신하는 제 2 입력, 10 비트 폭을 갖는 병렬 출력, 및 심볼 클럭 출력을 갖는 직렬-병렬 변환기와,
    상기 심볼 클럭 출력을 수신하고 수신기 유효(RxValid) 신호 및 복구된 심볼 클럭을 출력하는 검출 회로와,
    상기 직렬-병렬 변환기의 상기 병렬 출력에 연결되는 10 비트 폭의 병렬 입력, 상기 복구된 심볼 클럭을 수신하는 입력, 및 제 2 클럭 신호를 수신하는 입력을 갖고, 병렬 출력을 가지며 버퍼 오버플로우/언더플로우 신호를 출력하는, 복수의 엔트리를 저장하기 위한 탄성 버퍼(elastic buffer)와,
    상기 탄성 버퍼의 상기 병렬 출력에 연결되는 병렬 입력, 및 상기 제 2 클럭 신호를 수신하는 입력을 갖고, 8 비트 병렬 출력을 가지며, 에러 신호를 출력하는 디코더와,
    상기 탄성 버퍼로의 입력(incoming) 엔트리의 저장과 관련하여 상기 탄성 버퍼의 깊이에 대응하는 값을 저장하는 수단을 포함하는
    장치.
  2. 제 1 항에 있어서,
    매체 액세스 제어(Media Access Control, MAC) 유닛과,
    PHY-MAC 인터페이스와,
    상기 PHY-MAC 인터페이스를 거쳐 상기 탄성 버퍼의 깊이에 관한 정보를 상기 MAC 유닛으로 전달하는 수단을 더 포함하는
    장치.
  3. 제 1 항에 있어서,
    상기 디코더의 출력에 연결되는 입력을 갖고, 상기 제 2 클럭 신호를 수신하는 제 1 클럭 입력 및 병렬 클럭(PCLK) 신호를 수신하는 제 2 클럭 입력을 갖는, 원하는 폭의 병렬 데이터 패킷을 생성하기 위한 비트 폭 로직을 더 포함하는
    장치.
  4. 제 3 항에 있어서,
    상기 비트 폭 로직은 8 비트, 16 비트, 또는 32 비트의 폭을 갖는 병렬 데이터 패킷을 생성하도록 구성가능한
    장치.
  5. 제 1 항에 있어서,
    상기 장치는 PCI 익스프레스, SATA, 및 USB 구조(PIPE) 사양을 위한 PHY 인터페이스와 호환가능한
    장치.
  6. 제 1 항에 있어서,
    상기 장치는 정밀 시간 측정(precise time measurement, PTM) 로직을 포함하는
    장치.
  7. 제 1 항에 있어서,
    상기 디코더는 10 비트 병렬 입력 및 8 비트 병렬 출력을 갖는 8b/10b 디코더를 포함하는
    장치.
  8. 제 1 항에 있어서,
    상기 디코더는 130 비트 병렬 입력 및 128 비트 병렬 출력을 갖는 128b/130b 디코더를 포함하는
    장치.
  9. 직렬 링크를 통해 수신되는 직렬 데이터를 처리하는 장치에 의해 수행되는 방법으로서,
    상기 직렬 링크에 연결된 상기 장치의 물리 계층 유닛(PHY)의 수신기 블록에서 직렬 데이터를 수신하는 단계―상기 수신기 블록은,
    상기 직렬 링크 및 직렬 출력에 연결되는 차동 입력 쌍을 갖는 차동 수신기와,
    클럭 신호를 수신하는 제 1 입력, 상기 차동 수신기의 출력에 연결되는 제 2 입력, 및 복구된 비트 클럭을 포함하는 출력을 갖는 클럭 복구 회로와,
    상기 차동 수신기의 상기 직렬 출력에 연결되는 제 1 입력, 상기 복구된 비트 클럭을 수신하는 제 2 입력, 및 직렬 출력을 갖는 데이터 복구 회로와,
    상기 데이터 복구 회로의 상기 직렬 출력에 연결되는 제 1 입력, 상기 복구된 비트 클럭을 수신하는 제 2 입력, 10 비트 폭을 갖는 병렬 출력, 및 심볼 클럭 출력을 갖는 직렬-병렬 변환기와,
    상기 심볼 클럭 출력을 수신하고 수신기 유효(RxValid) 신호 및 복구된 심볼 클럭을 출력하는 검출 회로와,
    상기 직렬-병렬 변환기의 병렬 출력에 연결되는 10 비트 폭의 병렬 입력, 상기 복구된 심볼 클럭을 수신하는 입력, 및 제 2 클럭 신호를 수신하는 입력을 갖고, 병렬 출력을 가지며 버퍼 오버플로우/언더플로우 신호를 출력하는, 복수의 엔트리를 저장하기 위한 탄성 버퍼와,
    상기 탄성 버퍼의 상기 병렬 출력에 연결되는 병렬 입력, 및 상기 제 2 클럭 신호를 수신하는 입력을 갖고, 8 비트 병렬 출력을 가지며, 에러 신호를 출력하는 디코더와,
    상기 탄성 버퍼로의 입력 엔트리의 저장과 관련하여 상기 탄성 버퍼의 깊이에 대응하는 값을 저장하는 수단을 포함함―와,
    상기 차동 수신기, 상기 클럭 복구 회로, 상기 데이터 복구 회로, 상기 직렬-병렬 변환기, 상기 검출 회로, 상기 탄성 버퍼, 상기 디코더, 및 상기 탄성 버퍼로의 입력 엔트리의 저장과 관련하여 상기 탄성 버퍼의 깊이에 대응하는 값을 저장하는 수단을 사용하여 상기 직렬 데이터를 병렬 출력으로 변환하도록 상기 수신기 블록에서 수신된 상기 직렬 데이터를 처리하는 단계를 포함하는
    방법.
  10. 제 9 항에 있어서,
    매체 액세스 제어(MAC) 유닛과,
    PHY-MAC 인터페이스와,
    상기 PHY-MAC 인터페이스를 통해 상기 탄성 버퍼의 깊이에 관한 정보를 상기 MAC 유닛에 전달하는 수단을 더 포함하되,
    상기 직렬 데이터를 처리하는 단계는 상기 PHY-MAC 인터페이스를 통해 상기 탄성 버퍼의 깊이에 관한 정보를 상기 MAC 유닛에 전달하는 단계를 더 포함하는
    방법.
  11. 제 9 항에 있어서,
    상기 수신기 블록은,
    상기 디코더의 출력에 연결되는 입력을 갖고, 상기 제 2 클럭 신호를 수신하는 제 1 클럭 입력 및 병렬 클럭(PCLK) 신호를 수신하는 제 2 클럭 입력을 갖는 비트 폭 로직을 더 포함하고,
    상기 방법은,
    원하는 폭의 병렬 데이터 패킷을 생성하기 위해 상기 비트 폭 로직을 활용하는 단계를 더 포함하는
    방법.
  12. 제 11 항에 있어서,
    8 비트, 16 비트, 또는 32 비트의 폭을 갖는 병렬 데이터 패킷을 생성하도록 상기 비트 폭 로직을 구성하는 단계를 더 포함하는
    방법.
  13. 제 9 항에 있어서,
    상기 장치는 PCI 익스프레스, SATA, 및 USB 구조(PIPE) 사양을 위한 PHY 인터페이스와 호환가능한
    방법.
  14. 제 9 항에 있어서,
    상기 장치는 정밀 시간 측정(PTM) 로직을 포함하고, 상기 PTM 로직은 상기 직렬 데이터의 처리 동안 사용되는
    방법.
  15. 제 9 항에 있어서,
    상기 디코더는 10 비트 병렬 입력 및 8 비트 병렬 출력을 갖는 8b/10b 디코더를 포함하고,
    상기 방법은,
    상기 10 비트 병렬 입력에서 10 비트 병렬 데이터를 수신하는 단계와,
    상기 8 비트 병렬 출력에서 8 비트 병렬 데이터를 출력하는 단계를 더 포함하는
    방법.
  16. 제 9 항에 있어서,
    상기 디코더는 130 비트 병렬 입력 및 128 비트 병렬 출력을 갖는 128b/130b 디코더를 포함하고,
    상기 방법은,
    상기 130 비트 병렬 입력에서 130 비트 병렬 데이터를 수신하는 단계와,
    상기 128 비트 병렬 출력에서 128 비트 병렬 데이터를 출력하는 단계를 더 포함하는
    방법.
KR1020187010368A 2013-10-30 2013-10-30 회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템 KR101974323B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/067396 WO2015065349A1 (en) 2013-10-30 2013-10-30 A method, apparatus and system for measuring latency in a physical unit of a circuit

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167008259A Division KR101855603B1 (ko) 2013-10-30 2013-10-30 회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템

Publications (2)

Publication Number Publication Date
KR20180041257A KR20180041257A (ko) 2018-04-23
KR101974323B1 true KR101974323B1 (ko) 2019-04-30

Family

ID=52995426

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187010368A KR101974323B1 (ko) 2013-10-30 2013-10-30 회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템
KR1020167008259A KR101855603B1 (ko) 2013-10-30 2013-10-30 회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020167008259A KR101855603B1 (ko) 2013-10-30 2013-10-30 회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템

Country Status (6)

Country Link
US (2) US9262347B2 (ko)
EP (3) EP3063640B1 (ko)
KR (2) KR101974323B1 (ko)
CN (2) CN105593830B (ko)
PL (1) PL3719659T3 (ko)
WO (1) WO2015065349A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104699219B (zh) * 2013-12-10 2020-06-23 联想(北京)有限公司 一种电子设备及信息处理方法
US9552269B2 (en) * 2014-12-23 2017-01-24 Intel Corporation Test logic for a serial interconnect
CN105791193A (zh) * 2016-02-19 2016-07-20 苏州沿芯微电子科技有限公司 基于多模读写器的码元恢复系统和方法
US10198394B2 (en) * 2016-05-24 2019-02-05 Intel Corporation Reduced pin count interface
CN106686627B (zh) * 2016-12-07 2020-01-14 Oppo广东移动通信有限公司 WiFi/热点的开启方法及装置
US10372657B2 (en) * 2016-12-26 2019-08-06 Intel Corporation Bimodal PHY for low latency in high speed interconnects
US10649486B1 (en) * 2016-12-28 2020-05-12 Intel Corporation Apparatus and methods for accurate latency measurements in integrated circuits
US10860449B2 (en) * 2017-03-31 2020-12-08 Intel Corporation Adjustable retimer buffer
US11809353B2 (en) * 2017-03-31 2023-11-07 Intel Corporation Component firmware interaction using hardware registers
US10437763B2 (en) * 2017-04-07 2019-10-08 Nxp B.V. Method and device for universal serial bus (USB) communication
US10887196B2 (en) * 2018-11-28 2021-01-05 Microsoft Technology Licensing, Llc Efficient metric calculation with recursive data processing
US11343748B2 (en) * 2019-02-08 2022-05-24 Samsung Electronics Co., Ltd. Coordinated beam selection in cellular mesh network
US10581587B1 (en) * 2019-04-29 2020-03-03 Advanced Micro Devices, Inc. Deskewing method for a physical layer interface on a multi-chip module
US11151011B2 (en) * 2019-10-01 2021-10-19 International Business Machines Corporation Uncore input/output latency analysis
CN112988653B (zh) * 2019-12-16 2024-04-12 广州希姆半导体科技有限公司 数据处理电路、装置以及方法
US11271712B2 (en) * 2020-01-07 2022-03-08 Microchip Technology Inc. Daisy-chained synchronous ethernet clock recovery
US11832198B2 (en) * 2020-07-02 2023-11-28 Qualcomm Incorporated Cell synchronization in physical (PHY) layer and medium access control (MAC) layer mobility
CN113220231B (zh) * 2021-05-11 2022-07-22 无锡众星微系统技术有限公司 一种支持stp应用的自适应流控方法与装置
US11474969B1 (en) * 2021-05-12 2022-10-18 Gowin Semiconductor Corporation Methods and apparatus for providing a serializer and deserializer (SERDES) block facilitating high-speed data transmissions for a field-programmable gate array (FPGA)
US11843376B2 (en) 2021-05-12 2023-12-12 Gowin Semiconductor Corporation Methods and apparatus for providing a high-speed universal serial bus (USB) interface for a field-programmable gate array (FPGA)
CN113608574A (zh) * 2021-08-09 2021-11-05 贵州省计量测试院 一种计算机微秒级时间输出方法、系统及校准系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006688A1 (en) 2007-06-27 2009-01-01 Xiao Hu Black-box host stack latency measurement
US8023530B1 (en) 2009-01-07 2011-09-20 L-3 Communications Corp. Physical layer quality of service for wireless communications
US20130177015A1 (en) 2012-01-10 2013-07-11 Garrettcom, Inc. Apparatus and method for synchronous hardware time stamping

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020021717A1 (en) * 2000-05-18 2002-02-21 Kaynam Hedayat Method and system for transmit time stamp insertion in a hardware time stamp system for packetized data networks
US6470031B1 (en) 2000-09-05 2002-10-22 Coactive Networks, Inc. Method and apparatus for accurate packet time stamping
AU2002331774A1 (en) * 2001-08-29 2003-03-18 Analog Devices, Inc. Methods and apparatus utilizing flash burst mode to improve processor performance
US8867683B2 (en) * 2006-01-27 2014-10-21 Ati Technologies Ulc Receiver and method for synchronizing and aligning serial streams
JP5171245B2 (ja) * 2007-12-28 2013-03-27 パナソニック株式会社 プロトコル遅延測定装置及びプロトコル遅延測定方法
US7860125B2 (en) * 2008-01-28 2010-12-28 Cisco Techology, Inc. Flexible time stamping
US8184760B2 (en) * 2008-09-02 2012-05-22 Taiwan Semiconductor Manufacturing Company, Ltd. Adaptive elastic buffer for communications
CN101394181A (zh) * 2008-09-24 2009-03-25 硅谷数模半导体(北京)有限公司 时钟与数据恢复电路以及具有该电路的集成芯片
US9118728B2 (en) * 2009-03-04 2015-08-25 Broadcom Corporation Method and system for determining physical layer traversal time
US8462674B2 (en) * 2009-06-04 2013-06-11 Broadcom Corporation Method and system for symmetric transmit and receive latencies in an energy efficient PHY
US9305606B2 (en) * 2009-08-17 2016-04-05 Micron Technology, Inc. High-speed wireless serial communication link for a stacked device configuration using near field coupling
US8571014B2 (en) 2010-03-02 2013-10-29 Vitesse Semiconductor Corporation Distributed packet-based timestamp engine
CN101977104B (zh) * 2010-11-13 2013-01-09 上海交通大学 基于ieee1588精确时钟同步协议系统及其同步方法
US9043509B2 (en) 2011-01-14 2015-05-26 Broadcom Corporation Method and system for low-latency networking
US20120188885A1 (en) * 2011-01-20 2012-07-26 Mehmet Tazebay Method and system for self-adapting dynamic power reduction mechanism for physical layer devices in packet data networks
US9395780B2 (en) * 2011-04-21 2016-07-19 Texas Instruments Incorporated USB bridge circuit gating RID—A and RID—GND for IDGND
US8619559B2 (en) * 2012-02-01 2013-12-31 Broadcom Corporation System and method for enabling energy efficient ethernet networks with time-sensitive protocols
CN202904568U (zh) * 2012-05-10 2013-04-24 无锡华大国奇科技有限公司 一种应用于usb3.0的弹性缓冲结构
US9229897B2 (en) * 2012-06-29 2016-01-05 Intel Corporation Embedded control channel for high speed serial interconnect

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006688A1 (en) 2007-06-27 2009-01-01 Xiao Hu Black-box host stack latency measurement
US8023530B1 (en) 2009-01-07 2011-09-20 L-3 Communications Corp. Physical layer quality of service for wireless communications
US20130177015A1 (en) 2012-01-10 2013-07-11 Garrettcom, Inc. Apparatus and method for synchronous hardware time stamping

Also Published As

Publication number Publication date
US20160124894A1 (en) 2016-05-05
EP3063640A1 (en) 2016-09-07
CN105593830A (zh) 2016-05-18
KR20160048191A (ko) 2016-05-03
US9262347B2 (en) 2016-02-16
CN108595355A (zh) 2018-09-28
EP3063640B1 (en) 2020-10-07
EP4254209A2 (en) 2023-10-04
US9558145B2 (en) 2017-01-31
EP4254209A3 (en) 2023-11-22
EP3719659C0 (en) 2023-10-04
KR20180041257A (ko) 2018-04-23
WO2015065349A1 (en) 2015-05-07
EP3719659B1 (en) 2023-10-04
CN108595355B (zh) 2021-05-25
EP3063640A4 (en) 2017-06-07
PL3719659T3 (pl) 2024-04-08
US20150117504A1 (en) 2015-04-30
CN105593830B (zh) 2019-04-09
EP3719659A1 (en) 2020-10-07
KR101855603B1 (ko) 2018-06-08

Similar Documents

Publication Publication Date Title
KR101974323B1 (ko) 회로의 물리 유닛에서 지연을 측정하는 방법, 장치 및 시스템
CN109661658B (zh) 链路物理层接口适配器
US11157350B2 (en) In-band margin probing on an operational interconnect
KR101985157B1 (ko) 멀티칩 패키지 링크
US20200132760A1 (en) Interconnect retimer enhancements
JP6251806B2 (ja) 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体
US20140281622A1 (en) Method, apparatus, and system for improving resume times for root ports and root port integrated endpoints
CN109643297B (zh) 电压调制的控制通路
KR20170041854A (ko) 수신기 회로의 런타임 동안 비트 오류율 측정
KR20160111464A (ko) 링크 인터페이스의 미사용 하드웨어의 전력 소모를 제어하는 방법, 장치, 및 시스템
WO2016099811A1 (en) Sideband parity handling
US20210004347A1 (en) Approximate data bus inversion technique for latency sensitive applications
US10257825B2 (en) Reducing hardware precision time measurement inaccuracy

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant