KR101298862B1 - Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치 - Google Patents
Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치 Download PDFInfo
- Publication number
- KR101298862B1 KR101298862B1 KR1020117028449A KR20117028449A KR101298862B1 KR 101298862 B1 KR101298862 B1 KR 101298862B1 KR 1020117028449 A KR1020117028449 A KR 1020117028449A KR 20117028449 A KR20117028449 A KR 20117028449A KR 101298862 B1 KR101298862 B1 KR 101298862B1
- Authority
- KR
- South Korea
- Prior art keywords
- packet
- request
- queue
- posted
- port
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
PCIe(Peripheral Component Interconnect Express)를 통해 ID 기반 스트림을 가능하게 하는 방법 및 장치가 여기서 설명된다. 이러한 관점에서, 직렬 점대점 상호 접속부를 통해 전송되는 패킷을 주문하는 메모리 순서화 로직을 포함하는 장치가 도입되고, 제 2 패킷은 상기 제 2 패킷이 순서와 무관함을 나타내도록 설정된 속성 플래그를 포함하며, 상기 제 2 패킷이 제 1 패킷과 관련된 ID와 상이한 ID를 포함할 경우에 상기 메모리 순서화 로직은 상기 제 1 패킷 후에 도달되는 상기 제 2 패킷으로 지연된 제 1 패킷을 바이패스한다. 다른 실시예가 또한 설명되고 청구된다.
Description
본 발명은 상호 접속부의 분야에 관한 것으로서, 특히, 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 기반 스트림을 가능하게 하는 흐름도의 실시예를 예시한 것이다.
도 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)
- 직렬 점대점 상호 접속 포트(serial point-to-point interconnect port)를 통해 전송되는 패킷을 순서화하되, 제 2 패킷이 순서와는 무관함을 나타내도록 설정된 속성 플래그를 상기 제 2 패킷이 포함하는 경우 및 상기 제 2 패킷이 지연된(stalled) 제 1 패킷 내에 포함된 ID와 상이한 ID를 포함할 경우에 상기 지연된 제 1 패킷 후에 도달되는 상기 제 2 패킷을 이용하여 상기 지연된 제 1 패킷을 바이패스하는 메모리 순서화 로직을 포함하는
장치.
- 제 1 항에 있어서,
상기 메모리 순서화 로직은, 또한 상기 제 2 패킷이 전송을 위해 큐(queue)되는 먼저 수신된 각 패킷 내에 포함된 ID와 상이한 ID를 포함할 경우에 지연된 제 1 패킷 후에 도달되는 상기 제 2 패킷을 이용하여 상기 지연된 제 1 패킷을 바이패스하는
장치.
- 제 1 항에 있어서,
상기 제 2 패킷은 포스트되지 않은(non-posted) 요청 패킷을 포함하며, 상기 제 2 패킷 ID는 요청자 ID를 포함하는
장치.
- 제 1 항에 있어서,
상기 제 2 패킷은 완료 패킷을 포함하며, 상기 제 2 패킷 ID는 완료자 ID를 포함하는
장치.
- 제 1 항에 있어서,
상기 ID는 상기 ID를 포함하는 패킷의 헤더의 바이트 4 및 바이트 5를 포함하는
장치.
- 제 1 항에 있어서,
상기 제 1 패킷 및 상기 제 2 패킷은 양자 모두 포스트된 요청 큐(posted request queue) 내에 기록 요청을 포함하는
장치.
- 제 1 항에 있어서,
상기 직렬 점대점 상호 접속 포트는 PCIE(Peripheral Component Interconnect Express) 링크이며, 상기 장치는 프로세서, 시스템 메모리, 및 상기 PCIE 링크와 통신 가능하게 결합된 그래픽 가속기를 더 포함하는
장치.
- 제 1 항에 있어서,
상기 직렬 점대점 상호 접속 포트는 다운스트림 포트인
장치.
- 직렬 점대점 링크를 따라 패킷을 전송하는 포트와,
상기 포트를 통해 전송되는 포스트된 요청의 패킷을 저장하는 제 1 큐와,
상기 포트를 통해 전송되는 포스트되지 않은 요청의 패킷을 저장하는 제 2 큐와,
상기 포스트되지 않은 요청의 헤더가 상기 요청이 순서와 무관함을 나타내는 경우 및 상기 포스트되지 않은 요청의 헤더가 상기 제 1 큐 내에서 먼저 수신된 포스트된 요청의 요청자 ID와 상이한 요청자 ID를 포함할 경우에 상기 제 1 큐로부터 지연된 포스트된 요청을 선택적으로 바이패스하고 상기 지연된 포스트된 요청 후에 수신된 상기 제 2 큐로부터 포스트되지 않은 요청을 상기 포트를 통해 전송하는 로직을 포함하는
장치.
- 제 9 항에 있어서,
상기 포트를 통해 전송되는 완료의 패킷을 저장하는 제 3 큐를 더 포함하고, 상기 로직은 상기 완료의 헤더가 상기 요청이 순서와 무관함을 나타내는 경우 및 상기 완료의 헤더가 상기 제 1 큐 내에서 먼저 수신된 포스트된 요청의 요청자 ID와 상이한 완료자 ID를 포함할 경우에 상기 제 1 큐로부터 지연된 포스트된 요청을 선택적으로 바이패스하고 상기 지연된 포스트된 요청 후에 수신된 상기 제 3 큐로부터의 완료를 상기 포트를 통해 전송하는
장치.
- 제 9 항에 있어서,
상기 로직은, 상기 포스트된 요청의 헤더가 상기 요청이 순서와 무관함을 나타내는 경우 및 상기 포스트된 요청의 헤더가 상기 지연된 포스트된 요청의 요청자 ID로부터의 요청자 ID를 포함할 경우에 상기 제 1 큐로부터 지연된 포스트된 요청을 선택적으로 바이패스하고 상기 지연된 포스트된 요청 후에 수신된 상기 제 1 큐로부터 포스트된 요청을 상기 포트를 통해 전송하는
장치.
- 제 9 항에 있어서,
상기 포트는 업스트림 포트인
장치.
- 제 9 항에 있어서,
프로세서, 시스템 메모리, 및 상기 직렬 점대점 링크와 통신 가능하게 결합되는 그래픽 가속기를 더 포함하는
장치.
- 제 9 항에 있어서,
상기 제 2 큐는, 상기 제 1 큐 내에 저장되는 포스트된 요청 중 어떤 요청이 포스트되지 않은 각 요청 패킷보다 일찍 수신되었는지를 나타내도록 포스트되지 않은 각 요청 패킷과 관련된 포스트된 요청 포인터를 저장하는
장치.
- 제 9 항에 있어서,
속성 플래그는 상기 속성 플래그를 포함하는 패킷의 헤더의 바이트 1의 비트 2를 포함하는
장치.
- 프로토콜 스택을 포함하는 입력/출력(I/O) 모듈을 포함하는 디바이스를 포함하되,
상기 프로토콜 스택은 물리 계층, 링크 계층 및 트랜잭션 계층을 포함하고, 상기 프로토콜 스택은 직렬 점대점 링크 상에 패킷을 전송하며, 상기 패킷은 동작이 순서와 무관함을 나타내도록 설정된 플래그를 포함하는
장치.
- 제 16 항에 있어서,
상기 동작이 순서와 무관함을 나타내도록 설정된 상기 플래그는 상기 패킷의 헤더의 바이트 1의 비트 2를 포함하는
장치. - 제 16 항에 있어서,
상기 동작은 메모리 기록 또는 메시지 요청, 판독 요청, I/O 또는 구성 기록 요청, 판독 완료 및 I/O 또는 구성 기록 완료로 이루어지는 그룹으로부터 선택되는
장치.
- 제 16 항에 있어서,
상기 디바이스는 가속기, 입력/출력 디바이스, 제어기 허브, 루트 제어기, 스위치 및 프로세서로 이루어지는 그룹으로부터 선택되는
장치.
- 제 19 항에 있어서,
상기 디바이스는 시스템을 형성하기 위해 시스템 메모리 및 다수의 추가적인 디바이스와 통신 가능하게 결합되는
장치.
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 KR20120024669A (ko) | 2012-03-14 |
KR101298862B1 true 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) | TWI568220B (ko) |
WO (1) | WO2010138230A2 (ko) |
Families Citing this family (17)
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 |
WO2011150346A2 (en) * | 2010-05-28 | 2011-12-01 | Laurich Lawrence A | 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 |
DE112013005093T5 (de) | 2012-10-22 | 2015-10-22 | Intel Corporation | Hochleistungszusammenschaltungsbitübertragungsschicht |
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 |
KR102496994B1 (ko) * | 2021-03-23 | 2023-02-09 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102521902B1 (ko) | 2021-03-23 | 2023-04-17 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102529761B1 (ko) | 2021-03-18 | 2023-05-09 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030163649A1 (en) * | 2002-02-25 | 2003-08-28 | Kapur Suvansh K. | Shared bypass bus structure |
US20050251612A1 (en) * | 2004-04-27 | 2005-11-10 | Creta Kenneth C | Separating transactions into different virtual channels |
US20070211746A1 (en) * | 2006-03-10 | 2007-09-13 | Koji Oshikiri | Information processing apparatus, information processing system, and data communication method |
Family Cites Families (20)
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 |
EP1421501B1 (en) * | 2001-08-24 | 2006-08-02 | Intel Corporation | A general intput/output architecture, protocol and related methods to implement flow control |
US6691192B2 (en) * | 2001-08-24 | 2004-02-10 | Intel Corporation | Enhanced general input/output architecture and related methods for establishing virtual channels therein |
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 |
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 |
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 |
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 |
-
2009
- 2009-05-29 US US12/474,480 patent/US8199759B2/en active Active
-
2010
- 2010-03-10 DE DE112010002178T patent/DE112010002178T5/de not_active Ceased
- 2010-03-10 JP JP2012510805A patent/JP2012527036A/ja active Pending
- 2010-03-10 KR KR1020117028449A patent/KR101298862B1/ko active IP Right Grant
- 2010-03-10 RU RU2013146508/08A patent/RU2559727C2/ru not_active IP Right Cessation
- 2010-03-10 DE DE202010018100.3U patent/DE202010018100U1/de not_active Expired - Lifetime
- 2010-03-10 WO PCT/US2010/026777 patent/WO2010138230A2/en active Application Filing
- 2010-03-10 RU RU2011153260/08A patent/RU2509348C2/ru not_active IP Right Cessation
- 2010-03-29 TW TW099109390A patent/TWI568220B/zh active
- 2010-03-29 TW TW105106711A patent/TWI633442B/zh active
- 2010-05-27 CN CN201010194859.2A patent/CN101901205B/zh active Active
- 2010-05-27 CN CN201410310637.0A patent/CN104123262B/zh active Active
-
2013
- 2013-09-11 JP JP2013188640A patent/JP5897524B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030163649A1 (en) * | 2002-02-25 | 2003-08-28 | Kapur Suvansh K. | Shared bypass bus structure |
US20050251612A1 (en) * | 2004-04-27 | 2005-11-10 | Creta Kenneth C | Separating transactions into different virtual channels |
US20070211746A1 (en) * | 2006-03-10 | 2007-09-13 | Koji Oshikiri | Information processing apparatus, information processing system, and data communication method |
Also Published As
Publication number | Publication date |
---|---|
WO2010138230A2 (en) | 2010-12-02 |
JP2014017006A (ja) | 2014-01-30 |
CN101901205B (zh) | 2014-07-30 |
WO2010138230A3 (en) | 2011-01-20 |
RU2559727C2 (ru) | 2015-08-10 |
US8199759B2 (en) | 2012-06-12 |
CN104123262B (zh) | 2018-03-30 |
TW201636865A (zh) | 2016-10-16 |
JP2012527036A (ja) | 2012-11-01 |
CN101901205A (zh) | 2010-12-01 |
DE112010002178T5 (de) | 2012-09-20 |
RU2509348C2 (ru) | 2014-03-10 |
KR20120024669A (ko) | 2012-03-14 |
TWI633442B (zh) | 2018-08-21 |
DE202010018100U1 (de) | 2014-04-09 |
RU2013146508A (ru) | 2015-04-27 |
RU2011153260A (ru) | 2013-07-10 |
TWI568220B (zh) | 2017-01-21 |
CN104123262A (zh) | 2014-10-29 |
TW201101044A (en) | 2011-01-01 |
JP5897524B2 (ja) | 2016-03-30 |
US20100303079A1 (en) | 2010-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101298862B1 (ko) | Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치 | |
JP5805879B2 (ja) | 拡張ヘッダを用いたパケット送信 | |
EP1530850B1 (en) | Store and forward switch device, system and method | |
EP1433067B1 (en) | An enhanced general input/output architecture and related methods for establishing virtual channels therein | |
KR100647161B1 (ko) | 레거시 인터럽트를 지원하는 범용 입/출력 아키텍쳐프로토콜 및 관련 방법 | |
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) | 입력 출력 데이터 정렬 | |
US20070028015A1 (en) | System and method for processing data streams | |
US20030182489A1 (en) | Method and apparatus for generating traffic in an electronic bridge via a local controller | |
TWI240859B (en) | Error forwarding in an enhanced general input/output architecture and related methods | |
Facts | DS551 April 19, 2010 Product Specification |
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 |