KR102496994B1 - PCIe 인터페이스 장치 및 그 동작 방법 - Google Patents
PCIe 인터페이스 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR102496994B1 KR102496994B1 KR1020210037512A KR20210037512A KR102496994B1 KR 102496994 B1 KR102496994 B1 KR 102496994B1 KR 1020210037512 A KR1020210037512 A KR 1020210037512A KR 20210037512 A KR20210037512 A KR 20210037512A KR 102496994 B1 KR102496994 B1 KR 102496994B1
- Authority
- KR
- South Korea
- Prior art keywords
- transaction layer
- layer packets
- buffer
- interface device
- packets
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/30—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
본 기술은 전자 장치에 관한 것으로, 본 기술에 따른 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치는 제1 버퍼, 제2 버퍼 및 버퍼 제어부를 포함한다. 제1 버퍼는 멀티 펑션들로부터 수신하는 복수의 제1 트랜잭션 레이어 패킷들을 저장할 수 있다. 제2 버퍼는 멀티 펑션들로부터 수신하는 복수의 제2 트랜잭션 레이어 패킷들을 저장할 수 잇다. 버퍼 제어부는 스위치에 포함된 제1 버퍼가 풀(Full)이면, 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 제2 버퍼에서 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬할 수 있다.
Description
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 PCIe 인터페이스 장치 및 그 동작 방법에 관한 것이다.
PCIe(Peripheral Component Interconnect Express)는 데이터 통신을 위한 직렬 구조의 인터페이스이다. PCIe 기반 저장 장치는 멀티 포트(multi-port) 및 멀티 펑션(multi-function)을 지원한다. PCIe 기반 저장 장치는 가상화(virtualize) 및 비가상화(Non-virtualize)될 수 있고, 하나 이상의 PCIe 펑션(PCIe function)을 통해 호스트 I/O 명령어의 QoS(Quality of Service)를 달성할 수 있다.
저장 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 저장 장치는 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분된다.
휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는, 향상된 버퍼 제어 성능을 갖는 PCIe 인터페이스 장치 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치는 제1 버퍼, 제2 버퍼 및 버퍼 제어부를 포함한다. 제1 버퍼는 멀티 펑션들로부터 수신하는 복수의 제1 트랜잭션 레이어 패킷들을 저장할 수 있다. 제2 버퍼는 멀티 펑션들로부터 수신하는 복수의 제2 트랜잭션 레이어 패킷들을 저장할 수 잇다. 버퍼 제어부는 스위치에 포함된 제1 버퍼가 풀(Full)이면, 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 제2 버퍼에서 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬할 수 있다.
본 발명의 실시 예에 따른, 복수의 제1 트랜잭션 레이어 패킷들을 저장하는 제1 버퍼 및 복수의 제2 트랜잭션 레이어 패킷들을 저장하는 제2 버퍼를 포함하는 PCIe 인터페이스 장치의 동작 방법은, 스위치에 포함된 제1 버퍼가 풀(Full)인지 여부를 나타내는 플로우 컨트롤 신호를 수신하는 단계; 및 스위치에 포함된 제1 버퍼가 풀이면, 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 제2 버퍼에서 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계;를 포함할 수 있다.
본 기술에 따르면 향상된 버퍼 제어 성능을 갖는 PCIe 인터페이스 장치 및 그 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 호스트와 PCIe 장치 간의 통신 구조를 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 PCIe 장치의 구성과 동작을 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 구성과 동작을 설명하기 위한 도면이다.
도 4는 PCIe 장치에서 트랜잭션 레이어 패킷의 아이디를 기초로 트랜잭션 레이어 패킷에 대한 오더링 재정렬을 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
도 6은 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
도 2는 본 발명의 실시 예에 따른 PCIe 장치의 구성과 동작을 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 구성과 동작을 설명하기 위한 도면이다.
도 4는 PCIe 장치에서 트랜잭션 레이어 패킷의 아이디를 기초로 트랜잭션 레이어 패킷에 대한 오더링 재정렬을 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
도 6은 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 실시 예에 따른 호스트와 PCIe 장치 간의 통신 구조를 설명하기 위한 도면이다.
도 1을 참조하면, 호스트(2000)는 루트 콤플렉스(2100), 스위치(2200), CPU(2300) 및 메모리(2400)를 포함할 수 있다.
루트 콤플렉스(2100)는 CPU(2300) 및 메모리(2400)를 입출력 계층 구조(I/O Hierarchy)와 연결할 수 있다. 루트 콤플렉스(2100)는 적어도 하나의 호스트 브릿지 및 루트 포트를 포함할 수 있다. 루트 콤플렉스(2100)는 하나 이상의 PCIe(Peripheral Component Interconnect Express) 포트를 지원할 수 있다.
루트 콤플렉스(2100)는 입출력 리퀘스트(I/O request)를 지원할 수 있다. 루트 콤플렉스(2100)는 구성 리퀘스트(Configuration request) 생성을 지원해야한다(must). 루트 콤플렉스(2100)는 컴플리터(Completer)로서 Lock semantics를 지원해서는 안된다. 루트 콤플렉스(2100)는 리퀘스터(Requester)로서 Lock request 생성을 요청할 수 있다.
스위치(2200)는 패킷을 라우팅하도록 적어도 둘 이상의 포트들을 연결할 수 있다. 스위치(2200)는 가상의 PCI-to-PCI 브릿지 장치들의 집합일 수 있다. 스위치(2200)는 2개 이상의 논리적 PCI 대 PCI 브릿지로 구성될 수 있다. 스위치(2200)는 PCI 브릿지 메커니즘(어드레스 기반의 멀티 캐스팅 방식)을 사용하여 트랜잭션을 전달할 수 있다. 스위치(2200)는 모든 포트 간에 모든 유형의 트랜잭션 레이어 패킷을 전달해야한다(must). 스위치(2200)는 잠금 리퀘스트(Locked request)를 지원해야 한다. 활성화된 각 스위치의 포트는 플로우 컨트롤을 지원해야한다. 스위치(2200)는 동일한 가상 채널에서 경합이 발생하는 경우 라운드 로빈 또는 가중 라운드 로빈 방식으로 중재할 수 있다.
PCIe 장치는 PCIe 트랜잭션의 리퀘스터 또는 컴플리터 역할을 수행할 수 있다.
도 1에서, 제1 PCIe 장치(1000_1)는 루트 콤플렉스(2100)와 트랜잭션 레이어 패킷을 송수신할 수 있다. 제2 및 제3 PCIe 장치(1000_2, 1000_3)는 스위치(2200)와 트랜잭션 레이어 패킷을 송수신할 수 있다.
스위치(2200)는 제2 및 제3 PCIe 장치(1000_2, 1000_3)로부터 수신한 트랜잭션 레이어 패킷을 루트 콤플렉스(2100)로 전달할 수 있다. 스위치(2200)는 루트 콤플렉스(2100)로부터 수신한 트랜잭션 레이어 패킷을 제2 및 제3 PCIe 장치(1000_2, 1000_3)로 전달할 수 있다.
루트 콤플렉스(2100)는 제1 PCIe 장치(1000_1)와 직접 트랜잭션 레이어 패킷을 송수신할 수 있다. 루트 콤플렉스(2100)는 스위치(2200)를 통해 제2 및 제3 PCIe 장치(1000_2, 1000_3)과 트랜잭션 레이어 패킷을 송수신할 수 있다. 루트 콤플렉스(2100)는 제1 내지 제3 PCIe 장치(1000_1~1000_3)로부터 수신한 트랜잭션 레이어 패킷을 CPU(2300)나 메모리(2400)에 전달할 수 있다.
도 2는 본 발명의 실시 예에 따른 PCIe 장치의 구성과 동작을 설명하기 위한 도면이다.
도 2를 참조하면, PCIe 장치(1000)는 PCIe 인터페이스 장치(100) 및 적어도 하나의 DMA(Direct Memory Access) 장치를 포함할 수 있다.
PCIe 인터페이스 장치(100)는 버퍼 그룹(110) 및 버퍼 제어부(120)를 포함할 수 있다.
버퍼 그룹(110)은 스위치(2200)와 DMA 장치의 펑션 간에 송수신되는 패킷을 저장할 수 있다. 버퍼 그룹(110)은 DMA 장치에서 실행되는 펑션으로부터 수신한 패킷을 저장할 수 있다. 버퍼 그룹(110)은 저장한 패킷을 스위치(2200)로 전송할 수 있다. 반대로 버퍼 그룹(110)은 스위치(2200)로부터 수신한 패킷을 저장할 수 있다. 버퍼 그룹(110)은 저장한 패킷을 DMA 장치의 펑션에 전송할 수 있다.
버퍼 제어부(120)는 버퍼 그룹(110)에 저장된 복수의 패킷들이 스위치(2200)로 출력되는 순서를 제어할 수 있다. 버퍼 제어부(120)는 복수의 패킷들 간에 출력 순서를 재정렬할 수 있다.
실시 예에서 DMA 장치는 NVMe(Non Volatile Memory Express) 모듈, 이더넷(Ethernet) 카드, 사운드 카드, 그래픽 카드, AI CPU 모듈 및 AI SoC 모듈 등을 포함할 수 있다. DMA장치는 NVMe 모듈, 이더넷 카드, 사운드 카드, 그래픽 카드, AI CPU 모듈 및 AI SoC(System On Chip) 모듈 등에 연결되어 있는 데이터 통신 장치를 포함할 수 있다.
도 2에서, PCIe 장치(1000)는 제1 및 제2 DMA 장치들(200_1, 200_2)를 포함할 수 있다. PCIe 장치(1000)에 포함되는 DMA 장치의 개수는 본 실시 예에 제한되지 않는다.
DMA 장치 별로 적어도 하나 이상의 펑션이 실행될 수 있다.
예를 들어, 제1 DMA 장치(200_1)에서 제1 펑션(Function 1) 및 제2 펑션(Function 2)이 실행될 수 있다. 제2 DMA 장치(200_2)에서 제3 펑션(Function 3) 및 제4 펑션(Function 4)이 실행될 수 있다. DMA 장치에 실행되는 펑션의 개수는 본 실시 예에 제한되지 않는다.
예를 들어, PCIe 장치(1000)는 호스트(2000)로부터 수신된 가상화 요청에 따라 물리 펑션 또는 가상 펑션을 생성할 수 있다. PCIe 장치(1000)는 펑션들을 각 DMA 장치에 할당할 수 있다. 각 DMA 장치에 할당되어 실행되는 펑션의 개수는 개별적으로 설정될 수 있다. 따라서, 하나의 DMA 장치에 복수 펑션들이 할당될 수 있고, 각 펑션들은 독립적인 동작 단위로서 실행될 수 있다.
도 3은 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 구성과 동작을 설명하기 위한 도면이다.
도 3을 참조하면, PCIe 장치(1000)는 PCIe 인터페이스 장치(100) 및 복수의 DMA 장치들(200_1, 200_2)을 포함할 수 있다.
PCIe 인터페이스 장치(100)는 버퍼 그룹(110), 버퍼 제어부(120), 트랜잭션 레이어(130)를 포함할 수 있다.
버퍼 그룹(110)은 트랜잭션 레이어(130)를 통해 DMA 장치의 펑션으로부터 수신한 트랜잭션 레이어 패킷을 도 2를 참조하여 설명된 스위치에 송신할 수 있다. 버퍼 그룹(110)은 트랜잭션 레이어(130)를 통해 스위치로부터 송신한 트랜잭션 레이어 패킷을 DMA 장치의 펑션으로 송신할 수 있다.
도 3에서, 버퍼 그룹(110)은 리드 버퍼(111), 쓰기 버퍼(112), 컴플리션 버퍼(113) 및 리플레이 버퍼(114)를 포함할 수 있다. 리드 버퍼(111), 쓰기 버퍼(112) 및 컴플리션 버퍼(113) 각각은 저장된 트랜잭션 레이어 패킷을 스위치로 송신하는 송신 버퍼와 스위치로부터 수신한 패킷을 저장하는 수신 버퍼를 포함할 수 있다. 다른 실시 예에서, 버퍼 그룹은 루트 콤플렉스와 직접 트랜잭션 레이어 패킷을 송수신할 수 있다.
리드 버퍼(111)는 리드 요청에 관한 트랜잭션 레이어 패킷을 저장할 수 있다. 쓰기 버퍼(112)는 쓰기 요청에 관한 트랜잭션 레이어 패킷을 저장할 수 있다. 컴플리션 버퍼(113)는 리드 요청 또는 쓰기 요청의 컴플리션에 관한 트랜잭션 레이어 패킷을 저장할 수 있다. 컴플리션은 리드 요청 또는 쓰기 요청에 대한 수신 여부 및 완료 여부를 나타날 수 있다.
리드 버퍼(111), 쓰기 버퍼(112) 및 컴플리션 버퍼(113) 각각에 저장된 트랜잭션 레이어 패킷들은 리플레이 버퍼(114)로 전송될 수 있다. 리드 버퍼(111), 쓰기 버퍼(112) 및 컴플리션 버퍼(113)의 각각의 내부에서 리플레이 버퍼(114)로 트랜잭션 레이어 패킷이 전송되는 순서는 버퍼 제어부(120)에 의해 변경될 수 있다.
리플레이 버퍼(114)는 리플레이 버퍼(114)에 입력된 순서대로 트랜잭션 레이어 패킷을 스위치로 출력할 수 있다. 리플레이 버퍼(114)에 저장된 트랜잭션 레이어 패킷이 스위치로 출력되는 순서는 중간에 변경되지 않고 고정될 수 있다.
버퍼 제어부(120)는 리드 버퍼(111) 및 쓰기 버퍼(112)에 저장된 트랜잭션 레이어 패킷들의 각각의 아이디를 기초로 트랜잭션 레이어 패킷들의 출력 순서를 재정렬할 수 있다.
이 때, 트랜잭션 레이어 패킷들은 IDO(ID-Based Ordering)가 허용된 패킷일 수 있다. IDO가 허용된 트랜잭션 레이퍼 패킷의 헤더에서 IDO 비트는 1로 설정될 수 있다. IDO가 허용된 트랜잭션 레이어 패킷은 장치 간의 트랜잭션에 따라 독립적으로 판단되어 루트 콤플렉스 또는 스위치 내부에서 오더링이 변경될 수 있다. 실시 예에서, PCIe 장치(1000)에서 IDO가 허용된 트랜잭션 레이어 패킷의 오더링이 변경될 수 있다.
트랜잭션 레이어 패킷의 아이디(Bus: Device: Function - BDF)는 트랙잭션 레이어 패킷에 대응되는 버스의 번호, 디바이스의 번호 및 펑션의 번호를 포함할 수 있다.
예를 들어, PCIe 인터페이스 장치(100)는 적어도 하나의 DMA 장치로부터 적어도 하나의 버스를 통해 트랜잭션 레이어 패킷을 수신할 수 있다. 버스의 번호는 호스트에 의해 할당된 번호일 수 있다. 디바이스의 번호는 PCIe 장치(1000)의 번호일 수 있다. 펑션의 번호는 PCIe 장치(1000) 내에서 구현되는 펑션들의 고유 번호일 수 있다.
도 3에서, 버스의 번호는 n(n은 1이상의 자연수), PCIe 디바이스의 번호는 0일 수 있다. 제1 내지 제4 펑션 각각의 번호는 0 내지 3일 수 있다. 따라서, 제1 DMA 장치(200_1)에서 실행되는 제1 펑션으로부터 수신되는 트랜잭션 레이어 패킷의 아이디는 (n:0:0)일 수 있다. 제1 DMA 장치(200_1)에서 실행되는 제2 펑션으로부터 수신되는 트랜잭션 레이어 패킷의 아이디는 (n:0:1)일 수 있다. 제2 DMA 장치(200_2)에서 실행되는 제3 펑션으로부터 수신되는 트랜잭션 레이어 패킷의 아이디는 (n:0:2)일 수 있다. 제2 DMA 장치(200_2)에서 실행되는 제4 펑션으로부터 수신되는 트랜잭션 레이어 패킷의 아이디는 (n:0:3)일 수 있다.
도 4는 PCIe 장치에서 트랜잭션 레이어 패킷의 아이디를 기초로 트랜잭션 레이어 패킷에 대한 오더링 재정렬을 설명하기 위한 도면이다.
도 4를 참조하면, 도 4에서, 스위치(2200)의 리드 버퍼(2210)와 쓰기 버퍼(2220)는 각각 4개의 트랜잭션 레이어 패킷을 저장할 수 있다. 다만 각 버퍼가 저장할 수 있는 트랜잭션 레이어 패킷의 개수는 본 실시 예에 제한되지 않는다.
스위치(2200)의 쓰기 버퍼(2220)는 4개의 제1 트랜잭션 레이어 패킷을 저장하고 있어 가득 찬 상태이다. 스위치(2200)의 리드 버퍼(2210)는 3개의 제2 트랜잭션 레이어 패킷을 저장하고 있어, 1개의 새로운 트랜잭션 레이어 패킷을 수신할 수 있는 상태이다.
PCIe 장치(1000)는 제1 버퍼 및 제2 버퍼를 포함할 수 있다.
제1 버퍼는 멀티 펑션들(Function 1~Function 3)로부터 트랜잭션 레이어(130)를 통해 복수의 제1 트랜잭션 레이어 패킷들을 수신할 수 있다. 제2 버퍼는 멀티 펑션들(Function 1~Function 3)로부터 트랜잭션 레이어(130)를 통해 복수의 제2 트랜잭션 레이어 패킷들을 수신할 수 있다.
도 4에서, 제1 버퍼는 쓰기 버퍼(112)이고 제2 버퍼는 리드 버퍼(111)일 수 있다. 제1 트랜잭션 레이어 패킷은 쓰기 요청에 관한 트랜잭션 레이어 패킷이고, 제2 트랜잭션 레이어 패킷은 리드 요청에 관한 트랜잭션 레이어 패킷일 수 있다.
다른 실시 예에서, 제1 버퍼는 리드 버퍼(111)이고, 제2 버퍼는 쓰기 버퍼(112)일 수 있다. 제1 트랜잭션 레이어 패킷은 리드 요청에 관한 트랜잭션 레이어 패킷이고, 제2 트랜잭션 레이어 패킷은 쓰기 요청에 관한 트랜잭션 레이어 패킷일 수 있다.
도 4에서, 버스의 번호는 2, PCIe 디바이스의 번호는 0일 수 있다. 제1 내지 제3 펑션(Function 1~Function 3) 각각의 번호는 0 내지 2일 수 있다. 따라서, 제1 펑션(Function 1)으로부터 수신되는 트랜잭션 레이어 패킷의 아이디는 (2:0:0)일 수 있다. 제2 펑션(Function 2)으로부터 수신되는 트랜잭션 레이어 패킷의 아이디는 (2:0:1)일 수 있다. 제3 펑션(Function 3)으로부터 수신되는 트랜잭션 레이어 패킷의 아이디는 (2:0:3)일 수 있다.
루트 콤플렉스(2100)와 스위치(2200)는 상호 간에 플로우 컨트롤 신호를 주고 받을 수 있다. 스위치(2200)와 PCIe 장치(1000)는 상호 간에 플로우 컨트롤 신호를 주고 받을 수 있다.
플로우 컨트롤 신호는 Update FC를 포함할 수 있다. 제1 측에서 제2 측을 거쳐 제3 측으로 트랜잭션 레이어 패킷이 전달될 때, Update FC는 제2 측이 제1 측에게 TLP를 새롭게 수신할 수 있는 상태를 알려주기 위한 PCIe 프로토콜일 수 있다. 다시 말해서, 제2 측은 제1 측으로부터 전달받은 트랜잭션 레이어 패킷을 제 3측으로 전송할 준비가 완료되면, 제1 측에 Update FC를 전송할 수 있다.
PCIe 장치(1000)는 플로우 컨트롤 신호를 통해, 스위치(2200)의 제1 버퍼가 풀(Full)이여서 새로운 제1 트랜잭션 레이어 패킷을 받을 수 없는 상태, 즉 백 프레셔(Back Pressure)인지 판단할 수 있다. 도 4에서, 스위치(2200)의 제1 버퍼는 쓰기 버퍼(2220)이고, 제2 버퍼는 리드 버퍼(2210)일 수 있다. 다른 실시 예에서, 스위치(2200)의 제1 버퍼는 리드 버퍼(2210)이고, 제2 버퍼는 쓰기 버퍼(2220)일 수 있다.
PCIe 장치(1000)는 멀티 펑션들(Function 1~Function 3)로부터 리드 버퍼(111)에 입력된 순서대로 복수의 제2 트랜잭션 레이어 패킷들 각각의 우선 순위를 할당할 수 있다.
PCIe 장치(1000)는 스위치(2200)의 쓰기 버퍼(2220)가 풀(Full)이면, 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, PCIe 장치(1000)의 리드 버퍼(111)에서 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬할 수 있다.
제1 오더링 재정렬(O1) 과정에서, PCIe 장치(1000)는 복수의 제2 트랜잭션 레이어 패킷들 중 제2 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제2 트랜잭션 레이어 패킷들보다 높게 설정할 수 있다.
일 실시 예에서, 제2 타겟 트랜잭션 레이어 패킷들은 복수의 제2 트랜잭션 레이어 패킷들 중 스위치(2200)의 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷일 수 있다.
예를 들어, 스위치(2200)의 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷의 아이디는 (2:0:0)일 수 있다. 리드 버퍼(111)에 저장된 제2 트랜잭션 패킷들 중 (2:0:0)과 다른 아이디는 (2:0:1)과 (2:0:2)일 수 있다.
따라서, 복수의 제2 트랜잭션 레이어 패킷들 중 (2:0:1)과 (2:0:2)를 아이디로 갖는 제2 트랜잭션 레이어 패킷들은 (2:0:0)을 아이디로 갖는 제2 트랜잭션 레이어 패킷보다 우선 순위가 높게 설정될 수 있다. 우선 순위가 높은 제2 트랜잭션 레이어 패킷은 우선 순위가 낮은 제2 트랜잭션 레이어 패킷보다 우선하여 스위치(2200)의 제2 버퍼인 리드 버퍼(2210)로 출력될 수 있다.
일 실시 예에서, 제2 타겟 트랜잭션 레이어 패킷들은 복수의 제2 트랜잭션 레이어 패킷들 중 PCIe 장치(1000)의 쓰기 버퍼(112)에 저장된 복수의 제1 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷일 수 있다.
예를 들어, PCIe 장치(1000)의 쓰기 버퍼(112)에 저장된 복수의 제1 트랜잭션 레이어 패킷의 아이디는 (2:0:0)과 (2:0:1)일 수 있다. 리드 버퍼(111)에 저장된 제2 트랜잭션 패킷들 중 (2:0:0)및 (2:0:1)과 다른 아이디는 (2:0:2)일 수 있다.
따라서, 복수의 제2 트랜잭션 레이어 패킷들 중 (2:0:2)를 아이디로 갖는 제2 트랜잭션 레이어 패킷들은 (2:0:0)과 (2:0:1)을 아이디로 갖는 제2 트랜잭션 레이어 패킷보다 우선 순위가 높게 설정될 수 있다.
결론적으로, 스위치(2200)의 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷의 아이디인 (2:0:0)과 및 PCIe 장치(1000)의 쓰기 버퍼(112)에 저장된 복수의 제1 트랜잭션 레이어 패킷의 아이디인 (2:0:0) 및 (2:0:1)과 다른 아이디인 (2:0:2)를 갖는 제2 트랜잭션 레이어 패킷은 나머지 제2 트랜잭션 레이어 패킷보다 우선 순위가 높게 설정될 수 있다.
스위치(2200)의 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷의 아이디와 다른 아이디를 가진 제2 트랜잭션 레이어 패킷은 나머지 제2 트랜잭션 레이어 패킷보다, PCIe 장치(1000)의 리드 버퍼(111)에서 스위치(2200)의 리드 버퍼(2210)으로 먼저 출력되도록 우선순위가 재정렬될 수 있다.
이는, 스위치(2200)의 쓰기 버퍼(2220)는 백 프레셔에 놓여있지만, 리드 버퍼(2210)는 새로운 트랜잭션 레이어 패킷을 수신 가능한 상태이므로, 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷의 아이디와 다른 아이디를 가진 제2 트랜잭션 레이어 패킷을 스위치(2200)의 리드 버퍼(2210)으로 출력함으로써, 펑션별로 QoS를 달성하기 위함이다. 다시 말해서, 트랜잭션 레이어 패킷의 아이디에 따라 독립적으로 오더링을 재정렬함으로써, 백 프레셔에 놓여있는 트랜잭션 레이어 패킷과 다른 아이디를 갖는 트랙잭션 레이어 패킷을 우선 처리하기 위함이다.
단, 트랜잭션 레이어 패킷의 아이디에 따라 오더링이 재정렬되더라도, 동일한 아이디를 갖는 제1 트랜잭션 레이어 패킷과 제2 트랜잭션 레이어 패킷 간의 출력 순서는 지켜져야 한다.
PCIe 장치(1000)는 복수의 제1 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 쓰기 버퍼(112)에서 복수의 제1 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬할 수 있다.
제2 오더링 재정렬(O2) 과정에서, PCIe 장치(1000)는 복수의 제1 트랜잭션 레이어 패킷들 중 제1 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제1 트랜잭션 레이어 패킷들보다 높게 설정할 수 있다.
제1 타겟 트랜잭션 레이어 패킷들은 복수의 제1 트랜잭션 레이어 패킷들 중 스위치(2200)의 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷일 수 있다.
예를 들어, 스위치(2200)의 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷의 아이디는 (2:0:0)일 수 있다. 쓰기 버퍼(112)에 저장된 제1 트랜잭션 패킷들 중 (2:0:0)과 다른 아이디는 (2:0:1)일 수 있다.
스위치(2200)의 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷의 아이디 (2:0:0)과 다른 아이디 (2:0:1)를 가진 제1 트랜잭션 레이어 패킷은 나머지 제1 트랜잭션 레이어 패킷보다, PCIe 장치(1000)의 쓰기 버퍼(112)에서 스위치(2200)의 쓰기 버퍼(2220)으로 먼저 출력되도록 우선순위가 재정렬될 수 있다.
이는, 쓰기 버퍼(2220)에 계류 중인 트랜잭션 레이어 패킷의 아이디와 다른 아이디를 가진 제1 트랜잭션 레이어 패킷을 스위치(2200)의 쓰기 버퍼(2220)으로 먼저 출력되도록 우선순위를 재정렬함으로써, 아이디가 (2:0:0)인 트랜잭션 레이어 패킷이 연속하여 처리되지 않게 하기 위함이다.
즉, 백 프레셔에 놓여있는 트랜잭션 레이어 패킷과 다른 아이디를 갖는 트랙잭션 레이어 패킷을 우선 처리함으로써, 특정 아이디를 갖는 트랜잭션 레이어 패킷의 점유율이 과도하게 높아지는 것을 방지하고 펑션별 QoS가 달성될 수 있다.
제1 오더링 재정렬(O1) 과정에서 설명된 바와 마찬가지로, 스위치(2200)는 제3 오더링 재정렬(O3) 과정에서 리드 버퍼(2210)에 저장 중인 트랜잭션 레이어 패킷들의 우선 순위를 재정렬할 수 있다.
본 발명의 실시 예에 따르면, PCIe 장치(1000)는 트랜잭션 레이어 패킷의 아이디에 따라 독립적으로 트랜잭션 레이어 패킷의 오더링을 변경할 수 있다. 즉, 루트 컴플렉스 및 스위치뿐만 아니라 PCIe 장치(1000)도 IDO가 허용된 트랜잭션 레이어 패킷에 대한 오더링을 변경함으로서, 펑션별 QoS가 더 효율적으로 달성될 수 있다.
도 5는 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
도 5를 참조하면, S501단계에서, PCIe 인터페이스 장치는 멀티 펑션으로부터 수신한 제1 트랜잭션 레이어 패킷들을 제1 버퍼에 저장하고, 제2 트랜잭션 레이어 패킷들을 제2 버퍼에 저장할 수 있다. 제1 버퍼는 쓰기 버퍼이고, 제2 버퍼는 리드 버퍼이고, 제1 트랜잭션 레이어 패킷들은 쓰기 요청에 관한 패킷이고, 제2 트랜잭션 레이어 패킷은 리드 요청에 관한 패킷일 수 있다.
다른 실시 예에서, 제1 버퍼는 리드 버퍼이고, 제2 버퍼는 쓰기 버퍼이고, 제1 트랜잭션 레이어 패킷들은 리드 요청에 관한 패킷이고, 제2 트랜잭션 레이어 패킷은 쓰기 요청에 관한 패킷일 수 있다.
S503단계에서, PCIe 인터페이스 장치는 스위치로부터 스위치의 제1 버퍼가 풀(Full)인지 여부를 나타내는 플로우 컨트롤 신호를 수신할 수 있다. 다른 실시 예에서, PCIe 인터페이스 장치는 스위치로부터 스위치의 제1 버퍼가 새로운 트랜잭션 레이어 패킷을 수신할 수 있는지 여부를 나타내는 플로우 컨트롤 신호를 수신할 수 있다. PCIe 인터페이스 장치는 플로우 컨트롤 신호를 통해 스위치의 제1 버퍼가 풀(Full)인지 여부를 판단할 수 있다.
S505단계에서, PCIe 인터페이스 장치는 스위치의 제1 버퍼가 풀이면, 제2 버퍼에 저장된 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬할 수 있다.
S507단계에서, PCIe 인터페이스 장치는 스위치의 제1 버퍼가 풀이면, 제1 버퍼에 저장된 제1 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 제1 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬할 수 있다.
도 6은 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
도 6을 참조하면, S601단계에서, PCIe 인터페이스 장치는 멀티 펑션들로부터 제2 버퍼에 입력된 순서대로 제2 트랜잭션 레이어 패킷들의 우선 순위를 할당할 수 있다.
S603단계에서, PCIe 인터페이스 장치는 제2 버퍼에 저장된 제2 트랜잭션 레이어 패킷들 중 스위치의 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷들을 나머지 제2 트랜잭션 레이어 패킷들보다 우선 순위를 높게 설정할 수 있다.
S605단계에서, PCIe 인터페이스 장치는 나머지 제2 트랜잭션 레이어 패킷들의 우선 순위는 이전과 동일하게 설정할 수 있다.
100: PCIe 인터페이스 장치
110: 버퍼 그룹
120: 버퍼 제어부
200_1: 제1 DMA 장치
200_2: 제2 DMA 장치
1000: PCIe 장치
2000: 호스트
2100: 루트 콤플렉스
2200: 스위치
110: 버퍼 그룹
120: 버퍼 제어부
200_1: 제1 DMA 장치
200_2: 제2 DMA 장치
1000: PCIe 장치
2000: 호스트
2100: 루트 콤플렉스
2200: 스위치
Claims (20)
- 멀티 펑션들로부터 수신하는 복수의 제1 트랜잭션 레이어 패킷들을 저장하는 제1 버퍼;
상기 멀티 펑션들로부터 수신하는 복수의 제2 트랜잭션 레이어 패킷들을 저장하는 제2 버퍼; 및
스위치에 포함된 제1 버퍼가 풀(Full)이면, 상기 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 상기 제2 버퍼에서 상기 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 버퍼 제어부;를 포함하는 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치.
- 제 1항에 있어서, 상기 제1 버퍼는 쓰기 버퍼이고,
상기 제2 버퍼는 리드 버퍼인 PCIe 인터페이스 장치.
- 제 1항에 있어서, 상기 버퍼 제어부는,
상기 제2 버퍼에 입력된 순서대로 상기 복수의 제2 트랜잭션 레이어 패킷들 각각의 우선 순위를 할당하는 PCIe 인터페이스 장치.
- 제 3항에 있어서, 상기 버퍼 제어부는,
상기 복수의 제2 트랜잭션 레이어 패킷들 중 제2 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제2 트랜잭션 레이어 패킷들보다 높게 설정하고,
상기 제2 타겟 트랜잭션 레이어 패킷들은,
상기 복수의 제2 트랜잭션 레이어 패킷들 중 상기 스위치에 포함된 상기 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치.
- 제 4항에 있어서, 상기 버퍼 제어부는,
상기 나머지 제2 트랜잭션 레이어 패킷들의 우선 순위는 이전과 동일하게 유지하는 PCIe 인터페이스 장치.
- 제 4항에 있어서, 상기 제2 타겟 트랜잭션 레이어 패킷들은,
상기 복수의 제2 트랜잭션 레이어 패킷들 중 상기 복수의 제1 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치.
- 제 1항에 있어서, 상기 버퍼 제어부는,
상기 복수의 제1 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 상기 제1 버퍼에서 상기 복수의 제1 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 PCIe 인터페이스 장치.
- 제 7항에 있어서, 상기 버퍼 제어부는,
상기 복수의 제1 트랜잭션 레이어 패킷들 중 제1 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제1 트랜잭션 레이어 패킷들보다 높게 설정하고,
상기 제1 타겟 트랜잭션 레이어 패킷들은,
상기 복수의 제1 트랜잭션 레이어 패킷들 중 상기 스위치에 포함된 상기 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치.
- 제 1항에 있어서, 상기 제1 버퍼 및 상기 제2 버퍼는,
적어도 하나의 DMA(Direct Memory Access) 장치에서 실행되는 상기 멀티 펑션들로부터 적어도 하나의 버스를 통해 상기 복수의 제1 트랜잭션 레이어 패킷들 및 상기 복수의 제2 트랜잭션 레이어 패킷들을 수신하는 PCIe 인터페이스 장치.
- 제 9항에 있어서, 트랜잭션 레이어 패킷의 아이디는,
상기 트랜잭션 레이어 패킷에 대응되는 버스의 번호, 상기 트랜잭션 레이어 패킷에 대응되는 PCIe 장치의 번호 및 상기 트랜잭션 레이어 패킷에 대응되는 펑션의 번호를 포함하는 PCIe 인터페이스 장치.
- 제 9항에 있어서, 상기 적어도 하나의 DMA 장치는,
NVMe(Non Volatile Memory Express) 모듈, AI CPU 모듈, AI SoC 모듈, 이더넷(Ethernet) 카드, 사운드 카드 및 그래픽 카드 중 적어도 하나를 포함하는 PCIe 인터페이스 장치.
- 복수의 제1 트랜잭션 레이어 패킷들을 저장하는 제1 버퍼 및 복수의 제2 트랜잭션 레이어 패킷들을 저장하는 제2 버퍼를 포함하는 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치의 동작 방법에 있어서,
스위치에 포함된 제1 버퍼가 풀(Full)인지 여부를 나타내는 플로우 컨트롤 신호를 수신하는 단계; 및
상기 스위치에 포함된 상기 제1 버퍼가 풀이면, 상기 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 상기 제2 버퍼에서 상기 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계;를 포함하는 PCIe 인터페이스 장치의 동작 방법.
- 제 12항에 있어서, 상기 제1 버퍼는 쓰기 버퍼이고,
상기 제2 버퍼는 리드 버퍼인 PCIe 인터페이스 장치의 동작 방법.
- 제 12항에 있어서,
멀티 펑션들로부터 수신한 상기 복수의 제2 트랜잭션 레이어 패킷들을 상기 제2 버퍼에 저장하는 단계; 및
상기 복수의 제2 트랜잭션 레이어 패킷들 각각의 우선 순위를 상기 제2 버퍼에 저장된 순서대로 할당하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
- 제 14항에 있어서, 상기 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계는,
상기 복수의 제2 트랜잭션 레이어 패킷들 중 제2 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제2 트랜잭션 레이어 패킷들보다 높게 설정하는 단계;를 포함하고,
상기 제2 타겟 트랜잭션 레이어 패킷들은,
상기 복수의 제2 트랜잭션 레이어 패킷들 중 상기 스위치에 포함된 상기 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치의 동작 방법.
- 제 15항에 있어서, 상기 제2 타겟 트랜잭션 레이어 패킷들은,
상기 복수의 제2 트랜잭션 레이어 패킷들 중 상기 복수의 제1 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치의 동작 방법.
- 제 12항에 있어서,
멀티 펑션들로부터 수신한 상기 복수의 제1 트랜잭션 레이어 패킷들을 상기 제1 버퍼에 저장하는 단계;
상기 복수의 제1 트랜잭션 레이어 패킷들 각각의 우선 순위를 상기 제1 버퍼에 저장된 순서대로 할당하는 단계; 및
상기 복수의 제1 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 상기 제1 버퍼에서 상기 복수의 제1 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
- 제 17항에 있어서, 상기 복수의 제1 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계는,
상기 복수의 제1 트랜잭션 레이어 패킷들 중 제1 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제1 트랜잭션 레이어 패킷들보다 높게 설정하는 단계;를 포함하고,
상기 제1 타겟 트랜잭션 레이어 패킷들은,
상기 복수의 제1 트랜잭션 레이어 패킷들 중 상기 스위치에 포함된 상기 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치의 동작 방법.
- 제 14항에 있어서, 상기 복수의 제1 트랜잭션 레이어 패킷들 및 상기 복수의 제2 트랜잭션 레이어 패킷들은,
적어도 하나의 DMA(Direct Memory Access) 장치에서 실행되는 상기 멀티 펑션들로부터 적어도 하나의 버스를 통해 수신되는 PCIe 인터페이스 장치의 동작 방법.
- 제 19항에 있어서, 트랜잭션 레이어 패킷의 아이디는,
상기 트랜잭션 레이어 패킷에 대응되는 버스의 번호, 상기 트랜잭션 레이어 패킷에 대응되는 PCIe 장치의 번호 및 상기 트랜잭션 레이어 패킷에 대응되는 펑션의 번호를 포함하는 PCIe 인터페이스 장치의 동작 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210037512A KR102496994B1 (ko) | 2021-03-23 | 2021-03-23 | PCIe 인터페이스 장치 및 그 동작 방법 |
US17/467,054 US11841819B2 (en) | 2021-03-23 | 2021-09-03 | Peripheral component interconnect express interface device and method of operating the same |
CN202111206763.8A CN115114215A (zh) | 2021-03-23 | 2021-10-18 | 高速外围组件互连接口装置及其操作方法 |
TW110145464A TW202239183A (zh) | 2021-03-23 | 2021-12-06 | 高速週邊組件互連介面裝置及其操作方法 |
US17/567,609 US20220300442A1 (en) | 2021-03-18 | 2022-01-03 | Peripheral component interconnect express device and method of operating the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210037512A KR102496994B1 (ko) | 2021-03-23 | 2021-03-23 | PCIe 인터페이스 장치 및 그 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220132333A KR20220132333A (ko) | 2022-09-30 |
KR102496994B1 true KR102496994B1 (ko) | 2023-02-09 |
Family
ID=83324842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210037512A KR102496994B1 (ko) | 2021-03-18 | 2021-03-23 | PCIe 인터페이스 장치 및 그 동작 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11841819B2 (ko) |
KR (1) | KR102496994B1 (ko) |
CN (1) | CN115114215A (ko) |
TW (1) | TW202239183A (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140281099A1 (en) | 2013-03-14 | 2014-09-18 | Broadcom Corporation | METHOD, SYSTEM, AND COMPUTER PROGRAM PRODUCT FOR CONTROLLING FLOW OF PCIe TRANSPORT LAYER PACKETS |
JP2015503154A (ja) | 2012-10-27 | 2015-01-29 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Pcieスイッチング・ネットワークにおけるパケット伝送を実現する方法、装置、システム、及び記憶媒体 |
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 |
US20190058675A1 (en) | 2017-08-18 | 2019-02-21 | Nils Endric Schubert | Heterogeneous Packet-Based Transport |
JP2019505924A (ja) | 2016-02-03 | 2019-02-28 | クアルコム,インコーポレイテッド | 周辺コンポーネント相互接続エクスプレス(PCIe)システムのためのインライン暗号エンジン(ICE) |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5655100A (en) * | 1995-03-31 | 1997-08-05 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system |
US5673399A (en) * | 1995-11-02 | 1997-09-30 | International Business Machines, Corporation | System and method for enhancement of system bus to mezzanine bus transactions |
WO2003019391A2 (en) | 2001-08-24 | 2003-03-06 | Intel Corporation | A general input/output architecture protocol and related methods to manage data integrity |
US7500029B2 (en) * | 2004-10-29 | 2009-03-03 | Intel Corporation | Maximal length packets |
US7574536B2 (en) * | 2005-04-22 | 2009-08-11 | Sun Microsystems, Inc. | Routing direct memory access requests using doorbell addresses |
US7287114B2 (en) | 2005-05-10 | 2007-10-23 | Intel Corporation | Simulating multiple virtual channels in switched fabric networks |
JP4777723B2 (ja) | 2005-08-30 | 2011-09-21 | 株式会社リコー | 情報処理システム、プログラムおよびデータ転送方法 |
JP4878185B2 (ja) | 2006-03-17 | 2012-02-15 | 株式会社リコー | データ通信回路および調停方法 |
US7908531B2 (en) | 2006-09-29 | 2011-03-15 | Teradyne, Inc. | Networked test system |
JP4920638B2 (ja) | 2007-06-01 | 2012-04-18 | インベンチュア株式会社 | Lsiシステムの設計方法及びlsiシステムの設計支援装置 |
US7877558B2 (en) * | 2007-08-13 | 2011-01-25 | Advanced Micro Devices, Inc. | Memory controller prioritization scheme |
US8130649B2 (en) * | 2007-10-18 | 2012-03-06 | Alcatel Lucent | Ingress traffic flow control in a data communications system |
US7852757B1 (en) * | 2009-03-10 | 2010-12-14 | Xilinx, Inc. | Status based data flow control for chip systems |
US8732339B2 (en) * | 2009-03-24 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | NPIV at storage devices |
US8199759B2 (en) * | 2009-05-29 | 2012-06-12 | Intel Corporation | Method and apparatus for enabling ID based streams over PCI express |
US8677030B2 (en) | 2009-12-09 | 2014-03-18 | Oracle America, Inc. | Apparatus and method for managing packet classification tables |
US8606975B2 (en) | 2010-05-21 | 2013-12-10 | Oracle International Corporation | Managing interrupts in a virtualized input/output device supporting multiple hosts and functions |
US8510403B2 (en) | 2010-06-30 | 2013-08-13 | Juniper Networks, Inc. | Self clocking interrupt generation in a network interface card |
US8510521B2 (en) * | 2010-09-16 | 2013-08-13 | Apple Inc. | Reordering in the memory controller |
WO2013062109A1 (ja) | 2011-10-28 | 2013-05-02 | 日本電気株式会社 | I/oデバイス制御システムおよびi/oデバイス制御方法 |
US20140237156A1 (en) | 2012-10-25 | 2014-08-21 | Plx Technology, Inc. | Multi-path id routing in a pcie express fabric environment |
US20150302903A1 (en) * | 2014-04-21 | 2015-10-22 | Qualcomm Incorporated | System and method for deep coalescing memory management in a portable computing device |
KR102387932B1 (ko) | 2014-07-31 | 2022-04-15 | 삼성전자주식회사 | 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템 |
US9996484B1 (en) | 2014-09-17 | 2018-06-12 | Amazon Technologies, Inc. | Hardware acceleration for software emulation of PCI express compliant devices |
KR102238652B1 (ko) | 2014-11-12 | 2021-04-09 | 삼성전자주식회사 | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 |
US9792245B2 (en) | 2014-12-09 | 2017-10-17 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Peripheral component interconnect express (PCIe) devices with efficient memory mapping by remapping a plurality of base address registers (BARs) |
US9740646B2 (en) * | 2014-12-20 | 2017-08-22 | Intel Corporation | Early identification in transactional buffered memory |
US9846650B2 (en) * | 2015-03-09 | 2017-12-19 | Samsung Electronics Co., Ltd. | Tail response time reduction method for SSD |
US10089275B2 (en) * | 2015-06-22 | 2018-10-02 | Qualcomm Incorporated | Communicating transaction-specific attributes in a peripheral component interconnect express (PCIe) system |
US10606510B2 (en) * | 2015-10-29 | 2020-03-31 | Netflix, Inc. | Memory input/output management |
US10621125B2 (en) | 2016-06-28 | 2020-04-14 | Nec Corporation | Identifier-based packet request processing |
KR20180114972A (ko) * | 2017-04-11 | 2018-10-22 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10609174B2 (en) * | 2017-04-11 | 2020-03-31 | Microsoft Technology Licensing, Llc | Parallel prefetching log/meta stream sub-portions to recreate partition states in a distributed computing system |
KR102450514B1 (ko) | 2017-09-19 | 2022-10-05 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법 |
CN109656854A (zh) | 2017-10-12 | 2019-04-19 | 光宝科技股份有限公司 | 固态储存装置的重置电路及其重置方法 |
US10564857B2 (en) | 2017-11-13 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for QoS over NVMe virtualization platform using adaptive command fetching |
US10740029B2 (en) * | 2017-11-28 | 2020-08-11 | Advanced Micro Devices, Inc. | Expandable buffer for memory transactions |
US10838636B2 (en) | 2018-05-18 | 2020-11-17 | Western Digital Technologies, Inc. | Hierarchical clock scaling in a data storage controller |
US11372580B2 (en) | 2018-08-07 | 2022-06-28 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
US10678478B2 (en) * | 2018-08-24 | 2020-06-09 | Apple Inc. | Ordering memory requests based on access efficiency |
KR20200073592A (ko) | 2018-12-14 | 2020-06-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
WO2020190558A1 (en) | 2019-03-15 | 2020-09-24 | Fungible, Inc. | Providing scalable and concurrent file systems |
US10848440B2 (en) | 2019-03-20 | 2020-11-24 | Alibaba Group Holding Limited | Systems and methods for allocating bandwidth across a cluster of accelerators |
CN112306624A (zh) | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 一种信息处理方法、物理机和pcie设备 |
US11431653B2 (en) * | 2020-10-20 | 2022-08-30 | Micron Technology, Inc. | Packet arbitration for buffered packets in a network device |
-
2021
- 2021-03-23 KR KR1020210037512A patent/KR102496994B1/ko active IP Right Grant
- 2021-09-03 US US17/467,054 patent/US11841819B2/en active Active
- 2021-10-18 CN CN202111206763.8A patent/CN115114215A/zh active Pending
- 2021-12-06 TW TW110145464A patent/TW202239183A/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015503154A (ja) | 2012-10-27 | 2015-01-29 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Pcieスイッチング・ネットワークにおけるパケット伝送を実現する方法、装置、システム、及び記憶媒体 |
US20140281099A1 (en) | 2013-03-14 | 2014-09-18 | Broadcom Corporation | METHOD, SYSTEM, AND COMPUTER PROGRAM PRODUCT FOR CONTROLLING FLOW OF PCIe TRANSPORT LAYER PACKETS |
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 |
JP2019505924A (ja) | 2016-02-03 | 2019-02-28 | クアルコム,インコーポレイテッド | 周辺コンポーネント相互接続エクスプレス(PCIe)システムのためのインライン暗号エンジン(ICE) |
US20190058675A1 (en) | 2017-08-18 | 2019-02-21 | Nils Endric Schubert | Heterogeneous Packet-Based Transport |
Also Published As
Publication number | Publication date |
---|---|
KR20220132333A (ko) | 2022-09-30 |
US20220309021A1 (en) | 2022-09-29 |
CN115114215A (zh) | 2022-09-27 |
US11841819B2 (en) | 2023-12-12 |
TW202239183A (zh) | 2022-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8886861B2 (en) | Memory interleaving device to re-order messages from slave IPS and a method of using a reorder buffer to re-order messages from slave IPS | |
EP0993680B1 (en) | Method and apparatus in a packet routing switch for controlling access at different data rates to a shared memory | |
US6119196A (en) | System having multiple arbitrating levels for arbitrating access to a shared memory by network ports operating at different data rates | |
KR100814904B1 (ko) | 칩 내부 회로 간의 데이터 전송을 위한 통신 시스템 | |
JP5975446B2 (ja) | アクセス制御装置、中継装置、アクセス制御方法、コンピュータプログラム | |
US8213461B2 (en) | Method of designating slots in a transmission frame for controlling transmission of data over an interconnect coupling a plurality of master units with a plurality of slave units | |
US20200401751A1 (en) | Systems & methods for multi pf emulation using vfs in ssd controller | |
US10599600B2 (en) | Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments | |
US20230305747A1 (en) | Arbitration of commands between non-volatile memory storage and remote hosts | |
KR20180030985A (ko) | Usb 2.0 대역폭 예약을 위한 방법 및 시스템 | |
JP2008541276A (ja) | 同時読み出し応答確認拡張ダイレクト・メモリ・アクセス・ユニット | |
US9146693B2 (en) | Storage control device, storage system, and storage control method | |
US8756356B2 (en) | Pipe arbitration using an arbitration circuit to select a control circuit among a plurality of control circuits and by updating state information with a data transfer of a predetermined size | |
US20230269205A1 (en) | Switch for transmitting packet, network on chip having the same, and operating method thereof | |
KR20040106665A (ko) | 송수신 흐름에 따라 공유 버퍼 메모리의 할당량을제어하는 송수신 네트워크 제어기 및 그 방법 | |
KR102496994B1 (ko) | PCIe 인터페이스 장치 및 그 동작 방법 | |
US8527745B2 (en) | Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available | |
US10402348B2 (en) | Method and system for using feedback information for selecting a routing bus for a memory transaction | |
US10684965B2 (en) | Method to reduce write responses to improve bandwidth and efficiency | |
JP7435054B2 (ja) | 通信装置、通信装置の制御方法、および集積回路 | |
WO2006071942A2 (en) | Method and apparatus for implementing heterogeneous interconnects | |
JP4983133B2 (ja) | 入出力制御装置およびその制御方法、並びにプログラム | |
US20220309014A1 (en) | Peripheral component interconnect express interface device and method of operating the same | |
US20070130390A1 (en) | Method and apparatus for effective package memory bandwidth management | |
JP2013097718A (ja) | 優先度制御システム、スイッチ、優先度制御方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |