KR101086599B1 - 데이터 통신의 갭을 처리하는 방법 - Google Patents

데이터 통신의 갭을 처리하는 방법 Download PDF

Info

Publication number
KR101086599B1
KR101086599B1 KR1020050002604A KR20050002604A KR101086599B1 KR 101086599 B1 KR101086599 B1 KR 101086599B1 KR 1020050002604 A KR1020050002604 A KR 1020050002604A KR 20050002604 A KR20050002604 A KR 20050002604A KR 101086599 B1 KR101086599 B1 KR 101086599B1
Authority
KR
South Korea
Prior art keywords
data
data communication
link
communication
block
Prior art date
Application number
KR1020050002604A
Other languages
English (en)
Other versions
KR20050074315A (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 KR20050074315A publication Critical patent/KR20050074315A/ko
Application granted granted Critical
Publication of KR101086599B1 publication Critical patent/KR101086599B1/ko

Links

Images

Classifications

    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02DFOUNDATIONS; EXCAVATIONS; EMBANKMENTS; UNDERGROUND OR UNDERWATER STRUCTURES
    • E02D5/00Bulkheads, piles, or other structural elements specially adapted to foundation engineering
    • E02D5/22Piles
    • E02D5/52Piles composed of separable parts, e.g. telescopic tubes ; Piles composed of segments
    • E02D5/523Piles composed of separable parts, e.g. telescopic tubes ; Piles composed of segments composed of segments
    • E02D5/526Connection means between pile segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02DFOUNDATIONS; EXCAVATIONS; EMBANKMENTS; UNDERGROUND OR UNDERWATER STRUCTURES
    • E02D5/00Bulkheads, piles, or other structural elements specially adapted to foundation engineering
    • E02D5/22Piles
    • E02D5/24Prefabricated piles
    • E02D5/30Prefabricated piles made of concrete or reinforced concrete or made of steel and concrete
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • 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
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02DFOUNDATIONS; EXCAVATIONS; EMBANKMENTS; UNDERGROUND OR UNDERWATER STRUCTURES
    • E02D2600/00Miscellaneous
    • E02D2600/20Miscellaneous comprising details of connection between elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Structural Engineering (AREA)
  • Quality & Reliability (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Life Sciences & Earth Sciences (AREA)
  • Mining & Mineral Resources (AREA)
  • Paleontology (AREA)
  • Civil Engineering (AREA)
  • Communication Control (AREA)

Abstract

직렬자(300-1) 및 역직렬자(400-1)를 이용하여 데이터 통신 지연을 감소시키는 데이터 통신 아키텍쳐(200)가 개시되어 있다. 예시적인 구현에서, 데이터 통신 아키텍쳐(200)는 데이터(230)를 통신 링크를 통해 통신한다. 이 아키텍쳐는 데이터 통신 속도를 향상시키고 통신 링크(215)의 고장 시간을 피하기 위한 다양한 메카니즘을 유지한다. 이들 메카니즘은 미정의 데이터 도착 시간의 처리, 단일 비트 및 다중 비트 에러의 검출, 통신 링크 결함의 처리, 실패한 링크 트레이닝의 처리, 손상 데이터의 식별 및 마킹, 및 통신 링크를 통한 성공적인 데이터 트랜잭션의 식별 및 처리를 포함하나, 여기에 제한되지 않는 기능을 수행한다.

Description

데이터 통신의 갭을 처리하는 방법{UNCERTAIN DATA ARRIVAL TIME}
도 1은 본 명세서에서 설명한 시스템 및 방법의 구현에 따른 예시적인 컴퓨팅 환경의 블록도,
도 2는 예시적인 데이터 통신 아키텍쳐의 예시적인 구성부품의 협동을 도시하는 블록도,
도 3은 데이터 통신 아키텍쳐의 예시적인 구현에 따른 송신 코어의 블록도,
도 4는 데이터 통신 아키텍쳐의 예시적인 구현에 따른 수신 코어의 블록도,
도 5는 데이터 통신시 예시적인 데이터 통신 아키텍쳐에 의해 수행되는 프로세싱을 도시하는 흐름도,
도 6은 미정의 데이터 도착을 처리하는 경우 예시적인 데이터 통신 아키텍쳐에 의해 수행되는 프로세싱을 도시하는 흐름도,
도 7은 데이터 통신에서의 비트 에러를 검출하는 경우 예시적인 데이터 통신 아키텍쳐에 의해 수행되는 프로세싱을 도시하는 흐름도,
도 8은 링크 결함을 처리하는 경우 예시적인 데이터 통신 아키텍쳐에 의해 수행되는 프로세싱을 도시하는 흐름도,
도 9는 링크 결함 트레이닝을 처리하는 경우 예시적인 데이터 통신 아키텍쳐 에 의해 수행되는 프로세싱을 도시하는 흐름도,
도 10은 손상된 데이터를 처리하는 경우 예시적인 데이터 통신 아키텍쳐에 의해 수행되는 프로세싱을 도시하는 흐름도,
도 11은 에러 검출을 다루는 경우 예시적인 데이터 통신 아키텍쳐에 의해 수행되는 프로세싱을 도시하는 흐름도,
도 12는 성공적인 데이터 통신을 승인하기 위해 예시적인 데이터 통신 아키텍쳐에 의해 수행되는 프로세싱을 도시하는 흐름도.
도면의 주요 부분에 대한 부호의 설명
110 : 중앙 처리 장치 115 : 보조 프로세서
120 : 메모리 제어기 135 : 주변장치 제어기
163 : 디스플레이 제어기 170 : 네트워크 어댑터
245 : 수신 코어 250 : 송신 코어
본 출원은 미국 특허 출원, 10/XXX,XXX(대리인 도켓 번호: 20031780-1/192668), 10/XXX,XXX(대리인 도켓 번호: 20031780-1/192669), 10/XXX,XXX(대리인 도켓 번호: 20031784-1/192670), 10/XXX,XXX(대리인 도켓 번호: 20031398- 1/192671), 10/XXX,XXX(대리인 도켓 번호: 200313969-1/192673), 10/XXX,XXX(대리인 도켓 번호: 200313971-2/192674), 및 10/XXX,XXX(대리인 도켓 번호: 200313932-1/192678)와 전체적 또는 부분적으로 연관이 있으며, 이러한 출원을 교차 참조한다.
본 발명은 컴퓨터 프로세서의 데이터 통신 아키텍쳐에 관한 것으로, 보다 구체적으로 직렬자(serializers) 및 역직렬자(deserializers)를 이용하는 컴퓨터 프로세서의 통신 아키텍쳐에 관한 것이다.
능률적으로 동작하고 데이터를 신속하게 처리할 수 있는 컴퓨팅 아키텍쳐는 일반적으로 이들의 대응부(counterpart)보다 선호된다. 이들 컴퓨팅 아키텍쳐가 데이터를 처리하는 속도는 아키텍쳐의 설계, 동작 조건, 이용되는 구성부품의 품질, 및 데이터 처리시 컴퓨터 아키텍쳐에 의해 이용되는 프로토콜, 로직 및 방법을 포함하는 다수의 요인들에 의해 제한을 받을 수 있다. 데이터 통신 아키텍쳐로부터 발생하는 구성부품들 간의 데이터 통신의 지연(latencies) 및 컴퓨팅 아키텍쳐의 프로토콜도 데이터가 처리될 수 있는 속도에 영향을 미칠 수 있다.
현재 다수의 데이터 통신 아키텍쳐가 사용되어 컴퓨터 아키텍쳐의 협동 구성부품 사이(예를 들어, 컴퓨팅 주변 프로세싱 유닛 내의 컴퓨터 프로세서들 사이 또는 컴퓨터 프로세서와 데이터 저장 장치와 같은 주변 구성부품 사이)에서 데이터 통신을 한다. 예를 들어, IDE/ATA(Integrated Drive Electronics/Advanced Technology Attachment) 및 SCSI(Small Computer System Interface) 모두는 하드 드라이브(또한 CD-ROM 및 DVD 드라이브와 같은 일부 다른 장치)에 대한 공통 인터 페이스이고, 각각에 대해 몇몇 특징이 있다. 다른 데이터 통신 아키텍쳐는 PCI(Peripheral Components Interconnect), AGP(Accelerated Graphics Port), USB(Universal Serial Bus), 직렬 데이터 통신 포트 및 병렬 데이터 통신 포트를 포함한다.
상기 데이터 통신 아키텍쳐 각각은 협동 구성부품 사이의 데이터 통신에 효과적이지만, 이들 아키텍쳐 각각은 단점 및 성능 제한을 갖고 있다. 구체적으로, 이러한 데이터 통신 아키텍쳐는 높은 클록 주파수(예를 들어, 몇 기가 헤르쯔)로 통신되는 대량의 데이터 통신을 처리하도록은 설계되어 있지 않다. 또한, PCI, IDE 및 SCSI 데이터 통신 아키텍쳐는 일반적으로 데이터 통신시 오버헤드 프로세싱 계산을 필요로 하며 이는 데이터 통신 속도 전체에 영향을 미친다. 달리 설명하면, 통신 중인 소망하는 데이터에 덧붙여, 부가적인 오버헤드 프로세싱 데이터가 통신되어야 한다. 그 결과, 각 클록 싸이클 동안 보다 적은 전체 데이터가 처리된다.
보다 높은 대역폭의 데이터 통신 아키텍쳐의 필요성에 응답하여, SERDES(serializer/deserializer) 데이터 통신 아키텍쳐가 개발되었다. SERDES는 사전정의된 기법(예로, 8비트/10비트-8b10b 인코딩)에 따라 데이터를 인코딩 및 디코딩한다. 인코딩된 데이터는 하나 이상의 통신 채널을 통해 직렬자로부터 대응 역질렬자로 통신되어 디코딩된다. SERDES 데이터 통신 아키텍쳐는 협동 구성부품 사이의 데이터 통신 대역폭을 증가시키도록 제시되었다. 이와 관련하여, SERDES 데이터 통신 아키텍쳐는 협동 구성부품 사이에서 데이터를 전달하는 데이터 버스로 서 배치된다.
컴퓨팅 환경의 컴퓨터 프로세싱 구성부품 사이의 데이터 통신에 사용되는, 직렬자 및 역직렬자를 이용하여 지연을 줄이는 데이터 통신 아키텍쳐가 제공된다. 예시적인 구현에서, 데이터 통신 아키텍쳐는 데이터 인터페이스, 직렬자 및 역직렬자를 포함한다. 동작시, 컴퓨터 프로세싱 구성부품로부터의 데이터는 직렬자에 의해 수신된다. 데이터 인터페이스와 협동하는 직렬자는 선택된 인코딩 프로토콜에 따라 역직렬자로의 통신에 적합하도록 데이터를 인코딩한다. 동작 동안, 직렬자 및 역직렬자(SERDES)는 협동하여 통신 링크 또는 통신 채널을 형성한다. 특히, 데이터 인터페이스는 데이터 집합이 링크의 각 종단으로부터 링크를 거쳐 전달되도록 허용하고, 링크 관리 및 제어 정보, 인코드 에러 보호를 제공하며, 통신 채널을 가로지르는 데이터를 처리하는 로직을 제공한다.
상기 예시적인 구현에 이어, 예시적인 데이터 통신 아키텍쳐는 링크 트레이닝 상태 모니터, 링크 트레이닝 모듈, 모니터링 모듈, 데이터 버퍼, 링크 트레이닝 모듈, 패리티 비트 모듈, 데이터 전송 승인 모듈 및 데이터 버퍼를 더 포함한다. 이들 모듈은 직렬자 및 역직렬자의 일부분을 포함한다. 동작시, 이들 모듈은 데이터 인터페이스와, 직렬자 및 역직렬자에 포함된 인스트럭션 세트와 협동하여 미정의 데이터 도착 시간 처리, 단일 비트 및 다중 비트 에러의 검출, 통신 링크 고장의 처리, 고장난 링크 트레이닝 처리, 손상 데이터의 식별 및 마킹, 및 통신 링크 를 통한 성공적인 데이터 트랜잭션의 식별 및 프로세싱을 포함하는 기능을 구현하나 이들 기능에 제한되는 것은 아니다.
본 발명의 다른 특징은 이하에서 더 설명된다.
개요
사용되는 데이터 통신 아키텍쳐 및 방법은 첨부한 도면을 참조하여 더 설명된다.
컴퓨팅 환경에 필요로 하는 기반구조 대역폭을 제공하기 위해, 구현은 고주파수에서 동작하는 직렬자/역직렬자(SERDES) 점 대 점 데이터 통신 아키텍쳐를 이용하는 것으로 방향을 돌렸다. 컴퓨팅 환경의 내부 데이터 통신 기반구조에 SERDES 데이터 통신 아키텍쳐를 적용하는 경우, 다수의 제한이 발생한다. 일반적인 용어로, 데이터 통신에서의 지연은 비능률적인 데이터 통신 아키텍쳐 관리로부터 발생한다. SERDES 데이터 통신 아키텍쳐의 관리는 특히 SERDES 통신 링크를 따라 통신하는 데이터를 수집하고 에러 검출 및 에러 데이터에 대한 인스트럭션의 처리를 제공하는 데이터 인터페이스에 의해 수행될 수 있다.
본 발명은 데이터 통신 아키텍쳐 구성부품들 사이에서 쌍방향으로 발생하는 동작을 지원하는, SERDES 링크 채널에 의해 사용되는 데이터 인터페이스를 제공한다. 예시적인 구현에서, 링크의 각 종단으로부터 SERDES 링크를 거쳐 전달되는 데이터를 수집하는 메카니즘이 제공된다. 또한, 이 메카니즘은 오버레이 링크 관리 정보를 제공하여 에러 보호를 인코딩하고 데이터를 적절한 포맷으로 인코딩하는 동작을 할 수 있다. 본 명세서에서 설명된 예시적인 구현의 데이터 인터페이스는 SERDES 구성부품 하여금 SERDES 링크 구성부품 사이에서 데이터를 수집하고 통신하도록 하고 이러한 데이터가 올바르게 수집 및 통신되었는지를 체크하도록 하는 로직을 유지한다.
예시적인 SERDES 데이터 통신 아키텍쳐는 또한 데이터 버퍼를 이용하여 데이터를 저장할 수 있다. 동작시, 데이터 버퍼가 사용되어 SERDES 통신 링크의 수신단으로부터의 응답에 의해 올바른 수신이 확인될 때까지 데이터를 저장할 수 있다. 이러한 경우, SERDES 데이터 통신 아키텍쳐의 협동 구성부품 사이에 통신된 데이터의 일부분으로서 승인이 삽입될 수 있다. 에러가 SERDES 구성부품에 의해 검출되는 경우, 데이터 버퍼가 사용되어 데이터를 재전송하여 에러를 교정할 수 있다.
더 나아가, 예시적인 구현은 다수의 병렬 SERDES 통신 채널의 사용을 결집시킬 수 있다. SERDES 통신 채널은 SERDES 구성부품(예를 들어, 직렬자 및 역직렬자) 사이의 물리적 링크(예를 들어, 와이어) 상에서 동작하는 로직 통신 링크를 포함할 수 있다. 에러 검출, 트레이닝 및 다른 동작을 수행하는 경우, 예시적인 SERDES 데이터 통신 아키텍쳐는 여분의 채널을 이용할 수 있다. 또한, 이러한 여분의 채널은 채널 중 하나가 심하게 고장난 경우에도 통신 유용성을 유지하는데 사용될 수 있다.
예시적인 구현은 예를 들어 케이블, PC 트레이스 또는 적절한 버퍼 섬유까지 다양한 매체를 구동하는 가요성을 제공하고 선택된 매체와 최선으로 동작하기 위한 다양한 링크 주파수를 지원한다.
예시적인 컴퓨팅 환경
도 1은 본 명세서에서 설명한 시스템 및 방법에 따른 예시적인 컴퓨팅 시스템(100)을 도시한다. 컴퓨팅 시스템(100)은 다양한 컴퓨팅 애플리케이션(180)을 수행할 수 있다. 예시적인 컴퓨팅 시스템(100)은 주로 소프트웨어일 수 있는 컴퓨터 판독가능 인스트럭션에 의해 제어되고, 이러한 소프트웨어는 시스템 내에 저장되고 액세스된다. 이러한 소프트웨어는 중앙 처리 장치(CPU)(110) 내에서 수행되어 데이터 처리 시스템(100)으로 하여금 작업을 하도록 야기할 수 있다. 다수의 공지된 컴퓨터 서버에 있어서, 워크스테이션 및 개인용 컴퓨터 중앙 처리 장치(110)는 마이크로-전자 칩 CPU 일명 마이크로프로세서에 의해 구현된다. 보조 프로세서(coprocessor)(115)는 부가적인 기능 또는 CPU(110)를 지원하는, 메인 CPU(110)와는 구별되는 선택적 프로세서이다. 하나의 일반적 유형의 보조 프로세서는 부동 소수점 보조 프로세서이며, 이 또한 수치적 또는 수학적 보조 프로세서로 지칭되며 범용 CPU(110)보다 빨리 그리고 보다 양호하게 수치적 계산을 수행하도록 설계된다.
예시적인 컴퓨팅 환경은 단일 CPU(110)을 포함하는 것으로 도시되어 있지만, 이러한 설명은 컴퓨팅 환경(100)이 다수의 CPU(110)를 포함할 수 있기 때문에 단지 예시적일 뿐이라는 것을 알아야 한다. 또한, 컴퓨팅 환경(100)은 통신 네트워크(160) 또는 일부 다른 데이터 통신 수단(도시되어 있지 않음)을 통해 원격 CPU의 리소스(도시되어 있지 않음)를 이용할 수 있다.
동작시, CPU(110)는 인스트럭션을 인출하고 디코딩하여 실행하며, 컴퓨터의 메인 데이터 전송 경로, 즉 시스템 버스(105)를 통해 다른 리소스로 또한 그로부터 정보를 전송한다. 이러한 시스템 버스는 컴퓨팅 시스템(100)의 구성부품들을 연결하고 데이터 교환을 위한 매체를 정의한다. 시스템 버스(105)는 전형적으로 데이터 전송용의 데이터 라인, 어드레스 전송용의 어드레스 라인 및 인트럽트 전송 및 시스템 버스 동작용의 제어 라인을 포함한다. 이러한 시스템 버스의 예는 PCI(Peripheral Component Interconnect) 버스이다. 오늘날 일부 진보된 버스는 확장 카드, 제어기 및 CPU(110)에 의해 버스로의 액세스를 조정하는 일명 버스 중재(bus arbitration)의 기능을 제공한다. 이들 버스에 부착되고 버스를 접수하도록 중재되는 장치는 버스 마스터로 지칭된다. 버스 마스터 지원은 또한 버스의 다중프로세서 구성이 프로세서 및 그의 지원 칩을 포함하는 버스 마스터 어댑터를 추가함으로써 생성되도록 허용한다.
시스템 버스(105)에 결합된 메모리 장치는 랜덤 액세스 메모리(RAM)(110) 및 판독 전용 메모리(ROM)(130)를 포함한다. 이러한 메모리는 정보가 저장 및 검색되도록 허용하는 회로를 포함한다. ROM(130)은 일반적으로 수정될 수 없는 저장된 데이터를 포함한다. RAM(125)에 저장된 데이터는 CPU(110) 또는 다른 하드웨어 장치에 의해 판독 또는 변경될 수 있다. RAM(125) 및/또는 ROM(130)으로의 액세스는 메모리 제어기(120)에 의해 제어된다. 메모리 제어기(105)는 인스트럭션이 수행됨에 따라 가상 어드레스를 물리적 어드레스로 변환하는 어드레스 변환 기능을 제공 할 수 있다. 메모리 제어기(120)는 또한 시스템 내에서의 프로세스들을 격리시키고 사용자 프로세스로부터 시스템 프로세스를 격리시키는 메모리 보호 기능을 제공할 수 있다. 그러므로, 사용자 모드에서 실행되는 프로그램은 자신의 프로세스 가상 어드레스 공간에 의해 매핑된 메모리만을 정상적으로 액세스할 수 있고, 프로세스들 사이를 공유하는 메모리가 설치되지 않으면 다른 프로세스의 가상 어드레스 공간 내의 메모리를 액세스할 수 없다.
또한, 컴퓨팅 시스템(100)은 CPU(110)로부터의 인스트럭션을 주변장치, 예를 들어 프린터(140), 키보드(145), 마우스(150) 및 데이터 저장 장치(155)로 통신하는 것을 담당하는 주변장치 제어기(135)를 포함할 수 있다.
디스플레이 제어기(163)에 의해 제어되는 디스플레이(165)는 컴퓨팅 시스템(100)에 의해 발생되는 가시적 출력을 디스플레이하는데 사용된다. 이러한 가시적 출력은 텍스트, 그래픽, 애니메이션 그래픽 및 비디오를 포함할 수 있다. 디스플레이(165)는 CRT 기반 비디오 디스플레이, LCD 기반 평판 디스플레이, 가스 플라즈마 기반 평판 디스플레이, 또는 터치 패널 또는 다른 디스플레이 형태로 구현될 수 있다. 디스플레이 제어기(163)는 디스플레이(165)에 전송될 비디오 신호를 생성하는데 필요한 전자 부품을 포함한다.
더 나아가, 컴퓨팅 시스템(100)은 컴퓨팅 시스템(100)을 외부 통신 네트워크(160)에 연결하는데 사용될 수 있는 네트워크 어댑터(170)를 포함할 수 있다. 통신 네트워크(160)는 컴퓨터 사용자에게 소프트웨어 및 정보를 전자적으로 통신 및 전달하는 수단을 제공할 수 있다. 또한, 통신 네트워크(185)는 몇몇 컴퓨터 및 작 업 수행시 작업부하의 공유 또는 협동 노력을 포함하는 분산적 프로세싱을 제공할 수 있다. 도시되어 있는 네트워크 접속은 예시적이고 컴퓨터들 사이에서 통신 링크를 설정하는 다른 수단이 사용될 수 있다.
예시적인 컴퓨터 시스템(100)은 단지 본 명세서에서 설명한 시스템 및 방법이 동작할 수 있는 컴퓨팅 환경의 예일뿐이고 상이한 구성부품 및 구성을 갖는 컴퓨팅 환경에서의 본 명세서에 설명한 시스템 및 방법의 구현을 제한하지 않고 본 명세서에서 설명한 본 발명의 개념은 다양한 구성부품 및 구성을 갖는 다양한 컴퓨팅 환경에서 구현될 수 있다.
데이터 통신 아키텍쳐
도 2 내지 도 4는 예시적인 컴퓨팅 환경에 사용되는 예시적인 데이터 통신 아키텍쳐의 블록도이다. 예시적인 데이터 통신 아키텍쳐는 컴퓨팅 환경의 구성부품로 구현될 수 있고 SERDES 구성부품을 이용할 수 있다. 구체적으로, 도 2는 예시적인 데이터 통신 아키텍쳐(200)의 블록도이다. 도 2에 도시되어 있는 바와 같이, 데이터 통신 아키텍쳐(200)는 물리적 링크(220)를 통해 데이터(230)를 통신함에 있어 협동하는 데이터 통신 인터페이스 카드(205 및 210)를 포함한다. 데이터 인터페이스 통신 카드(205 및 210)는 적어도 하나의 송신 코어 및 적어도 하나의 수신 코어를 포함한다. 물리적 링크(220)는 데이터 통신 인터페이스 카드(205 및 210)에 물리적 커넥터(225)를 통해 부착된다.
동작시, 예시적인 컴퓨팅 환경(도시되어 있지 않음)은 데이터 통신 인터페이 스 카드(205 및 210)와 협동하여 데이터 통신 인터페이스 카드(205 및 210) 사이의 데이터 통신을 수행한다. 예시적인 구현에서, 데이터 통신 인터페이스 카드는 예시적인 컴퓨팅 환경(도시되어 있지 않음) 내의 별개의 지리적 위치에 상주할 수 있거나 또는 예시적인 컴퓨팅 환경(도시되어 있지 않음)의 인쇄 회로 보드(PCB) 중 하나의 일분으로서 상주할 수 있다. 도시되어 있는 바와 같이, 데이터는 데이터 통신 인터페이스(205 및 210)의 송신 코어와 수신 코어 사이에서 물리적 링크(220) 및 데이터(230) 상의 화살표로 나타낸 바와 같이 선택된 방향 또는 쌍방향으로 통신될 수 있다. 또한, 물리적 링크(220)는 상이한 물리적 링크(220) 매체를 나타내기 위해 상이한 라인 두께를 갖는 것으로 도시되어 있다.
또한, 도시되어 있는 바와 같이, 점선으로 표시된 박스(215)는 예시적인 데이터 통신 후면의 구성부품을 도시한다. 제공된 구현에 있어서, 후면(215)은 데이터 통신을 수행하는 한 쌍의 송수신 코어를 구비한 것으로 도시되어 있다. 구체적으로, 데이터는 데이터 통신 인터페이스(205)의 송신 코어(235)에 의해 처리되어 물리적 커넥터 및 물리적 링크(220)를 거쳐 데이터 통신 인터페이스(210)의 수신 코어(245)까지 통신된다. 유사하게, 데이터는 데이터 통신 인터페이스(210)의 송신 코어(250)에 의해 데이터 통신 인터페이스(205)의 수신 코어(240)로 통신되도록 처리될 수 있다. 또한, 송수신 코어 쌍(235와240 및 245와 250)은 협동하여 통신 채널을 형성할 수 있다. 통신 채널로서, 송수신 코어 쌍은 정렬 및 트레이닝되어 선택된 인코딩 프로토콜, 예를 들어 8비트10비트(8b10b) 인코딩에 따라 데이터를 처리할 수 있다.
더 나아가, 도 2에 도시되어 있는 바와 같이, 데이터(230)는 다수의 패킷을 포함할 수 있다. 구체적으로, 데이터(230)는 헤더 부분과 데이터 패킷 부분을 포함할 수 있다. 데이터 패킷 부분은 작은 데이터 패킷을 더 포함할 수 있다. 제공된 예시적인 구현에서, 작은 패킷은 정상적인, 표준 크기의 데이터 패킷보다 작은 데이터 패킷으로 생각될 수 있다. 동작시, 다양한 데이터, 제어, 트레이닝 및 채널 관리 정보는 예시적인 데이터 통신 아키텍쳐(200)를 통해 데이터(230)로서 통신될 수 있다.
도 3은 구성부품 및 그들의 협동을 도시하는 예시적인 송신 코어 환경(300)의 블록도이다. 도 3에 도시되어 있는 바와 같이, 예시적인 송신 코어 환경(300)은 송신 코어(300-1)에서 송신 코어(300-n)의 범위를 갖는 다수의 송신 코어를 포함한다. 송신 코어(300-1)는 로직 블록과, 제각각 직렬자(1) 내지 직렬자(n) 및 드라이버(1) 내지 드라이브(n)의 다수의 직렬자 및 드라이버를 포함하는 것으로 도시되어 있다. 또한, 송신 코어(300-1)는 외부 데이터 통신 구성부품(도시되어 있지 않음)와 협동하여 클록 신호(CLK)를 취득한다. 또한, 도시되어 있는 바와 같이, 송신 코어(300-1)는 송신 코어(300-1)의 구성부품(예를 들어, 직렬자(1))로 하여금 데이터 통신 동작에 따른 기능을 수행하도록 지시하는 인스트럭션 세트를 유지하는 로직을 포함한다. 송신 코어(300-1)의 로직은 데이터 통신 동작 동안 사용되는, 링크 트레이닝 상태 모니터, 링크 트레이닝 모듈, 모니터링 모듈, 데이터 버퍼, 링크 트레이닝 모듈, 패리티 비트 모듈 및 데이터 전송 승인 모듈을 포함하나 여기에 제한되지 않는 하나 이상의 모듈 및 메카니즘을 유지하는 동작을 할 수 있 다.
동작시, 데이터는 송신 코어(300-1)의 직렬자 중 하나에 대한 입력으로서 제공된다. 이 데이터는 선택된 인코딩 프로토콜에 따라 인코딩되고 송신 코어의 드라이버 중 하나에 의해 송신 코어의 출력 채널로 협동 데이터 통신 구성부품로 통신되도록 마련된다. 인코딩 프로토콜은 CLK 신호를 이용하여 CLK 신호의 선택된 싸이클 내에서 다수의 비트를 인코딩할 수 있다. 예를 들어, 데이터(A)는 선택된 인코딩 프로토콜에 따라 송신 코어(300-1)의 직렬자(1)에 의해 인코딩되고 드라이버(1)에 의해 통신용으로 준비되어 송신 코어(300-1)의 로직에 의해 제공된 인스트럭션에 따라 채널(A) 출력에서 인코딩된 데이터를 생성할 수 있다. 유사하게, 데이터(B)는 선택된 인코딩 프로토콜에 따라 송신 코어(300-1)의 직렬자(2)에 의해 인코딩되고 드라이버(2)에 의해 통신용으로 준비되어 송신 코어(300-1)의 로직에 의해 제공된 인스트럭션에 따라 채널(B) 출력에서 인코딩된 데이터를 생성할 수 있다. 이러한 인코딩 프로세스 및 데이터 통신 준비는 송신 코어 환경(300)의 송신 코어(300-1) 및 다른 송신 코어의 나머지 직렬자 및 드라이버에 대해 수행된다.
도 4는 구성부품 및 이들의 협동을 도시하는 예시적인 수신 코어 환경(400)의 블록도이다. 도 4에 도시되어 있는 바와 같이, 예시적인 수신 코어(400)는 수신 코어(400-1)에서 수신 코어(400-n)의 범위를 갖는 다수의 수신 코어를 포함한다. 수신 코어(400-1)는 로직 블록과, 제각각 역직렬자(1) 내지 역직렬자(n) 및 드라이버(1) 내지 드라이브(n)의 다수의 직렬자 및 드라이버를 포함하는 것으로 도시되어 있다. 또한, 수신 코어(400-1)는 외부 데이터 통신 구성부품(도시되어 있 지 않음)와 협동하여 클록 신호(CLK)를 취득한다. 또한, 도시되어 있는 바와 같이, 수신 코어(400-1)는 수신 코어(400-1)의 구성부품(예를 들어, 역직렬자(1))로 하여금 데이터 통신 동작에 따른 기능을 수행하도록 지시하는 인스트럭션 세트를 유지하는 로직을 포함한다. 수신 코어(400-1)의 로직은 데이터 통신 동작 동안 사용되는, 링크 트레이닝 상태 모니터, 링크 트레이닝 모듈, 모니터링 모듈, 데이터 버퍼, 링크 트레이닝 모듈, 패리티 비트 모듈 및 데이터 전송 승인 모듈을 포함하나 여기에 제한되지 않는 하나 이상의 모듈 및 메카니즘을 유지하는 동작을 할 수 있다.
동작시, 인코딩된 데이터는 수신 코어(400-1)의 역직렬자 중 하나에 대한 입력으로서 제공된다. 이 데이터는 선택된 디코딩 프로토콜에 따라 디코딩되고 수신 코어의 드라이버 중 하나에 의해 수신 코어의 역직렬자의 출력 채널로 협동 데이터 통신 구성부품로 통신되도록 마련된다. 디코딩 프로토콜은 CLK 신호를 이용하여 CLK 신호의 선택된 싸이클 내에서 다수의 비트를 디코딩할 수 있다. 예를 들어, 인코딩된 데이터(A)는 선택된 디코딩 프로토콜에 따라 수신 코어(400-1)의 역직렬자(1)에 의해 디코딩되고 드라이버(1)에 의한 통신용으로 준비되어 수신 코어(400-1)의 로직에 의해 제공된 인스트럭션에 따라 데이터(A)를 생성할 수 있다. 유사하게, 인코딩된 데이터(B)는 선택된 디코딩 프로토콜에 따라 수신 코어(400-1)의 역직렬자(2)에 의해 디코딩되고 드라이버(2)에 의해 통신용으로 준비되어 데이터(B)를 생성할 수 있다. 이러한 디코딩 프로세스 및 데이터 통신 준비는 송신 코어 환경(400)의 수신 코어(300-1) 및 다른 수신 코어의 나머지 역직렬자 및 드라이버에 대해 수행된다.
도 3 및 도 4는 모두 데이터가 하나 이상의 송신 코어에 의해 통신용으로 인코딩되고 하나 이상의 수신 코어에 의해 디코딩되고 이어서 처리되는 예시적인 통신 채널 환경을 설명한다. 별개의 구성부품로서 설명되어 있지만, 송신 코어 및 수신 코어는 단일 통신 구성부품(도 2의 데이터 통신 인터페이스(205)) 상에 상주할 수 있다. 또한, 송신 코어 및 수신 코어는 쌍으로서 동작하여 하나 이상의 쌍방향 데이터 통신 채널을 형성할 수 있다.
통신 링크를 통한 데이터 통신
도 5는 통신 채널을 수립하는 경우 예시적인 데이터 통신 아키텍쳐(200)에 의해 수행되는 프로세싱을 도시한다. 도시되어 있는 바와 같이, 프로세싱은 블록(500)에서 시작하여 통신 구성부품이 동작을 위해 전력을 공급 받는 블록(505)으로 진행한다. 그로부터, 프로세싱은 데이터 통신 아키텍쳐 구성부품들 사이에 통신 링크가 수립되는 블록(510)으로 진행한다. 통신 링크는 블록(515)에서 트레이닝되어 통신 채널을 형성한다. 트레이닝 데이터는 블록(520)에서 통신 채널을 통해 전송되어 통신 채널을 테스트한다. 이 통신 채널 테스트가 성공적인지 여부를 결정하는 체크가 블록(525)에서 수행된다. 성공적인 경우, 프로세싱은 성공적으로 테스트된 통신 채널을 통해 통신된 데이터가 있는지 여부를 결정하는 체크가 이루어지는 블록(540)으로 진행한다. 블록(540)에서 통신되는 데이터가 없는 것으로 결정되면, 프로세싱은 블록(525)으로 되돌아간다. 그러나, 성공적으로 테스트되고 트레이닝된 통신 채널을 거쳐 통신된 데이터가 있는 경우, 프로세싱은 데이터가 직렬자에 의해 인코딩되는 블록(545)을 진행한다. 그런 다음 인코딩된 데이터는 블록(550)에서 통신 채널을 통해 협동 역직렬자에 전달된다. 이 데이터는 블록(555)에서 역직렬자에 의해 디코딩된다. 데이터가 성공적으로 통신되었는지 여부를 결정하는 체크가 블록(560)에서 수행된다. 데이터가 성공적으로 송신된 경우, 프로세싱은 블록(540)으로 되돌아가고 그로부터 진행한다. 그러나, 데이터가 성공적으로 통신되지 않은 경우, 프로세싱은 역직렬자가 직렬자에게 데이터를 재전송할 것을 요청하는 블록(565)으로 진행한다. 그로부터, 프로세싱은 블록(550)으로 되돌아가고 그로부터 진행한다.
그러나, 블록(525)에서 통신 채널 테스트가 성공적이지 않는 것으로 결정되면, 프로세싱은 통신 링크가 재트레이닝(retrained)되는 블록(530)으로 진행한다. 그로부터, 프로세싱은 제어 정보가 통신 링크 구성부품 사이에 전송되는 블록(535)으로 진행한다. 그로부터, 프로세싱은 블록(520)으로 되돌아가고 그로부터 진행한다.
동작시, 예시적인 구현에서 트레이닝 시퀀스는 통신 링크의 역직렬자에 의해 통제된다. 구체적으로, 초기 트레이닝은 역직렬자 상에서 선택된 소프트웨어형 레지스터의 기록의 표시를 인식하면 완료되는 것으로 간주된다. 이 때, 데이터는 통신 채널의 직렬자에 의해 링크 상에서 구동된다. 역직렬자 동작에 있어서, 역직렬자는 협동 직렬자가 초기화를 시작하도록 하는 링크 상의 활동을 검출하도록 역직렬자에 지시하는 하나 이상의 인스트럭션 세트를 유지한다. 통신 채널의 역직렬자 및 직렬자는 채널로 하여금 전력을 공급하도록 지시하는 적어도 하나의 인스트럭션을 유지한다. 성공적인 전력 공급시, 채널마다의 자가 테스트가 수행되고 그로부터 결과가 수집되고 비교된다. 그런 다음 인스트럭션 세트는 역직렬자가 기대하는 선택된 데이터 패턴을 직렬자 및 역직렬자로 하여금 통신하도록 지시하되 역직렬자는 직렬자 및 역직렬자에 의해 이용되는 인코딩 및 디코딩 프로토콜에 사용되는 비트 단위 그룹핑을 결정할 수 있다.
또한, 제 2 인식가능 데이터 패턴은 역직렬자가 작은 패킷 데이터 통신용으로 여겨지는 역직렬자에 통신된다. 작은 패킷 데이터 통신을 설정함으로써, 역직렬자는 본래 통신되는 방식과 일치하도록 그룹핑시 작은 패킷을 함께 매칭시키는 동작을 할 수 있다. 제 2 데이터 패턴이 성공적으로 통신되고 처리되면, 트레이닝이 완료되었다는 것을 나타내는 제어 신호를 통신 링크 역직렬자에서 직렬자로 전송한다. 이 시점에서 데이터 패킷은 트레이닝 채널을 거쳐 통신될 수 있다.
또한, 예시적인 구현에서, 통신 링크 상에서 에러가 발생하는 경우, 링크는 재트레이닝 프로세스를 수행할 수 있다. 링크 재트레이닝은 앞서 설명한 통신 구성부품에 전력을 공급하는 것을 제외하면 위에서 설명한 링크 트레이닝과 유사하다. 재트레이닝은 통신 링크에 걸친 에러의 인식 또는 통신 링크의 수신단에 의해 생성된 링크 상의 에러 신호의 수신을 포함하는 그러나 여기에 제한되지 않는 다수의 이벤트에 의해 트리거될 수 있다.

데이터 통신 갭(데이터 도착 타이밍)의 처리
예시적인 데이터 통신 아키텍쳐는 협동 구성부품들 간의 미정의 데이터 도착 시간을 처리할 수 있다. SERDES 데이터 통신 아키텍쳐에 있어서, SERDES 링크의 수신단으로부터 추출된 데이터는 로컬 클록에 정밀하게 동기화될 수 없다. 달리 설명하면, 로컬 클록의 임의의 주어진 싸이클에서, 링크는 새로운 제시할 유효 데이터를 갖거나 갖지 않을 수 있다.
예시적인 구현에서 또한 위에서 설명한 바와 같이, 데이터 트랜잭션은 링크를 통해 "패킷" 포맷으로 전달된다. 각 패킷은 트랜잭션이 포함하는 정보 및 데이터 양에 따라 하나 이상의 작은 패킷으로부터 형성된다. 작은 패킷은 주어진 기간 동안 링크가 전달하는 페이로드(payload)의 단위로서 여겨질 수 있다. 하나의 패킷은 다소의 작은 데이터 패킷이 뒤를 잇는 헤더 패킷을 포함하여 트랜잭션을 수행한다. 헤더는 패킷 유형을 나타내는 정보, 및 수신지 어드레스와 같은 패킷을 처리하는 다른 정보를 포함할 수 있다.
예시적인 컴퓨팅 환경의 데이터 통신 기반구조를 고찰하면, SERDES 링크를 걸쳐 전달된 트랜잭션은 그것의 최종 수신지로 가는 도중의 또 다른 SERDES 링크에 라우팅된다는 것을 알 수 있다. 이와 관련하여, 데이터 트랜잭션은 그것의 작은 패킷 모두의 전달을 완료하기 위해 SERDES 링크 상에서 몇몇 싸이클을 취할 수 있다. 완전한 트랜잭션을 다음 통신 링크에 전송되기 전에 모두 버퍼링하는 경우 원치않는 지연을 유발할 수 있다. 또한, 링크는 패킷의 시작과 끝 사이에 긴 중단을 발생시키는 패킷 부분을 전송하려는 초기 시도를 실패할 수 있다. 또한, 상이한 링크의 주파수 동작은 다를 수 있는데 이는 데이터가 보다 저속 링크로부터 전송되는 경우 보다 고속의 링크 상으로의 작은 패킷의 흐름에 갭을 야기 할 수 있다.
예시적인 데이터 통신 아키텍쳐는 작고 정상적인 크기의 패킷의 흐름에 갭이 존재하는 경우 이 애플리케이션에 대해 SERDES 링크의 보정 동작을 허용하는 메카니즘을 제공함으로써 이러한 경우를 처리한다. 동작시, 링크의 송신단(도 2의 송신 코어(235)를 참조)에서의 SERDES 링크 인터페이스는 송신용 다음 유효 작은 패킷을 가지지 않는 경우 링크를 걸쳐 전송될 선택된 인코딩된 또는 제어 값을 이용한다. 또한, 링크의 수신단(도 2의 수신 코어(245)를 참조)은 클록 싸이클의 시작의 링크 인테페이스에서 새로 수신된 데이터를 발견하지 않는 경우 또는 인코딩된 작은 패킷을 발견하는 경우 출력되는 제어용 작은 패킷을 생성한다. 제어용 작은 패킷은 데이터 프로세싱 동안 무시된다.
도 6은 도 2의 예시적인 데이터 통신 아키텍쳐(200)를 거쳐 통신되는 데이터에 대한 데이터 통신 갭을 처리하는 경우 수행되는 프로세싱을 도시한다. 도시되어 있는 바와 같이, 프로세싱은 블록(600)에서 시작하여 예시적인 데이터 통신 아키텍쳐의 통신 채널을 통해 통신되는 데이터가 있는지 여부를 결정하는 체크가 수행되는 블록(605)으로 진행한다. 통신되는 데이터가 없는 경우, 프로세싱은 블록(600)으로 되돌아가고 그로부터 진행한다. 그러나, 통신되는 데이터가 있는 경우, 프로세싱은 통신되는 데이터가 통신 갭에 대해 모니터링되는 블록(610)으로 진행한다. 동작시, 데이터는 데이터 통신 아키텍쳐의 직렬자에 의해 인코딩되기 전에 데이터 버퍼에 버퍼링될 수 있다. 그것은 데이터가 갭에 대해 처리되는 데이터 버퍼 에 존재한다. 데이터 통신 갭이 있는지 여부를 결정하기 위해 체크가 블록(615)에서 수행된다. 데이터 통신 갭이 없는 경우, 프로세싱은 데이터가 직렬자에 의해 협동 역직렬자에 통신되는 블록(620)으로 진행한다. 그로부터 프로세싱은 블록(650)으로 진행하고 그로부터 진행한다.
그러나, 블록(615)에서 데이터 갭이 있는 것으로 결정되면 프로세싱은 제어용 작은 패킷이 생성되는 블록(625)으로 진행한다. 제어용 작은 패킷은 블록(630)에서 협동 역직렬자에 통신되어 협동 역직렬자에게 통신 갭을 알려준다. 역직렬자는 블록(635)에서 제어용 작은 패킷을 처리하고 이 제어용 작은 패킷을 블록(640)에서 데이터 통신 아키텍쳐에 걸쳐 전파한다. 그런 다음 프로세싱은 블록(645)에서 종료된다.
에러 검출
도 2의 예시적인 데이터 통신 아키텍쳐(200)는 또한 이 아키텍쳐의 구성부품들 간에 통신되는 데이터에 대해 에러 검출을 수행할 수 있다. SERDES 데이터 통신 아키텍쳐에 관련하여, 데이터 전송의 재시도는 링크에 걸쳐 정확하게 전달하는 것을 실패한 데이터를 통신하기 위해 필요할 수 있다. 송신을 재시도하기 위해, 먼저 에러가 검출된다. 데이터 통신 동작을 계속하도록 재시도되는 제 1 작은 패킷을 적절히 식별하도록 에러를 검출할 수 있다.
제공된 구현에 있어서, SERDES 링크에 적절하도록 데이터를 포맷하는데 사용될 수 있는 인코딩 표준은 그것이 사용하는 고 주파수에서 데이터를 전송할 수 있도록 SERDES 링크에 필요한 전기적 특성을 따르도록 설계될 수 있다. 또한, 링크의 수신단에서 비트 스트림으로부터 클록이 추출될 수 있도록 채널에 대해 충분한 변화가 이루어질 수 있다. 또한, 비트 패턴에 대해 중립적 디스패리티를 가질 수 있다. 달리 설명하면, 임의의 시간에서 전송되는 1 및 0의 수는 동일할 수 있고, 기껏해야 하나만큼 다를 수 있다. 예시적인 인코딩 프로토콜은 하나의 비트 에러가 위법 인코딩(illegal encoding)을 야기하도록 동작한다. 그러나, 일부 경우에서는, 이 위법 인코딩은 위법인 것처럼 보일 수 있으나 잘못 예상한 디스패리티를 생성할 수 있다. 에러가 이러한 유형인 경우, 에러는 후속하는 데이터 패턴이 링크의 수신단에서의 디스패리티를 +/-2까지 밀어낼 때까지 검출되지 않을 것이다.
SERDES 데이터 통신 아키텍쳐에 있어서, 단일 링크는 대량의 정보를 그것의 채널을 통해 신속하게 전달하도록 동작할 수 있다. 이와 같이, 에러는 링크 상에 특별한 "마지막 패킷" 제어 문자를 전송함으로써 제한될 수 있다. 이것은 데이터 블록이 출력되기 전에 에러가 인식되도록 보장한다. 이러한 접근방식은 특별 제어 문자를 전송할 필요가 있는 오버헤드를 부가하고 지연이 발생하는 데이터 통신 프로세스에서 비효율성을 제공할 수 있다. 실제로, 제어 문자를 전송하기 위해 하나의 인코딩 싸이클이 이용될 수 있다. 다수의 SERDES 링크를 갖는 데이터 통신 아키텍쳐에서, 제어 문자를 처리하는데 상당량의 시간이 필요로할 수 있는데 이는 데이터 통신의 상당한 비효율성을 야기할 수 있다.
예시적인 구현은 또 다른 접근방식을 제공하는데, 이 접근 방식에서는 데이터 통신 아키텍쳐는 에러에 대한 인코딩 표준의 제 1 징조는 수신단(도 2의 데이터 통신 인터페이스(210)의 수신 코어(245)를 참조)과 송신단(도 2의 데이터 통신 인터페이스(205)의 송신 코어(235)를 참조)에서의 통신되는 데이터의 디스패리티를 비교함으로써 결정될 수 있다는 것을 알 수 있다. 데이터를 송신하는데 사용되는 디스패리티가 알려져 있는 경우, 에러는 즉시 검출될 수 있다. 이것을 달성하기 위해, 작은 패킷을 전송하는데 사용되는 링크의 디스패리티는 수집되고 사용되어 5비트 에러 코드를 생성한다. 이 5비트 값은 링크의 수신단에 전달된다. 예시적인 구현에서, 이러한 에러 코드는 하나의 부가적인 SERDES 링크 채널을 사용하여 링크의 수신단에 통신될 수 있다. 그런 다음 이 값은 링크의 수신단 상에서 사용되어 링크의 수신단에서의 디스패리티를 체크하고, 디스패리티가 예상한 값이 아닌 경우 통신 채널의 송신단으로부터 데이터를 재전송할 것을 즉각 요청한다.
동작시, 예시적인 구현은 에러 코드를 통신하는 경우 5비트 내지 10비트 인코딩을 이용한다. 5비트는 두 번 전송되는데, 한번은 포지티브 트루(positive true)로서, 한번은 네거티브 트루로서 전송된다. 이러한 방식에서, 10비트 패턴은 5개의 1과 5개의 0을 포함하여 중립적인 디스패리티를 달성할 것이다. 이러한 프로세싱은 또한 10비트 인코딩 기법을 사용하는 경우 시스템 타이밍이 유지될 수 있도록 효율적이다.
또한, 예시적인 구현은 링크 트레이닝의 완료시, 데이터는 이 링크를 통해 통신가능하다. 데이터는 헤더와, 작은 데이터 패킷과, 통신에 이용가능한 경우 작은 링크 관린 데이터 패킷과 같은 제어 정보를 포함할 수 있다. 이 데이터는 유형과는 상관없이 인코딩되는 경우 연관된 디스패리티를 갖는 1 및 0의 패턴을 생성한다.
도 7은 에러 검출을 수행하는 경우 예시적인 데이터 통신 아키텍쳐(200)에 의해 수행되는 프로세싱을 도시한다. 도시되어 있는 바와 같이, 프로세싱은 블록(700)에서 시작하여 도 2의 예시적인 데이터 통신 아키텍쳐(200)의 구성부품들에 걸쳐 통신될 데이터가 있는지 여부를 결정하는 체크가 이루어지는 블록(705)으로 진행한다. 블록(705)에서 통신될 데이터가 있지 않은 것으로 결정되면, 프로세싱은 블록(700)으로 되돌아가고 그로부터 진행한다. 그러나, 블록(705)에서 통신될 데이터가 있는 것으로 결정되면, 프로세싱은 통신될 데이터에 대한 디스패리티가 계산되는 블록(710)으로 진행한다. 그로부터, 통신될 데이터에 대한 에러 코드는 블록(715)에서 직렬자에 의해 계산된 디스패리티를 사용하여 계산된다. 데이터는 계산된 에러 코드와 함께 직렬자에 의해 블록(720)에서 협동 역직렬자에 통신된다. 역직렬자는 데이터를 수신하고 블록(725)에서 계산된 데이터에 기초하여 에러 코드를 계산한다. 그로부터, 블록(730)에서 에러 코드가 대응하는지에 관한 결정이 이루어진다. 블록(730)에서 에러 코드가 대응하지 않는 경우, 프로세싱은 역직렬자가 직렬자에게 데이터를 재통신할 것을 요청하는 블록(735)으로 진행한다. 직렬자는 블록(740)에서 재통신용 데이터를 취득하고 프로세싱은 블록(710)으로 되돌아가며 그로부터 진행한다.
그러나, 블록(730)에서 직렬자와 역직렬자 각각에 의해 생성되고 계산된 에러 코드가 대응하는 것으로 결정되면, 프로세싱은 데이터 트랜잭션이 계속되는 블록(745)으로 되돌아간다. 그로부터, 프로세싱은 블록(700)으로 되돌아가고 그로부 터 진행한다.
링크 결함
예시적인 데이터 통신 아키텍쳐(200)는 동작 동안 링크에 결함이 있는 경우 링크 결함을 처리할 수 있다. 예시적인 구현은 링크 결함이 있는 경우 예시적인 컴퓨팅 환경의 기반구조와의 접속이 활성으로 유지하도록 하고 이 컴퓨팅 환경이 불안정한 상태(예를 들어, 파손(crash))가 되지 않도록 한다.
SERDES 데이터 통신 아키텍쳐에 있어서, 컴퓨터의 기반구조에서의 점 대 점 접속은 동시에 동작하는 몇몇 SERDES 링크로 구성되어 증가된 데이터 통신 대역폭을 제공할 수 있다. 예시적인 구현은 다른 통신 링크들 중 하나가 결함이 있는 경우 "여분의" 링크 채널에 걸쳐 배치될 하나의 부가적인 SERDES 링크의 사용을 제공한다. 또한, 예시적인 구현은 링크 채널이 신뢰적이 않다는 것을 검출하여 그것을 사용하지 않을 수 있다. 이 구현은 또한 링크의 수신단(도 2의 데이터 통신 인터페이스(210)의 수신 코어(245)를 참조)이 링크 채널은 사용되어서는 안되는 링크의 송신단(도 2의 데이터 통신 인터페이스(205)의 송신 코어(235)를 참조)과 통신할 수 있는 프로토콜을 제공한다. 동작시, 예시적인 구현은 링크 트레이닝 시퀀스 동안 링크가 실패했는지 여부를 결정한다. 링크 트레이닝은 데이터의 정상적인 송신시, 또는 초기 링크 설정시 검출된 에러에 응답하여 발생할 수 있다. 링크가 실패했다고 인정되는 경우 특히 이 링크에 대한 실재 검출 신호의 유실, 이 링크에 대한 링크 자가 테스트의 실패, 이 링크에 대한 적절한 정렬에 대한 통지가 실패한 경우를 포함한다.
링크 결함에 응답하여, 링크의 수신단 상의 로직은 결함있는 링크로부터 논리적 링크 채널을 결함있는 물리적 링크로부터 멀리 떨어져 있는 마지막 번호의 링크로 이동시킬 것이다. 또한, 새로운 매핑이 5비트 필드로 인코딩되고 링크의 송신단에 반환된다. 이 새로운 매핑이 사용되어 다음 트레이닝 시도에서의 링크를 적절한 물리적 채널 상으로 구동하도록 송신 로직을 프로그램한다.
도 8은 링크 결함을 처리하는 경우 예시적인 데이터 통신 아키텍쳐(200)에 의해 수행되는 프로세싱을 도시한다. 도시되어 있는 바와 같이, 프로세싱은 블록(800)에서 시작하여 데이터 통신 아키텍쳐가 통신 링크의 트레이닝을 개시하는 블록(805)으로 진행한다. 그로부터, 데이터 통신 아키텍쳐(200)의 직렬자 및 역직렬자는 연관되어 블록(810)에서 논리적 통신 링크를 생성한다. 생성된 논리적 통신 링크는 블록(815)에서 물리적 통신 링크 상에서 동작한다. 그로부터, 프로세싱은 통신 링크의 트레이닝이 임의의 링크 결함을 식별하도록 모니터링되는 블록(820)으로 진행한다. 링크에 대해 결함이 있는지 여부를 결정하는 체크가 블록(825)에서 이루어진다. 블록(825)에서 결함이 없는 것으로 결정되면, 프로세싱은 링크의 트레이닝이 완료되는 블록(845)으로 진행한다. 그런 다음, 블록(850)에서 데이터 통신 트랜잭션은 트레이닝된 링크 상에서 수행된다. 그런 다음 프로세싱은 블록(855)에서 종료된다.
그러나, 블록(825)에서, 링크 결합이 발생한 것으로 결정되면, 프로세싱은 논리적 통신 링크가 결함있는 물리적 통신 링크로부터 이동되는 블록(830)으로 진 행한다. 새로운 논리적 및 물리적 통신 링크 배열을 제공하는 새로운 매핑은 블록(835)에서 생성되고 논리적 및 물리적 통신 링크는 블록(840)에서 새로운 매핑에 따라 정렬된다. 그로부터, 프로세싱은 블록(815)으로 되돌아가 새롭게 매핑된 채널에 대해 적절히 동작하는지를 재테스트한다. 그로부터, 도시되어 있는 바와 같이 프로세싱은 계속된다.
선택된 횟수의 시도가 실패한 후, 링크에 결함이 있다는 것을 나타내는 신호가 데이터 통신 아키텍쳐(200)의 협동 구성부품에 걸쳐 전송될 것이다. 이와 관련하여, 이 링크는 데이터 통신 트랜잭션용으로 사용되지 않는다.
트레이닝 및 결함있는 트레이닝
예시적인 데이터 통신 아키텍쳐(200)는 또한 결함있는 링크의 재트레이닝을 처리할 수 있다. SERDES 데이터 통신 아키텍쳐에 관련하여, 예시적인 구현은 다수의 SERDES 링크를 함께 사용하여 높은 대역폭 및 낮은 지연을 제공한다. 실제로, SERDES 링크가 사용되어 데이터를 전달할 수 있기 전에, 이들 링크는 먼저 링크의 수신단이 링크를 적절히 정렬하는데 사용하는 적절한 공지된 데이터 시퀀스를 전송함으로써 "트레이닝된다". 또한, 트레이닝은 링크가 다른 공지된 데이터 시퀀스를 정확하게 송신하는지를 테스트하는 기회를 제공한다. 일부 상황 하에서, 링크 트레이닝은 제 1 시도 동안 실패할 수 있고 제 2 시도에서 성공적일 수 있다. 이와 관련하여, 예시적인 구현은 통신 채널의 송신단(예를 들어, 도 2의 데이터 통신 인터페이스(205)의 송신 코어(235))에서 수신단(예를 들어 도 2의 데이터 통신 인터 페이스(210)의 수신 코어(245))으로 제 2 시도 동안 트레이닝을 성공적으로 할 수 있게 해주는 통신 채널 정보를 통신하도록 한다.
예시적인 구현은 링크 트레이닝이 실패한 경우 링크에 걸쳐 정보를 전달하는 메카니즘을 더 제공한다. 동작시, 링크를 테스트하는 데이터 시퀀스는 이들이 그러한 방식으로 인코더 상에 제공되기 전에 포맷되어 동일한 비트 인코딩은 앞서 설명한 인코딩 기법의 디스패리티, 즉 중립적 디스패리티와는 상관없이 생성될 것이다.
링크의 수신단 상에서, SERDES 인터페이스로부터의 데이터는 정적 비트 수신 패턴인데, 그 이유는 이 데이터는 중립적 디스패리티를 유지하도록 포맷되기 때문이다. 이와 같이, 링크와 수신 로직 클록 각각 사이의 정렬이 보장되지 않더라도, 제공된 데이터는 정적 값으로 취급될 수 있다. 또한, 동작시, 예시적인 구현에서는, 데이터 시퀀스의 복사본은 통신 링크의 수신단 상에서 서로 비교되어 불량일 수 있는 임의의 하나의 링크를 실격시킨다. 또한, 정보가 사용되어 링크의 각 종단을, 임의의 결점을 우회하도록 재트레이닝하기 위해 데이터 도착을 예상하는 방식을 변경하도록 재프로그램할 수 있다.
도 9는 링크 트레이닝 결함을 처리하는 경우 예시적인 데이터 통신 아키텍쳐(200)에 의해 수행되는 프로세싱을 도시한다. 도시되어 있는 바와 같이, 프로세싱은 블록(900)에서 시작하여 예시적인 데이터 통신 아키텍쳐가 통신 링크의 트레이닝을 개시하는 블록(905)으로 진행한다. 그로부터, 프로세싱은 링크 관리 데이터가 생성되는 블록(910)으로 진행한다. 링크 관리 데이터는 블록(915)에서 링크 관 리를 통해 직렬자에서 역직렬자로 통신된다. 블록(920)에서 트레이닝은 모니터링되어 링크 트레이닝 실패를 식별한다. 임의의 링크 트레이닝 실패가 있었는지 여부를 결정하는 체크가 블록(925)에서 이루어진다. 링크 트레이닝 실패가 없는 경우, 프로세싱은 데이터 통신 트랜잭션이 수행되는 블록(950)으로 진행한다. 그로부터, 프로세싱은 블록(955)에서 종료한다.
그러나, 블록(925)에서, 링크 트레이닝 실패가 있는 경우, 프로세싱은 링크 관리 데이터가 역직렬자에 의해 처리되는 블록(930)으로 진행한다. 그런 다음 블록(935)에서 링크 관리 데이터는 협동 역직렬자를 거쳐 비교되어 트레이닝 실패를 식별한다. 직렬자와 역직렬자는 블록(940)에서 링크 트레이닝 실패에 대해 재트레이닝하도록 재프로그램된다. 그로부터, 프로세싱은 블록(905)으로 되돌아가고 도시되어 있는 바와 같이 계속된다.
블록(925)에서 결정된 선택된 수의 실패 이후, 링크는 결함있고 데이터 통신 트랜잭션용으로 사용되지 않을 것이라는 결정이 이루어진다. 이와 관련하여, 도 8에서 설명한 바와 같은 부가적인 프로세싱이 수행되어 논리적 및 물리적 채널을 재매핑할 수 있다.
손상 데이터의 처리
예시적인 데이터 통신 아키텍쳐(200)는 데이터 통신 아키텍쳐의 강건함을 증가시키기 위해 데이터를 식별하고 손상으로 마킹할 수 있다. SERDES 데이터 통신 아키텍쳐에 관련하여, 예시적인 구현은 링크를 거쳐 데이터가 성공적으로 송신되지 않는 경우를 식별하고 이러한 데이터를 손상으로 마킹하는 메카니즘을 제공한다. 이것은 작은 데이터 패킷이 전송되기 전에 손상되는 경우 발생할 수 있다. 예시적인 구현은 결함있는 데이터를 수용하도록 하여 링크가 결함있는 작은 데이터 패킷 뒤에 데이터를 전송할 수 있다. 더 나아가, 결함있는 작은 데이터 패킷은 손상으로 마킹될 수 있고 그것의 수신지에 전송될 수 있다.
또한, 예시적인 구현은 링크가 손상으로 마킹된 작은 데이터 패킷을 수신하고 링크가 현재 결함이 있는 경우 진행 중인 임의의 트랜잭션을 완료하도록 허용한다. 이것은 트랜잭션을 완료하도록 제조된 데이터를 전송하고 전체 데이터, 부분적 데이터 및 필러(filler)를 손상으로 마킹함으로써 달성된다. 그렇게 하는 경우, 부분적으로 송신된 트랜잭션이 다른 링크 인터페이스를 방해하지 않도록 함으로써, 기반구조는 결함있는 링크를 능동적으로 사용한 프로세스에 이 결함을 포함시킬 수 있다.
도 10은 데이터 통신 트랜잭션 동안 데이터를 식별하고 손상으로 마킹하는 경우 수행되는 프로세싱을 도시한다. 도시되어 있는 바와 같이, 프로세싱은 블록(1000)에서 시작하여 예시적인 데이터 통신 아키텍쳐(200)의 협동 구성부품 사이에 통신 링크가 수립되는 블록(1005)으로 진행한다. 그로부터, 프로세싱은 수립된 통신 링크를 거친 데이터 송신이 모니터링되는 블록(1010)으로 진행한다. 블록(1015)에서 통신 링크를 거쳐 성공적으로 송신되지 않은 데이터가 식별된다. 식별된 성공적으로 전송되지 않은 데이터는 블록(1020)에서 손상으로 마킹된다. 그로부터, 손상 데이터가 부분적 데이터를 포함하고 있는지 여부를 결정하는 체크가 블 록(1025)에서 수행된다. 블록(1025)에서 부분적 데이터가 없는 것으로 결정된 경우, 프로세싱은 손상으로 마킹된 데이터가 데이터 통신 아키텍쳐의 구성부품에 의해 처리되는 블록(1040)으로 진행한다. 그로부터, 손상으로 마킹된 데이터는 블록(1045)에서 데이터 통신 아키텍쳐에 걸쳐 전파된다. 블록(1050)에서, 데이터 통신 트랜잭션이 수행된다. 그런 다음 블록(1055)에서 종료된다.
그러나, 블록(1025)에서, 부분적 데이터가 있는 것으로 결정되면, 프로세싱은 부분적 손상 데이터에 부착될 필러 데이터가 생성되는 블록(1030)으로 진행한다. 이 필러 데이터 및 부분적 손상 데이터는 블록(1035)에서 총괄적으로 손상 데이터의 한 조각으로 마킹된다. 그로부터, 프로세싱은 블록(4040)으로 진행하고 그로부터 계속된다.
또한, 예시적인 구현에서는, 통신 링크 트레이닝의 성공적인 시도의 하나 이상의 반복의 결과로서 데이터는 손상으로 식별된다. 달리 설명하면, 통신 링크가 최종적으로 성공적으로 트레이닝될 수 있지만, 특정 작은 데이터 패킷의 송신이 실패하면, 그 문제는 이 데이터의 문제인 것으로 결정된다.
에러 검출에 사용되는 에러 코드
도 2의 예시적인 데이터 통신 아키텍쳐(200)는 광범위한 프로세싱을 수행하지 않고도 다수의 통신 채널에 대해 효과적으로 에러를 검출할 수 있다. SERDES 데이터 통신 아키텍쳐에 있어서, 예시적인 구현은 데이터 통신 아키텍쳐의 인코딩 프로토콜을 사용하여 동작하는 에러 디코딩을 제공한다.
동작시, 트랜잭션(또는 데이터 패킷)은 작은 데이터 패킷으로 지칭되는 단위로 몇몇 링크 채널의 집합을 통해 전달되는데, 각 트랜잭션은 그것의 크기에 따라 다수의 작은 데이터 패킷을 필요로 한다. 각 작은 데이터 패킷은 숫자가 부여된(예를 들어, 10) 비트 인코딩 프로토콜로 전송되는 채널마다 숫자(예를 들어, 8) 논리 비트를 포함한다. 이 에러 검출 기법은 한번에 하나의 작은 데이터 패킷에 대해 동작한다. 실제로, 채널마다 사용되는 표준 8b10b 인코딩은 하나의 채널 내에서 하나의 비트 에러를 검출할 수 있다. 이 검출은 작은 데이터 패킷을 운반하는 채널에 걸쳐 8개의 패리티 비트를 계산하는 로직과 결합된다. 패리티 비트는 채널 상에서 전송된 8비트 데이터의 제 1,2,3,....제 8 비트에 근거를 둔다. 그런 다음 이들 8개의 패리티 비트는 하나의 부가적인 링크 채널을 거쳐 전송될 데이터로서 사용된다. 에러는 수신단 상에서 통신 채널을 통해 전송된 데이터에 대해 패리티 비트를 계산함으로써 검출될 수 있다.
도 11은 다수의 통신 채널에 걸쳐 에러를 검출하는 경우 예시적인 데이터 통신 아키텍쳐(200)에 의해 수행되는 프로세싱을 도시한다. 도시되어 있는 바와 같이, 프로세싱은 블록(1100)으로 시작하여 예시적인 데이터 통신 아키텍쳐(200)의 구성부품들 간에 통신 링크가 수립되는 블록(1105)으로 진행한다. 그로부터, 프로세싱은 n 비트를 갖는 인코딩 프로토콜에 기초하여 통신되는 데이터에 대해 패리티 비트가 계산되는 블록(1110)으로 진행한다. 그런 다음 패리티 비트는 블록(1115)에서 통신 링크를 통해 직렬자에서 역직렬자로 통신된다. 그런 다음 패리티 비트는 블록(1120)에서 역직렬자에 의해 처리된다. 블록(1125)에서 패리티 비트를 사 용하여 임의의 에러가 식별되었는지를 결정하는 체크가 이루어진다. 블록(1125)에서 식별된 에러가 없는 경우, 프로세싱은 데이터 통신 트랜잭션이 수행되는 블록(1135)으로 진행한다. 그런 다음 프로세싱은 블록(1140)에서 종료된다.
그러나, 블록(1125)에서, 식별된 에러가 있는 것으로 결정되면, 프로세싱은 데이터가 직렬자에서 역직렬자로 재통신되는 블록(1130)으로 진행한다. 그로부터, 프로세싱은 블록(1110)으로 되돌아가고 도시되어 있는 바와 같이 계속된다.
직렬자에서 역직렬자로 데이터를 재통신하려는 다수의 시도 이후 이어서 에러가 식별되는 경우, 이러한 데이터는 도 10에서 설명한 프로세싱에 따라 손상으로서 마킹될 수 있다.
링크 레벨 재시도
도 2의 예시적인 데이터 통신 아키텍쳐(200)는 그것의 구성부품들 사이에서 데이터의 성공적인 전달을 승인할 수 있다. SERDES 데이터 통신 아키텍쳐에 관련하여, 트랜잭션은 링크를 통해 "패킷" 포맷으로 전달될 수 있다. 트랜잭션이 포함하는 정보 및 데이터의 양에 따라 패킷은 하나 이상의 작은 패킷으로부터 형성될 수 있다. 작은 데이터 패킷은 링크가 한번에 전송하도록 설계되는 페이로드의 단위로서 여겨질 수 있다. 패킷은 다소의 작은 데이터 패킷이 후속하는 헤더 작은 패킷을 포함하여 트랜잭션을 완성할 수 있다. 특히, 헤더는 패킷 유형을 나타내는 정보, 및 그것의 수신지 어드레스와 같은 패킷을 처리하기 위한 다른 정보를 포함할 수 있다.
링크를 통해 작은 데이터 패킷의 전달을 재전송 또는 재시도할 수 있게 하기 위해, 예시적인 구현은 승인 신호가 링크의 반대편 종단으로부터 수신될 때까지 실질적으로 링크를 통해 전달되는 모든 작은 헤더 및 데이터 패킷을 데이터 버퍼에 보유한다. 성공적인 전달의 승인이 수신되면, 이 작은 헤더 및 데이터 패킷을 포함하는 데이터 버퍼 엔트리는 방출되어 또 다른 작은 데이터 패킷에 의해 사용될 수 있다. 제공된 구현에서, 일반적으로 작은 및 헤더 데이터 패킷을 보유하기 위한 링크 레벨 재시도 버퍼 엔트리보다 많지 않은 작은 및 헤더 데이터 패킷이 링크를 통해 전송될 수 있다. 링크를 통해 작은 데이터 패킷을 적절히 전달하는데 실패한 경우, 링크를 통해 재전송될 제 1 작은 헤드 및 데이터 패킷은 승인되지 않은 데이터 버퍼 내의 가장 오래된 데이터 패킷이다.
예시적인 구현은 작은 데이터 패킷의 성공적인 전달의 승인을 달성하는 메카니즘 및 프로토콜을 제공한다. 실제로, 링크를 통해 전달된 작은 데이터 패킷은 작은 데이터 패킷이 저장되는 데이터 버퍼의 엔트리 어드레스와 일치하는 그것과 연관된 태그를 갖는다. 헤더 작은 패킷은 성공적인 전달 승인에 대해 반대되는 필드를 포함한다. 헤더가 링크를 통해 전송되는 경우, 이 필드는 그 때 성공적으로 수신된 마지막 작은 데이터 패킷의 어드레스로 채워진다. 이 어드레스를 전송하는 경우, 승인이 유실되면, 다음 승인은 메카니즘을 자가 교정할 것이다. 링크를 통해 어드레스 승인을 운반할 준비가 되어 있는 유효 헤더가 있지 않은 경우, 예시적인 구현은 링크를 통해 승인을 역으로 운반하기 위한 유휴 헤더를 생성한다.
끝으로, 링크 전달 결함이 교정된 후, 그러나 정상적인 동작이 재시작되기 전에, 가장 최근에 성공적으로 수신된 작은 데이터 패킷의 어드레스가 링크 재시작 시퀀스의 일부로서 전송되어 성공적으로 수신된 작은 데이터 패킷이 적절히 승인되도록 보장한다.
도 12는 성공적인 데이터 통신의 승인을 생성하고 집행하는 경우 도 2의 예시적인 데이터 통신 아키텍쳐(200)에 의해 수행되는 프로세스를 도시한다. 도시되어 있는 바와 같이, 프로세싱은 블록(1200)에서 시작하여 도 2의 데이터 통신 아키텍쳐(200)의 협동 구성부품들 간에 통신 링크가 수립되는 블록(1205)으로 진행한다. 작은 데이터 패킷은 블록(1210)에서 협동 데이터 버퍼에 저장된다. 그로부터, 프로세싱은 작은 데이터 패킷에 대해 어드레스가 생성되는 블록(1215)으로 진행한다. 작은 데이터 패킷 어드레스를 갖는 데이터는 블록(1220)에서 송신 직렬자로부터 통신된다. 블록(1225)에서 수신 역직렬자로 데이터가 적절히 통신되었는지에 대해 체크가 이루어진다. 블록(1225)에서 데이터가 적절히 통신되지 않았다고 나타나면, 프로세싱은 가장 최근의 수신된 작은 데이터 패킷 어드레스를 사용하여 통신 링크의 송신단으로부터 데이터가 재전송되도록 요청하는 블록(1230)으로 진행한다. 그로부터, 프로세싱은 블록(1220)으로 되돌아가고 도시되어 있는 바와 같이 계속된다.
그러나, 블록(1225)에서, 데이터가 적절히 통신되었다고 결정되면, 프로세싱은 통신 링크 수신단으로부터 통신 링크의 송신단으로 승인을 전달하는데 헤더가 이용가능한지 여부를 결정하는 체크가 이루어지는 블록(1235)으로 진행한다. 작은 데이터 패킷이 먼저 전송되어 현재의 출력 패킷을 완성시키기 때문에 승인이 준비 되기 전까지 시간 지연이 발생할 수 있다. 블록(1235)에서 헤더가 이용가능하다는 것을 나타내면, 프로세싱은 작은 데이터 패킷 어드레스를 성공적인 전송의 승인으로서 이용가능한 헤더를 통해 통신 채널의 수신단에서 통신 채널의 송신단으로 통신하는 블록(1255)으로 진행한다. 프로세싱은 협동 데이터 버퍼로부터 작은 데이터 패킷 어드레스가 방출되는 블록(1260)으로 진행한다. 프로세싱은 블록(1250)에서 종료된다.
그러나, 블록(1235)에서, 이용가능한 헤더가 없는 것으로 결정되면, 블록(1240)에서 성공적인 전송의 승인을 전달하기 위한 유휴 헤더가 생성된다. 이 유휴 헤더는 블록(1245)에서 통신 링크의 수신단에서 통신 링크의 송신단으로 통신된다. 프로세싱은 다시 한번 협동 데이터 버퍼로부터 작은 데이터 패킷 어드레스가 방출되는 블록(1260)으로 진행한다. 프로세싱은 블록(1250)에서 종료된다.
요컨대, 본 명세서에서 설명한 장치 및 방법은 데이터 지연을 줄이는 컴퓨팅 환경 통신 패브릭으로서 사용되는 데이터 통신 아키텍쳐를 제공한다. 그러나, 본 발명은 다양한 수정 및 또 다른 구성을 수용할 수 있다. 본 발명을 본 명세서에서 설명한 특정 구성에 제한할 의도는 없다. 오히려, 본 발명은 본 발명의 범주 및 사상 내에서 모든 수정, 또 다른 구성 및 등가물을 포함하려 한다.
본 발명은 다양한 컴퓨터 환경(유선 및 무선 컴퓨터 환경), 부분적 컴퓨팅 환경 및 실사회 환경으로 구현될 수 있다. 본 명세서에서 설명한 다양한 기법은 하드웨어 또는 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 바람직하게, 이들 기법은 프로세서, 이 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비 휘 발성 메모리 및/또는 저장 소자를 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그램가능한 컴퓨터를 유지하는 컴퓨팅 환경에서 구현된다. 다양한 인스트럭션 세트와 협동하는 컴퓨팅 하드웨어 로직은 데이터에 적용되어 위에서 설명한 기능을 수행하고 출력 정보를 생성한다. 이 출력 정보는 하나 이상의 출력 장치에 적용된다. 예시적인 컴퓨팅 하드웨어에 의해 사용되는 프로그램은 바람직하게 컴퓨터 시스템과 통신하기 위한 상위 레벨 절차 또는 객체 지향 프로그래밍 언어를 포함하는 다양한 프로그램 언어로 구현된다. 예시적으로, 본 명세서에서 설명한 장치 및 방법은 어셈블리 또는 기계 언어로 구현될 수 있다. 어느 경우에서도, 언어는 컴파일 또는 해석된 언어일 수 있다. 이러한 각 컴퓨터 프로그램은 바람직하게 저장 매체 또는 장치(예를 들어, ROM 또는 자기 디스크) 상에 저장되는데, 이 저장 매체 또는 장치는 범용 또는 전용 프로그램 컴퓨터에 의해 판독가능하여 저장 매체 또는 장치가 컴퓨터에 의해 판독되는 경우 컴퓨터를 구성하고 동작시킴으로써 위에서 설명한 절차를 수행한다. 이 장치가 컴퓨터로 하여금 특정 및 사전정의된 방식으로 동작하도록 야기하도록 컴퓨터 프로그램으로 구성된 컴퓨터 판독가능 저장 매체로서 구현되는 경우를 고려할 수 있다.
본 발명의 예시적인 구현이 위에서 상세히 설명하였지만, 당업자라면 본 발명의 새로운 가르침 및 장점으로부터 실질적으로 벗어나지 않고서 예시적인 실시예에 다수의 부가적인 수정이 가능하다는 것을 쉽게 이해할 것이다. 따라서, 이들 및 모든 이러한 수정은 본 발명의 범주 내에 포함되려 한다. 본 발명은 후속하는 예시적인 청구항에 의해 더 잘 정의될 수 있다.
본 발명에 따른 직렬자/역직렬자 데이터 통신 아키텍쳐를 통해 보다 높은 대역폭의 데이터 통신이 가능하게 되었다.

Claims (10)

  1. 데이터 통신 아키텍쳐를 갖는 컴퓨팅 환경에서 데이터 통신의 갭을 처리하는 방법에 있어서,
    데이터 통신의 상태와 데이터 통신의 시퀀스를 나타내는 정보를 갖는 제어 데이터 패킷을 생성하는 단계와,
    상기 제어 데이터 패킷을 데이터 통신 채널을 통해 직렬자(serializer)에서 역직렬자(deserializer)로 통신하는 단계와,
    상기 역직렬자에 의해 상기 제어 데이터 패킷을 처리하여 데이터 통신 갭을 식별하는 단계
    를 포함하는 데이터 통신의 갭 처리 방법.
  2. 제 1 항에 있어서,
    통신을 위해 상기 직렬자가 데이터를 인코딩하는 단계를 더 포함하는
    데이터 통신의 갭 처리 방법.
  3. 제 1 항에 있어서,
    수신된 데이터를 상기 역직렬자가 디코딩하는 단계를 더 포함하는
    데이터 통신의 갭 처리 방법.
  4. 제 1 항에 있어서,
    데이터 통신 갭을 나타내는 데이터를 갖는 데이터 패킷을 생성하는 단계를 더 포함하는
    데이터 통신의 갭 처리 방법.
  5. 제 4 항에 있어서,
    제어 정보 패킷을 생성하는 단계를 더 포함하는
    데이터 통신의 갭 처리 방법.
  6. 제 5 항에 있어서,
    상기 제어 정보 패킷을 전용의 제어 통신 채널을 통해 통신하는 단계를 더 포함하는
    데이터 통신의 갭 처리 방법.
  7. 제 5 항에 있어서,
    데이터 통신 갭의 존재를 나타내는 선택된 값을 갖는 상기 제어 정보 패킷을 상기 직렬자가 인코딩하는 단계를 더 포함하는
    데이터 통신의 갭 처리 방법.
  8. 제 7 항에 있어서,
    상기 직렬자에 의해 상기 데이터 통신 갭이 식별되는 경우 상기 직렬자에 의해 선택된 값을 갖는 상기 제어 정보 패킷을 상기 역직렬자에 통신하는 단계를 더 포함하는
    데이터 통신의 갭 처리 방법.
  9. 제 8 항에 있어서,
    데이터 통신에 갭이 있다는 것을 나타내는 상기 제어 정보 패킷을 상기 역직렬자가 수신하는 경우, 데이터 통신 동작을 진행하라는 신호를 상기 역직렬자가 상기 직렬자로 전송하는 단계를 더 포함하는
    데이터 통신의 갭 처리 방법.
  10. 데이터 통신 아키텍쳐에서 데이터 통신의 갭을 처리하는 방법에 있어서,
    본체 패킷과 헤더를 포함하는 데이터를 직렬자가 수신하는 단계와,
    상기 직렬자가 상기 데이터를 처리하여 임의의 통신 갭을 식별하는 단계와,
    상기 데이터 통신의 갭을 식별하는 경우, 상기 직렬자에서 역직렬자로 통신하게 될 상기 데이터에 첨부할 제어 정보 패킷을 생성하는 단계
    를 포함하되,
    상기 제어 정보 패킷은 데이터 통신의 갭을 나타내는 값을 포함하는
    데이터 통신의 갭 처리 방법.
KR1020050002604A 2004-01-12 2005-01-11 데이터 통신의 갭을 처리하는 방법 KR101086599B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/756,441 2004-01-12
US10/756,441 US7454514B2 (en) 2004-01-12 2004-01-12 Processing data with uncertain arrival time

Publications (2)

Publication Number Publication Date
KR20050074315A KR20050074315A (ko) 2005-07-18
KR101086599B1 true KR101086599B1 (ko) 2011-11-23

Family

ID=34911238

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050002604A KR101086599B1 (ko) 2004-01-12 2005-01-11 데이터 통신의 갭을 처리하는 방법

Country Status (2)

Country Link
US (1) US7454514B2 (ko)
KR (1) KR101086599B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711878B2 (en) * 2004-05-21 2010-05-04 Intel Corporation Method and apparatus for acknowledgement-based handshake mechanism for interactively training links
US20050262184A1 (en) * 2004-05-21 2005-11-24 Naveen Cherukuri Method and apparatus for interactively training links in a lockstep fashion
US8261134B2 (en) * 2009-02-02 2012-09-04 Cray Inc. Error management watchdog timers in a multiprocessor computer

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311239B1 (en) 1998-10-29 2001-10-30 Cypress Semiconductor Corp. Architecture, circuitry and method for transmitting n-bit wide data over m-bit wide media
US20030023912A1 (en) * 2001-07-24 2003-01-30 Xilinx, Inc. Integrated testing of serializer/deserializer in FPGA
US6775274B1 (en) 2000-01-27 2004-08-10 International Business Machines Corporation Circuit and method for providing secure communication over data communication interconnects

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US189903A (en) * 1877-04-24 Improvement in the methods of mounting show-cards, maps
US210071A (en) * 1878-11-19 Improvement in animal-traps
US149922A (en) * 1874-04-21 Improvement in machinery for burnishing heels of boots and shoes
FR2664765B1 (fr) * 1990-07-11 2003-05-16 Bull Sa Dispositif de serialisation et de deserialisation de donnees et systeme de transmission numerique de donnees en serie en resultant.
US6516952B1 (en) * 1999-05-13 2003-02-11 3Com Corporation Dual mode serializer-deserializer for data networks
US6628679B1 (en) * 1999-12-29 2003-09-30 Intel Corporation SERDES (serializer/deserializer) time domain multiplexing/demultiplexing technique
US6647428B1 (en) * 2000-05-05 2003-11-11 Luminous Networks, Inc. Architecture for transport of multiple services in connectionless packet-based communication networks
US7010612B1 (en) * 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US7062568B1 (en) * 2002-01-31 2006-06-13 Forcelo Networks, Inc. Point-to-point protocol flow control extension
US7343535B2 (en) 2002-02-06 2008-03-11 Avago Technologies General Ip Dte Ltd Embedded testing capability for integrated serializer/deserializers
US7191371B2 (en) 2002-04-09 2007-03-13 Internatioanl Business Machines Corporation System and method for sequential testing of high speed serial link core
WO2003096537A1 (en) 2002-05-13 2003-11-20 Fairchild Semiconductor Corporation Cross point switch with serializer and deserializer functions
US7082556B2 (en) * 2002-10-07 2006-07-25 Finisar Corporation System and method of detecting a bit processing error
US7251764B2 (en) * 2003-05-27 2007-07-31 International Business Machines Corporation Serializer/deserializer circuit for jitter sensitivity characterization
US7159137B2 (en) * 2003-08-05 2007-01-02 Newisys, Inc. Synchronized communication between multi-processor clusters of multi-cluster computer systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311239B1 (en) 1998-10-29 2001-10-30 Cypress Semiconductor Corp. Architecture, circuitry and method for transmitting n-bit wide data over m-bit wide media
US6775274B1 (en) 2000-01-27 2004-08-10 International Business Machines Corporation Circuit and method for providing secure communication over data communication interconnects
US20030023912A1 (en) * 2001-07-24 2003-01-30 Xilinx, Inc. Integrated testing of serializer/deserializer in FPGA

Also Published As

Publication number Publication date
US7454514B2 (en) 2008-11-18
US20050198349A1 (en) 2005-09-08
KR20050074315A (ko) 2005-07-18

Similar Documents

Publication Publication Date Title
KR101099471B1 (ko) PCI.Express 통신 시스템, 및 그 통신 방법
US7836378B2 (en) System to detect and identify errors in control information, read data and/or write data
US6418504B2 (en) System and method for coupling peripheral buses through a serial bus using a split bridge implementation
JP3996928B2 (ja) 破損データを処理する方法
US7324913B2 (en) Methods and apparatus for testing a link between chips
US7461321B2 (en) Error detection
US7721159B2 (en) Passing debug information
US7436777B2 (en) Failed link training
FR2865089A1 (fr) Procede pour communiquer des donnees a l'aide de tampons de donnees de relance
US7363402B2 (en) Data communications architecture employing parallel SERDES channels
KR101086599B1 (ko) 데이터 통신의 갭을 처리하는 방법
CN1703027B (zh) 传递调试信息
US7672222B2 (en) Link failures
US7310762B2 (en) Detection of errors
US20060184707A1 (en) Error injection
US7613958B2 (en) Error detection in a system having coupled channels
US20060159023A1 (en) CRC error history mechanism
TWI383294B (zh) 用以識別資料通訊架構之構件的系統
US7624213B2 (en) Passing identification information
JP4455393B2 (ja) プログラマブルロジックコントローラ
US7681102B2 (en) Byte level protection in PCI-Express devices
JP5145860B2 (ja) メモリ二重化システム及び情報処理装置
US20060140122A1 (en) Link retry per virtual channel
US20230325540A1 (en) Integrity and data encryption (ide) buffer device with low-latency containment mode
US7471623B2 (en) Systems and methods for a unified computer system fabric

Legal Events

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