KR20120024669A - Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치 - Google Patents

Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치 Download PDF

Info

Publication number
KR20120024669A
KR20120024669A KR1020117028449A KR20117028449A KR20120024669A KR 20120024669 A KR20120024669 A KR 20120024669A KR 1020117028449 A KR1020117028449 A KR 1020117028449A KR 20117028449 A KR20117028449 A KR 20117028449A KR 20120024669 A KR20120024669 A KR 20120024669A
Authority
KR
South Korea
Prior art keywords
packet
request
queue
posted
port
Prior art date
Application number
KR1020117028449A
Other languages
English (en)
Other versions
KR101298862B1 (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 KR20120024669A publication Critical patent/KR20120024669A/ko
Application granted granted Critical
Publication of KR101298862B1 publication Critical patent/KR101298862B1/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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

PCIe(Peripheral Component Interconnect Express)를 통해 ID 기반 스트림을 가능하게 하는 방법 및 장치가 여기서 설명된다. 이러한 관점에서, 직렬 점대점 상호 접속부를 통해 전송되는 패킷을 주문하는 메모리 순서화 로직을 포함하는 장치가 도입되고, 제 2 패킷은 상기 제 2 패킷이 순서와 무관함을 나타내도록 설정된 속성 플래그를 포함하며, 상기 제 2 패킷이 제 1 패킷과 관련된 ID와 상이한 ID를 포함할 경우에 상기 메모리 순서화 로직은 상기 제 1 패킷 후에 도달되는 상기 제 2 패킷으로 지연된 제 1 패킷을 바이패스한다. 다른 실시예가 또한 설명되고 청구된다.

Description

PCI 익스프레스를 통해 ⅠD 기반 스트림을 가능하게 하는 방법 및 장치{METHOD AND APPARATUS FOR ENABLING ID BASED STREAMS OVER PCI EXPRESS}
본 발명은 상호 접속부의 분야에 관한 것으로서, 특히, PCI 익스프레스를 통해 ID 기반 스트림을 가능하게 하는 것에 관한 것이다.
컴퓨터 시스템은 많은 구성 요소 및 소자를 포함한다. 종종 구성 요소는 버스 또는 상호 접속부를 통해 결합된다. 이전에는, 입력/출력(I/O) 장치는 PCI(Peripheral Component Interconnect)로 지칭되는 종래의 멀티드롭 병렬 버스 구조를 통해 서로 결합되었다. 최근에는, PCIe(PCI-Express)로 지칭되는 새로운 세대의 I/O 버스가 시리얼 물리 계층 통신 프로토콜을 활용하는 장치 사이에 고속의 상호 접속을 용이하게 하는데 이용되어왔다.
PCIE 구조는 장치 사이에 통신하는 계층 프로토콜을 포함한다. 일례로서, 물리 계층, 링크 계층 및 트랜잭션 계층(transaction layer)은 PCIE 프로토콜 스택(stack)을 형성한다. PCIe 링크는 레인(lane)으로 지칭되는 직렬 점대점 접속부( serial point-to-point connections)의 전용 단방향 쌍 주변에 구축된다. 장치 사이의 링크는 1, 2, 16, 32 등과 같은 어떤 수의 레인을 포함한다. 현재 PCIE 사양, base spec 2.0은 http://www.pcisig.com/specifications/pciexpress/에서 이용 가능하다.
통상의 PCIe 순서화 규칙은 생산자-소비자 프로그래밍 모델을 가능하게 하도록 생성되었다. 이러한 모델 하에, 특정 장치로부터의 판독은 그것 앞에 생성된 기록을 푸시(push)하는데 필요하다. 이와 같은 프로그래밍 모델은 메모리 위치 X의 판독이 항상 메모리 위치에 기록된 가장 최근의 데이터를 확실히 획득하게 한다.
그러나, 이러한 순서화 요건은 한 요청 스트림으로부터의 요청(동일한 요청자 및 동일한 대상을 가진 판독 또는 기록 트랜잭션의 시퀀스)이 다른 독립적인 요청 스트림을 방해시킨다. 이러한 방해는 심각한 성능 병목 현상(severe performance bottleneck)을 유발시킬 수 있다. 이 문제는 특히 판독 요청이 지연 시간에 민감하기 때문에 포스트(post)되지 않은 요청이 포스트된 요청 뒤에 차단될 경우에 특히 나쁘다.
본 발명은 예로서 도시되지만, 첨부한 도면에 의해 제한되는 것으로 의도되지 않는다.
도 1은 컴퓨터 시스템에서 I/O 장치를 접속하는 직렬 점대점 상호 접속부를 포함하는 시스템의 실시예를 예시한 것이다.
도 2는 계층 프로토콜 스택의 실시예를 예시한 것이다.
도 3은 메모리 순서화 로직의 실시예를 예시한 것이다.
도 4는 ID 기반 순서화 플래그를 포함하는 패킷의 실시예를 예시한 것이다.
도 5는 순서화 테이블의 실시예를 예시한 것이다.
도 6은 장치 ID 기반 스트림을 가능하게 하는 흐름도의 실시예를 예시한 것이다.
다음의 설명에서, 본 발명의 철저한 이해를 제공하기 위해 특정 상호 접속부, 특정 패킷/메시지, 패킷/메시지 내의 특정 필드 및 위치, 로직/캐시의 특정 위치 등의 예들과 같은 수많은 특정 상세 사항이 설명된다. 그러나, 이들 특정 상세 사항은 본 발명을 실시하는데 사용될 필요가 없다는 것은 당업자에게는 자명할 것이다. 다른 사례에서는, 캐시 로직/구현, PCIe(Peripheral Component Interconn Express) 메시징 프로토콜, 트랜잭션에서의 PCIe 필드/패킷 및 다른 PCIe 기본 구현과 같은 잘 알려진 구성 요소 또는 방법은 본 발명을 불필요하게 모호함을 회피하기 위해 상세히 설명하지 않았다.
여기에서 설명된 방법 및 장치는 PCIe를 통해 ID 기반 스트림을 가능하게 하기 위한 것이다. 특히, 스위치에서 대기 요청의 바이패싱(bypassing)은 (크레디트 또는 페이지-폴트와 같은 다른 이벤트에) 지연(stall)되는 포스트된 요청을 참조로 논의된다. 그러나, ID 기반 스트림을 가능하게 하는 방법 및 장치는 어떤 타입의 직렬 점대점 상호 접속부와 함께 뿐만 아니라 어떤 입력/출력 장치 또는 다른 컴퓨터 구성 요소와 같은 어떤 집적 회로 장치에서 또는 이와 관련하여 구현될 시에 그렇게 제한되지 않는다.
직렬 점대점 계층 프로토콜 링크/상호 접속부
도 1을 참조하면, 시리얼 링크를 통해 제어기 허브에 결합되는 장치를 포함하는 시스템의 실시예가 예시된다. 시스템(100)은 제어기 허브(115)에 결합된 프로세서(105) 및 시스템 메모리(110)를 포함한다. 프로세서(105)는 마이크로프로세서, 호스트 프로세서, 임베디드(embedded) 프로세서, 공동 프로세서 또는 다른 프로세서와 같은 어떤 처리 소자를 포함한다. 프로세서(105)는 프론트 사이드 버스(FSB)(106)를 통해 제어기 허브(115)에 결합된다. 일 실시예에서, FSB(106)는 아래에 설명되는 바와 같이 직렬 점대점 접속부이다.
시스템 메모리(110)는 랜덤 액세스 메모리(RAM), 비휘발성(NV) 메모리, 또는 시스템(100) 내의 장치에 의해 액세스 가능한 다른 메모리와 같은 어떤 메모리 장치를 포함한다. 시스템 메모리(110)는 메모리 인터페이스(116)를 통해 제어기 허브(115)에 결합된다. 메모리 인터페이스의 예들은 더블 데이터 레이트(DDR) 메모리 인터페이스, 듀얼 채널 DDR 메모리 인터페이스 및 동적 RAM(DRAM) 메모리 인터페이스를 포함한다.
일 실시예에서, 제어기 허브(115)는 PCIe 또는 PCIE(Peripheral Component Interconnect Express) 상호 접속 계층에서의 루트(root) 허브 또는 루트 제어기이다. 제어기 허브(115)의 예들은 칩셋, 메모리 제어기 허브(MCH), 노스브리지(northbridge), 상호 접속 제어기 허브(ICH), 사우스브리지(southbridge), 및 루트 제어기/허브를 포함한다. 종종 용어 칩셋은 물리적으로 별도의 2개의 제어기 허브, 즉 상호 접속 제어기 허브(ICH)에 결합된 메모리 제어기 허브(MCH)를 나타낸다.
여기서, 제어기 허브(115)는 시리얼 링크(119)를 통해 스위치/브리지(120)에 결합된다. 또한 인터페이스/포트(117 및 121)라 할 수 있는 입력/출력 모듈(117 및 121)은 제어기 허브(115)와 스위치(120) 사이에 통신을 제공하도록 계층 프로토콜 스택을 포함/구현한다. 모듈(117, 118, 121, 122, 124, 126, 129 및 131)과 같은 모듈은 하드웨어, 소프트웨어, 펌웨어 또는 이의 어떤 조합에서 구현될 수 있다. 더욱이, 모듈 경계는 일반적으로 변하고, 기능은 서로 다른 실시예에서 별도로 구현될 뿐만 아니라 함께 구현된다. 일 실시예에서, 다수의 장치는 스위치(120)에 결합될 수 있다.
스위치(120)는, 루트 제어기를 향해 계층을 업(up)시키는 장치(125 및 128) 업스트림으로부터, 루트 제어기에서 떨어져 계층을 다운(down)시키는 제어기 허브(115) 다운스트림으로, 프로세서(105) 또는 시스템 메모리(110)로부터 장치(125 및 128)로 패킷/메시지의 경로를 정한다. 장치(125 및 128)는 I/O 장치, NIC(Network Interface Controller), 애드인 카드(add-in card), 오디오 프로세서, 네트워크 프로세서, 하드 드라이브, 저장 장치, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 휴대용 저장 장치, 파이어와이어(Firewire) 장치, USB(Universal Serial Bus) 장치, 스캐너 및 다른 입력/출력 장치와 같이 전자 시스템에 결합되는 어떤 내부 또는 외부 장치 또는 구성 요소를 포함한다. 이후에 더욱 상세히 설명되는 바와 같이, 스위치(120)는 장치 ID 기반 스트림을 가능하게 하도록 메모리 순서화 로직(140)을 포함한다.
그래픽 가속기(130)는 또한 시리얼 링크(132)를 통해 제어기 허브(115)에 결합된다. 일 실시예에서, 그래픽 가속기(130)는 MCH에 결합되고, MCH는 ICH에 결합된다. 그 후, 스위치(120) 및 이에 따라 I/O 장치(125 및 128)는 ICH에 결합된다. I/O 모듈(131 및 118)은 또한 그래픽 가속기(130)와 제어기 허브(115) 사이에 통신하도록 계층 프로토콜 스택을 구현할 수 있다.
도 2를 참조하면, 계층 프로토콜 스택의 실시예가 예시된다. 계층 프로토콜 스택(200)은 빠른 경로 상호 접속(QPI) 스택, PCIe 스택 또는 다른 프로토콜 스택과 같은 어떤 계층 통신 스택을 포함한다. 일 실시예에서, 프로토콜 스택(200)은 트랜잭션 계층(205), 링크 계층(210) 및 물리 계층(220)을 포함하는 PCIe 프로토콜 스택이다. 도 1에서 인터페이스(117, 118, 121, 122, 124, 126, 129 및 131)와 같은 인터페이스는 통신 프로토콜 스택(200)으로 나타낼 수 있다. 통신 프로토콜 스택으로서의 표현은 또한 프로토콜 스택을 구현/포함하는 모듈 또는 인터페이스라 한다
트랜잭션 계층
일 실시예에서, 트랜잭션 계층(205)은 데이터 링크 계층(210) 및 물리 계층(220)과 같이 장치의 처리 코어와 상호 접속 구조 사이에 인터페이스를 제공할 수 있다. 이와 관련하여, 트랜잭션 계층(205)의 주요한 책임은 패킷(즉, 트랜잭션 계층 패킷, 또는 TLPs)의 조립 및 분해이다. PCIe는 스플릿 트랜잭션(split transaction), 즉 시간에 의해 분리되는 요청 및 응답에 따른 트랜잭션을 구현하여, 타겟 장치가 응답에 대한 데이터를 수집하는 동안 링크가 다른 트래픽을 운반하도록 한다.
부가적으로, PCIe는 크레디트 기반 흐름 제어를 활용한다. 이러한 기법에서, 장치는 트랜잭션 계층(205)에서 수신 버퍼의 각각에 대한 크레디트의 초기 금액을 알린다. 도 1에서 제어기 허브(115)와 같이 링크의 대향 단부에 있는 외부 장치는 각 TLP에 의해 소비되는 크레디트의 수를 카운트한다. 트랜잭션이 크레디트 한도를 초과하지 않는 경우에 트랜잭션은 전송될 수 있다. 응답을 수신할 시에 크레디트 금액은 복원된다. 크레디트 기법의 이점은, 크레디트 한도에 부닥치지 않으면, 크레디트 반환의 지연이 성능에 영향을 주지 않는다는 것이다.
일 실시예에서, 4개의 트랜잭션 주소 공간은 구성 주소 공간, 메모리 주소 공간, 입력/출력 주소 공간 및 메시지 주소 공간을 포함한다. 메모리 공간 트랜잭션은 데이터를 메모리 매핑된 위치로/로부터 전송하도록 판독 요청 및 기록 요청 중 하나 이상을 포함한다. 일 실시예에서, 메모리 공간 트랜잭션은 2개의 서로 다른 주소 포맷, 예컨대, 32 비트 주소와 같은 짧은 주소 포맷, 또는 64 비트 주소와 같은 긴 주소 포맷을 이용할 수 있다. 구성 공간 트랜잭션은 PCIe 장치의 구성 공간을 액세스하는데 이용된다. 구성 공간에 대한 트랜잭션은 판독 요청 및 기록 요청을 포함한다. 메시지 공간 트랜잭션(또는, 간단히 메시지)은 PCIe 에이전트 사이에 대역내 통신을 지원하기 위해 규정된다.
그래서, 일 실시예에서, 트랜잭션 계층(205)은 패킷 헤더/페이로드(206)를 조립한다. 패킷 헤더/페이로드에 대한 포맷은 PCIe 사양, 즉
http://www.pcisig.com/specifications/pciexpress/에서 이용 가능한 PCIe base spec 2.0에서 발견될 수 있다.
링크 계층
또한 데이터 링크 계층(210)으로 지칭되는 링크 계층(210)은 트랜잭션 계층(205)과 물리 계층(220) 사이의 중간 단계로 작용한다. 일 실시예에서, 데이터 링크 계층(210)의 책임은 두 구성 요소의 사이에서 TLPs(Transaction Layer Packets)를 교환하기 위한 신뢰할 수 있는 메커니즘에 링크를 제공하는 것이다. 데이터 링크 계층(210)의 한쪽은 트랜잭션 계층(205)에 의해 조립되는 TLPs를 수락하고, 패킷 시퀀스 식별자(211), 즉 식별 번호 또는 패킷 번호를 적용하며, 에러 검출 코드, 즉 CRC(212)를 계산하여 적용하고, 외부 장치에 물리적으로 전송하기 위해 수정된 TLPs를 물리 계층(220)에 제시한다.
물리 계층
물리 계층(220)은 물리적으로 패킷을 외부 장치로 전송하기 위해 논리적 서브 블록(221) 및 전기적 서브 블록(222)을 포함한다. 여기서, 논리적 서브 블록(221)은 물리 계층(221)의 "디지털" 기능에 대한 책임을 진다. 이와 관련하여, 논리적 서브 블록은 물리적 서브 블록(222)에 의해 전송하기 위해 발신 정보를 준비하는 전송 섹션, 및 그것을 링크 계층(210)으로 전달하기 전에 수신된 정보를 식별하여 준비하는 수신 섹션을 포함한다.
물리적 블록(222)은 송신기 및 수신기를 포함한다. 송신기에는 논리적 서브 블록(221)에 의해 심벌이 공급되고, 송신기는 직렬화하여 외부 장치로 전송한다. 수신기에는 외부 장치로부터 직렬화된 심벌이 공급되고, 수신기는 수신된 신호를 비트스트림으로 변환한다. 비트스트림은 역직렬화(deserialize)되어 논리적 서브 블록(221)에 공급된다. 일 실시예에서, 8b/10b 전송 코드는 10 비트 심벌이 송신/수신되는 곳에 사용된다. 여기서, 특수 심벌은 프레임(223)으로 패킷을 프레임하는데 이용된다. 게다가, 일 예에서, 수신기는 또한 착신 직렬 스트림으로부터 복원되는 심벌 클록을 제공한다.
상술한 바와 같이, 트랜잭션 계층(205), 링크 계층(210) 및 물리 계층(220)이 PCIe 프로토콜 스택에 대한 특정 실시예에 관련하여 논의되지만, 계층 프로토콜 스택은 제한되지 않는다. 사실상, 어떤 계층 프로토콜은 포함/구현될 수 있다. 일례로서, 계층 프로토콜로 표현되는 포트/인터페이스는 (1) 패킷을 조립하는 제 1 계층, 즉 트랜잭션 계층; 패킷을 시퀀스하는 제 2 계층, 즉 링크 계층; 및 패킷을 전송하는 제 3 계층, 즉 물리 계층을 포함한다.
그 다음, 도 3을 참조하면, 메모리 순서화 로직의 실시예가 예시된다. 도시된 바와 같이, 지능형 스위치(300)는 메모리 순서화 로직(305), (포스트된 요청(310A-N)을 포함하는) 포스트된 요청 큐(308) 및 포인터(322), (포스트되지 않은 요청(316A-N)을 포함하는) 포스트되지 않은 요청 큐(314) 및 포인터(324), (완료(320A-N)를 포함하는) 완료 큐(318) 및 포인터(326), 및 (업스트림 또는 다운스트림 포트일 수 있는) 포트(350)를 포함한다.
예컨대, 도 6을 참조로 설명된 바와 같이, 메모리 순서화 로직(305)은 장치 ID 기반 스트림을 가능하게 하는 방법을 구현하고, ID 기반의 순서화 액티베이터(activator)(332), 큐 선택기(334), 포인터 핸들러(336), 요청자/완료자(requestor/completer) ID 비교기(338) 및 IDO 플래그 체크(340)를 포함할 수 있다.
도 4를 참조하면, ID 기반의 순서화 플래그를 포함하는 패킷에 대한 실시예가 예시된다. 패킷은 어떤 요청, 메시지, 액세스, 또는 버스/상호 접속부 상에 전송되는 정보의 다른 그룹화를 나타낸다. 도시된 실시예에서, 패킷(400)은 다른 정보 필드(405)를 포함한다. 다른 정보(405)의 예들은 예약된 필드, 포맷 필드, 타입 필드, 속성 필드, 길이 필드, PCIe 특정 필드 및 어떤 다른 프로토콜 특정 필드를 포함한다. 게다가, 패킷(400)은 요청자 ID(415) (바이트 4 및 5)를 포함하며, 이는 요청 에이전트/장치를 참조할 수 있고, 글로벌 ID/트랙잭션 디스크립터(transaction descriptor)의 부분일 수 있거나, 글로벌 ID/트랜잭션 ID, 및 주소 위치를 참조할 주소 필드(420)를 포함할 수 있다.
속성 비트(402 및 404)는 도시된 바와 같이 순서화 모델(450, 455, 460 및 465)을 가능하게 할 수 있다. 바이트 1의 현재 예약된 비트 2를 이용할 수 있는 속성 비트(402)는 ID 기반의 순서화 플래그를 나타내며, 이 ID 기반의 순서화 플래그는 요청 또는 완료가 순서와는 무관함을 나타내는 요청자 또는 완료자(completer)로 설정될 수 있고, 포스트된 요청을 바이패스할 수 있다.
다음에는 도 5를 참조하면, 순서화 테이블의 실시예가 예시된다. 테이블(500)은 PCIe 사양의 테이블 2-24와 유사하지만, 초기 큐를 바이패싱하도록 수정되지만, 어떤 경우에 독립적 요청 스트림에 의해 메모리 기록 또는 메시지 요청(col.2)이 지연(stall)되며 포스트된다.
셀(505)에 따르면, 메모리 기록 또는 메시지 요청은; (a) 릴랙스된(relaxed) 순서화 속성 비트(404)가 클리어되며 ID 순서화 비트(402)가 클리어된 상태에서 전달하지 않아야 하고; (b) 릴랙스된 순서화 속성 비트(404)가 설정되며 ID 순서화 비트(402)가 클리어된 상태에서 전달하도록 허용되며, (c) 릴랙스된 순서화 속성 비트(404)가 클리어되며 ID 순서화 비트(402)가 설정된 상태에서 요청자 ID(415)가 상이할 경우에 어떤 다른 메모리 기록 또는 메시지 요청을 전달하도록 허용된다.
셀(510)에 따르면, 판독 요청은: (a) 릴랙스된 순서화 속성 비트(404)가 클리어되며 ID 순서화 비트(402)가 클리어된 상태에서 전달하지 않아야 하고; (b) 릴랙스된 순서화 속성 비트(404)가 설정되며 ID 순서화 비트(402)가 클리어된 상태에서 전달하지 않아야 하며, (c) 릴랙스된 순서화 속성 비트(404)가 클리어 또는 설정되며 ID 순서화 비트(402)가 설정된 상태에서 요청자 ID(415)가 상이할 경우에 어떤 다른 메모리 기록 또는 메시지 요청을 전달하도록 허용된다.
셀(515)에 따르면, I/O 또는 구성 기록 요청은 메모리 기록 또는 메시지 요청을 전달하지 않는다. 이것은 생산자/소비자 사용 모델을 지원하는데 필요한 강력한 기록 순서를 보존한다.
셀(520)에 따르면, 판독 완료은: (a) 릴랙스된 순서화 속성 비트(404)가 클리어되며 ID 순서화 비트(402)가 클리어된 상태에서 전달하지 않아야 하고; (b) 릴랙스된 순서화 속성 비트(404)가 설정되며 ID 순서화 비트(402)가 클리어된 상태에서 전달하도록 허용되며, (c) 릴랙스된 순서화 속성 비트(404)가 클리어되며 ID 순서화 비트(402)가 설정된 상태에서 완료자 ID가 메모리 기록의 요청자 ID(415)와 상이할 경우에 어떤 다른 메모리 기록 또는 메시지 요청을 전달하도록 허용된다.
최종으로, 셀(525)에 따르면, I/O 또는 구성 기록 완료는 메모리 기록 및 메시지 요청에 의해 차단되거나 이를 전달하도록 허용된다. 이와 같은 트랜잭션은 실제로 반대 방향으로 움직여, 순서화 관계를 갖지 않는다.
그 다음, 도 6을 참조하면, 장치 ID 기반 스트림을 가능하게 하는 흐름도의 실시예가 예시된다. 흐름(605)에서, ID 기반 순서화 액티베이터(332)는 포스트된 요청을 바이패스할 기회가 존재하는지를 판단한다. 일 실시예에서, 액티베이터(332)는 포스트된 요청이 지연되는 것으로 판단될 경우에 프로세스를 흐름(610)으로 전진시킨다.
그 후, 큐 선택기(334)는 흐름(610)에 전송할 대체 패킷을 찾을 큐를 선택한다. 일 실시예에서, 선택기(334)는 가장 많은 엔트리를 가진 큐에 기초하여 포스트된 요청 큐(308), 포스트되지 않은 요청 큐(314) 또는 완료 큐(318)를 선택한다. 다른 실시예에서, 선택기(334)는 항상 먼저 대체 패킷을 찾을 포스트되지 않은 요청 큐(314)를 선택한다. 흐름(615)에서, 포인터 핸들러(336)는 예컨대 이전의 잠재적 대체 패킷이 전달하도록 허용되지 않을 경우에(즉, 독립 스트림으로부터 전달하지 않거나 ID 순서화 비트(402) 세트를 갖지 않을 경우에) 포인터(322, 324, 326) 중 하나 이상을 증가시킬 수 있다.
그 다음, 흐름(620)에서, 요청자/완료자 ID 비교기(338)는 잠재적 대체 패킷의 요청자/완료자 ID가 포스트된 요청 큐(308) 내에서 먼저 수신되는 포스트된 요청 중 임의의 요청과 상이한지를 판단한다. 일 실시예에서, 비교기(338)는 각 포스트되지 않은 요청 및 완료가 저장된 포스트된 요청 포인터를 이용하여, 포스트된 요청 큐(308) 내의 어느 포스트된 요청이 잠재적 대체 패킷 전에 수신되는지를 판단한다. 잠재적 대체 패킷이 먼저 수신되는 포스트된 요청으로부터 독립된 스트림인 것으로 판단되면, 프로세스는 흐름(625)으로 계속한다. 그렇지 않으면, 프로세스는 흐름(605)으로 복귀한다.
흐름(625)에서, IDO 플래그 체크(340)는 ID 순서화 비트(402)가 잠재적 대체 패킷에 설정되는지를 검증하며, 설정되면, 흐름(630)에서, 대체 패킷은 포트(350)를 통해 전송된다. 그렇지 않으면, 프로세스는 흐름(605)으로 복귀한다.
상술한 방법, 소프트웨어, 펌웨어 또는 코드의 실시예들은 처리 소자에 의해 실행 가능한 기계 액세스 가능한 또는 기계 판독 가능한 매체 상에 저장되는 명령어 또는 코드를 통해 구현될 수 있다. 기계 액세스/판독 가능한 매체는 컴퓨터 또는 전자 시스템과 같은 기계에 의해 판독 가능한 형식으로 정보를 제공하는 (즉, 저장 및/또는 전송하는) 어떤 메카니즘을 포함한다. 예컨대, 기계 액세스 가능한 매체는 정적 RAM(SRAM) 또는 동적 RAM(DRAM)과 같은 랜덤 액세스 메모리(RAM); ROM; 자기 또는 광학 저장 매체; 플래시 메모리 장치; 전기, 광학, 음향 또는 다른 형태의 전파 신호(예컨대, 반송파, 적외선 신호, 디지털 신호) 등을 포함한다.
본 명세서에 전반에 걸쳐 "일 실시예" 또는 "하나의 실시예"에 대한 참조는 실시예와 관련하여 설명되는 특정한 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 내내 여러 곳에서 "일 실시예에서" 또는 "하나의 실시예에서"의 문구의 형태는 반드시 모두 동일한 실시예를 나타내는 것이 아니다. 더욱이, 특정한 특징, 구조 또는 특성은 하나 이상의 실시예에서 어떤 적절한 방식으로 조합될 수 있다.
상술한 명세서에서, 특정한 예시적 실시예를 참조로 상세한 설명이 주어졌다. 그러나, 첨부한 청구범위에서 설명되는 바와 같이 본 발명의 광범위한 정신 및 범주 내에서 여러 수정 및 변경이 행해질 수 있음이 자명할 것이다. 따라서, 명세서 및 도면은 제한적 의미보다는 예시적 의미로 간주될 수 있다. 더욱이, 실시예의 상술한 사용 및 다른 예시적 언어는 반드시 동일한 실시예 또는 동일한 예를 나타내지 않지만, 서로 다른 및 별개의 실시예들을 나타낼 수 있을 뿐만 아니라, 잠재적으로 동일한 실시예를 나타낼 수 있다.

Claims (20)

  1. 직렬 점대점 상호 접속 포트(serial point-to-point interconnect port)를 통해 전송되는 패킷을 순서화하되, 제 2 패킷이 순서와는 무관함을 나타내도록 설정된 속성 플래그를 상기 제 2 패킷이 포함하는 경우 및 상기 제 2 패킷이 지연된(stalled) 제 1 패킷 내에 포함된 ID와 상이한 ID를 포함할 경우에 상기 지연된 제 1 패킷 후에 도달되는 상기 제 2 패킷을 이용하여 상기 지연된 제 1 패킷을 바이패스하는 메모리 순서화 로직을 포함하는
    장치.
  2. 제 1 항에 있어서,
    상기 메모리 순서화 로직은, 또한 상기 제 2 패킷을 위해 큐(queue)되는 먼저 수신된 각 패킷 내에 포함된 ID와 상이한 ID를 포함할 경우에 지연된 제 1 패킷 후에 도달되는 상기 제 2 패킷을 이용하여 상기 지연된 제 1 패킷을 바이패스하는
    장치.
  3. 제 1 항에 있어서,
    상기 제 2 패킷은 포스트되지 않은(non-posted) 요청 패킷을 포함하며, 상기 제 2 패킷 ID는 요청자 ID를 포함하는
    장치.
  4. 제 1 항에 있어서,
    상기 제 2 패킷은 완료 패킷을 포함하며, 상기 제 2 패킷 ID는 완료자 ID를 포함하는
    장치.
  5. 제 1 항에 있어서,
    상기 ID는 상기 패킷의 헤더의 바이트 4 및 바이트 5를 포함하는
    장치.
  6. 제 1 항에 있어서,
    상기 제 1 패킷 및 상기 제 2 패킷은 양자 모두 포스트된 요청 큐(posted request queue) 내에 기록 요청을 포함하는
    장치.
  7. 제 1 항에 있어서,
    상기 직렬 점대점 상호 접속 포트는 PCIE(Peripheral Component Interconnect Express) 링크이며, 프로세서, 시스템 메모리, 및 상기 PCIE 링크와 통신 가능하게 결합된 그래픽 가속기를 더 포함하는
    장치.
  8. 제 1 항에 있어서,
    상기 직렬 점대점 상호 접속 포트는 다운스트림 포트인
    장치.
  9. 직렬 점대점 링크를 따라 패킷을 전송하는 포트와,
    상기 포트를 통해 전송되는 포스트된 요청의 패킷을 저장하는 제 1 큐와,
    상기 포트를 통해 전송되는 포스트되지 않은 요청의 패킷을 저장하는 제 2 큐와,
    상기 포스트되지 않은 요청의 헤더가 상기 요청이 순서와 무관함을 나타내는 경우 및 상기 포스트되지 않은 요청의 헤더가 상기 제 1 큐 내에서 먼저 수신된 포스트된 요청의 요청자 ID와 상이한 요청자 ID를 포함할 경우에 선택적으로 상기 제 1 큐로부터 지연된 포스트된 요청을 바이패스하거나 상기 지연된 포스트된 요청 후에 수신된 상기 제 2 큐로부터 포스트되지 않은 요청을 상기 포트를 통해 전송하는 로직을 포함하는
    장치.
  10. 제 9 항에 있어서,
    상기 포트를 통해 전송되는 완료의 패킷을 저장하는 제 3 큐를 더 포함하고, 상기 로직은 상기 완료의 헤더가 상기 요청이 순서와 무관함을 나타내는 경우 및 상기 완료의 헤더가 상기 제 1 큐 내에서 먼저 수신된 포스트된 요청의 요청자 ID와 상이한 완료자 ID를 포함할 경우에 선택적으로 상기 제 1 큐로부터 지연된 포스트된 요청을 바이패스하거나 상기 지연된 포스트된 요청 후에 수신된 상기 제 3 큐로부터의 완료를 상기 포트를 통해 전송하는
    장치.
  11. 제 9 항에 있어서,
    상기 로직은, 상기 포스트된 요청의 헤더가 상기 요청이 순서와 무관함을 나타내는 경우 및 상기 포스트된 요청의 헤더가 상기 지연된 포스트된 요청의 요청자 ID로부터의 요청자 ID를 포함할 경우에 선택적으로 상기 제 1 큐로부터 지연된 포스트된 요청을 바이패스하거나 상기 지연된 포스트된 요청 후에 수신된 상기 제 1 큐로부터 포스트된 요청을 상기 포트를 통해 전송하는
    장치.
  12. 제 9 항에 있어서,
    상기 포트는 업스트림 포트인
    장치.
  13. 제 9 항에 있어서,
    프로세서, 시스템 메모리, 및 상기 직렬 점대점 링크와 통신 가능하게 결합되는 그래픽 가속기를 더 포함하는
    장치.
  14. 제 9 항에 있어서,
    상기 제 2 큐는, 상기 제 1 큐 내에 저장되는 포스트된 요청 중 어떤 요청이 포스트되지 않은 각 요청 패킷보다 일찍 수신되었는지를 나타내도록 포스트되지 않은 각 요청 패킷과 관련된 포스트된 요청 포인터를 저장하는
    장치.
  15. 제 9 항에 있어서,
    속성 플래그는 상기 패킷의 헤더의 바이트 1의 비트 2를 포함하는
    장치.
  16. 프로토콜 스택을 포함하는 입력/출력(I/O) 모듈을 포함하는 디바이스를 포함하되,
    상기 프로토콜 스택은 물리 계층, 링크 계층 및 트랜잭션 계층을 포함하고, 상기 프로토콜 스택은 직렬 점대점 링크 상에 패킷을 전송하며, 상기 패킷은 동작이 순서와 무관함을 나타내도록 설정된 플래그를 포함하는
    장치.
  17. 제 16 항에 있어서,
    상기 동작이 순서와 무관함을 나타내도록 설정된 상기 플래그는 상기 패킷의 헤더의 바이트 1의 비트 2를 포함하는
    장치.
  18. 제 16 항에 있어서,
    상기 동작은 메모리 기록 또는 메시지 요청, 판독 요청, I/O 또는 구성 기록 요청, 판독 완료 및 I/O 또는 구성 기록 완료로 이루어지는 그룹으로부터 선택되는
    장치.
  19. 제 16 항에 있어서,
    상기 디바이스는 가속기, 입력/출력 디바이스, 제어기 허브, 루트 제어기, 스위치 및 프로세서로 이루어지는 그룹으로부터 선택되는
    장치.
  20. 제 19 항에 있어서,
    상기 디바이스는 시스템을 형성하기 위해 시스템 메모리 및 다수의 추가적인 디바이스와 통신 가능하게 결합되는
    장치.
KR1020117028449A 2009-05-29 2010-03-10 Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치 KR101298862B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/474,480 US8199759B2 (en) 2009-05-29 2009-05-29 Method and apparatus for enabling ID based streams over PCI express
US12/474,480 2009-05-29
PCT/US2010/026777 WO2010138230A2 (en) 2009-05-29 2010-03-10 Method and apparatus for enabling id based streams over pci express

Publications (2)

Publication Number Publication Date
KR20120024669A true KR20120024669A (ko) 2012-03-14
KR101298862B1 KR101298862B1 (ko) 2013-08-21

Family

ID=43220157

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117028449A KR101298862B1 (ko) 2009-05-29 2010-03-10 Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치

Country Status (8)

Country Link
US (1) US8199759B2 (ko)
JP (2) JP2012527036A (ko)
KR (1) KR101298862B1 (ko)
CN (2) CN101901205B (ko)
DE (2) DE112010002178T5 (ko)
RU (2) RU2559727C2 (ko)
TW (2) TWI633442B (ko)
WO (1) WO2010138230A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8199759B2 (en) 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express
EP2577936A2 (en) * 2010-05-28 2013-04-10 Lawrence A. Laurich Accelerator system for use with secure data storage
WO2013105978A1 (en) * 2012-01-13 2013-07-18 Intel Corporation Allocation of flow control credits for high performance devices
KR101828756B1 (ko) * 2012-10-22 2018-02-12 인텔 코포레이션 고성능 인터커넥트 코히어런스 프로토콜
US9600431B2 (en) 2012-10-22 2017-03-21 Intel Corporation High performance interconnect physical layer
US9558143B2 (en) * 2014-05-09 2017-01-31 Micron Technology, Inc. Interconnect systems and methods using hybrid memory cube links to send packetized data over different endpoints of a data handling device
US9602464B2 (en) 2014-12-12 2017-03-21 Intel Corporation Apparatus, system and method for allocating identifiers to components of a control system
US10176126B1 (en) * 2015-06-29 2019-01-08 Cadence Design Systems, Inc. Methods, systems, and computer program product for a PCI implementation handling multiple packets
US11216396B2 (en) * 2016-09-29 2022-01-04 Intel Corporation Persistent memory write semantics on PCIe with existing TLP definition
US10353833B2 (en) 2017-07-11 2019-07-16 International Business Machines Corporation Configurable ordering controller for coupling transactions
CN108471384B (zh) * 2018-07-02 2020-07-28 北京百度网讯科技有限公司 用于端到端通信的报文转发的方法和装置
US11477049B2 (en) * 2018-08-02 2022-10-18 Xilinx, Inc. Logical transport over a fixed PCIE physical transport network
CN110580202A (zh) * 2019-06-04 2019-12-17 阿里巴巴集团控股有限公司 服务器系统内消息的处理方法、装置及系统
US11748285B1 (en) * 2019-06-25 2023-09-05 Amazon Technologies, Inc. Transaction ordering management
KR102529761B1 (ko) 2021-03-18 2023-05-09 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
KR102496994B1 (ko) * 2021-03-23 2023-02-09 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3505728B2 (ja) * 1993-01-13 2004-03-15 株式会社日立製作所 記憶制御装置
US6138192A (en) * 1996-12-31 2000-10-24 Compaq Computer Corporation Delivering a request to write or read data before delivering an earlier write request
US6385708B1 (en) * 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
US6691192B2 (en) * 2001-08-24 2004-02-10 Intel Corporation Enhanced general input/output architecture and related methods for establishing virtual channels therein
CN100409606C (zh) * 2001-08-24 2008-08-06 英特尔公司 管理数据完整性的通用输入/输出体系结构、协议和方法
US6728790B2 (en) * 2001-10-15 2004-04-27 Advanced Micro Devices, Inc. Tagging and arbitration mechanism in an input/output node of a computer system
US6912612B2 (en) * 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
DE10234934A1 (de) * 2002-07-31 2004-03-18 Advanced Micro Devices, Inc., Sunnyvale Antwortreihenwiederherstellungsmechanismus
US7443869B2 (en) * 2003-08-04 2008-10-28 Intel Corporation Deadlock avoidance queuing mechanism
US7444558B2 (en) * 2003-12-31 2008-10-28 Intel Corporation Programmable measurement mode for a serial point to point link
US7165131B2 (en) * 2004-04-27 2007-01-16 Intel Corporation Separating transactions into different virtual channels
US7957428B2 (en) * 2004-05-21 2011-06-07 Intel Corporation Methods and apparatuses to effect a variable-width link
US20050289306A1 (en) * 2004-06-28 2005-12-29 Sridhar Muthrasanallur Memory read requests passing memory writes
CN100456273C (zh) * 2005-03-24 2009-01-28 富士通株式会社 PCI-Express通信系统及其通信方法
US7461190B2 (en) * 2005-08-11 2008-12-02 P.A. Semi, Inc. Non-blocking address switch with shallow per agent queues
US7664904B2 (en) * 2006-03-10 2010-02-16 Ricoh Company, Limited High speed serial switch fabric performing mapping of traffic classes onto virtual channels
US20080005484A1 (en) * 2006-06-30 2008-01-03 Joshi Chandra P Cache coherency controller management
US7836220B2 (en) * 2006-08-17 2010-11-16 Apple Inc. Network direct memory access
US7949794B2 (en) * 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US8050290B2 (en) * 2007-05-16 2011-11-01 Wilocity, Ltd. Wireless peripheral interconnect bus
US7904629B2 (en) * 2007-10-02 2011-03-08 NVON, Inc. Virtualized bus device
US8199759B2 (en) 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express

Also Published As

Publication number Publication date
US8199759B2 (en) 2012-06-12
RU2509348C2 (ru) 2014-03-10
WO2010138230A2 (en) 2010-12-02
TW201101044A (en) 2011-01-01
CN101901205A (zh) 2010-12-01
RU2011153260A (ru) 2013-07-10
CN101901205B (zh) 2014-07-30
JP5897524B2 (ja) 2016-03-30
CN104123262A (zh) 2014-10-29
US20100303079A1 (en) 2010-12-02
RU2559727C2 (ru) 2015-08-10
JP2014017006A (ja) 2014-01-30
TWI633442B (zh) 2018-08-21
WO2010138230A3 (en) 2011-01-20
KR101298862B1 (ko) 2013-08-21
CN104123262B (zh) 2018-03-30
JP2012527036A (ja) 2012-11-01
RU2013146508A (ru) 2015-04-27
TW201636865A (zh) 2016-10-16
TWI568220B (zh) 2017-01-21
DE112010002178T5 (de) 2012-09-20
DE202010018100U1 (de) 2014-04-09

Similar Documents

Publication Publication Date Title
KR101298862B1 (ko) Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치
EP1530850B1 (en) Store and forward switch device, system and method
JP5805879B2 (ja) 拡張ヘッダを用いたパケット送信
EP1433067B1 (en) An enhanced general input/output architecture and related methods for establishing virtual channels therein
KR100647161B1 (ko) 레거시 인터럽트를 지원하는 범용 입/출력 아키텍쳐프로토콜 및 관련 방법
US7849252B2 (en) Providing a prefix for a packet header
US7583600B1 (en) Schedule prediction for data link layer packets
KR20090108710A (ko) Pci 고속 패킷 다이제스트 수정 디바이스, 시스템 및 방법
US10853289B2 (en) System, apparatus and method for hardware-based bi-directional communication via reliable high performance half-duplex link
CN107078850B (zh) 边带奇偶校验处理
KR20040041644A (ko) 향상된 범용 입력/출력 아키텍쳐에서의 에러 포워딩
KR101865261B1 (ko) 입력 출력 데이터 정렬
US7610415B2 (en) System and method for processing data streams
CN116795763B (zh) 基于axi协议的数据分组传输的方法、片上系统和芯片
TWI240859B (en) Error forwarding in an enhanced general input/output architecture and related methods

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
FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 7