KR102496994B1 - PCIe 인터페이스 장치 및 그 동작 방법 - Google Patents

PCIe 인터페이스 장치 및 그 동작 방법 Download PDF

Info

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
Application number
KR1020210037512A
Other languages
English (en)
Other versions
KR20220132333A (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 에스케이하이닉스 주식회사
Priority to KR1020210037512A priority Critical patent/KR102496994B1/ko
Priority to US17/467,054 priority patent/US11841819B2/en
Priority to CN202111206763.8A priority patent/CN115114215A/zh
Priority to TW110145464A priority patent/TW202239183A/zh
Priority to US17/567,609 priority patent/US20220300442A1/en
Publication of KR20220132333A publication Critical patent/KR20220132333A/ko
Application granted granted Critical
Publication of KR102496994B1 publication Critical patent/KR102496994B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/30Handling 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
    • 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
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치는 제1 버퍼, 제2 버퍼 및 버퍼 제어부를 포함한다. 제1 버퍼는 멀티 펑션들로부터 수신하는 복수의 제1 트랜잭션 레이어 패킷들을 저장할 수 있다. 제2 버퍼는 멀티 펑션들로부터 수신하는 복수의 제2 트랜잭션 레이어 패킷들을 저장할 수 잇다. 버퍼 제어부는 스위치에 포함된 제1 버퍼가 풀(Full)이면, 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 제2 버퍼에서 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬할 수 있다.

Description

PCIe 인터페이스 장치 및 그 동작 방법{PERIPHERAL COMPONENT INTERCONNECT EXPRESS INTERFACE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 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 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 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: 스위치

Claims (20)

  1. 멀티 펑션들로부터 수신하는 복수의 제1 트랜잭션 레이어 패킷들을 저장하는 제1 버퍼;
    상기 멀티 펑션들로부터 수신하는 복수의 제2 트랜잭션 레이어 패킷들을 저장하는 제2 버퍼; 및
    스위치에 포함된 제1 버퍼가 풀(Full)이면, 상기 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 상기 제2 버퍼에서 상기 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 버퍼 제어부;를 포함하는 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치.
  2. 제 1항에 있어서, 상기 제1 버퍼는 쓰기 버퍼이고,
    상기 제2 버퍼는 리드 버퍼인 PCIe 인터페이스 장치.
  3. 제 1항에 있어서, 상기 버퍼 제어부는,
    상기 제2 버퍼에 입력된 순서대로 상기 복수의 제2 트랜잭션 레이어 패킷들 각각의 우선 순위를 할당하는 PCIe 인터페이스 장치.
  4. 제 3항에 있어서, 상기 버퍼 제어부는,
    상기 복수의 제2 트랜잭션 레이어 패킷들 중 제2 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제2 트랜잭션 레이어 패킷들보다 높게 설정하고,
    상기 제2 타겟 트랜잭션 레이어 패킷들은,
    상기 복수의 제2 트랜잭션 레이어 패킷들 중 상기 스위치에 포함된 상기 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치.
  5. 제 4항에 있어서, 상기 버퍼 제어부는,
    상기 나머지 제2 트랜잭션 레이어 패킷들의 우선 순위는 이전과 동일하게 유지하는 PCIe 인터페이스 장치.
  6. 제 4항에 있어서, 상기 제2 타겟 트랜잭션 레이어 패킷들은,
    상기 복수의 제2 트랜잭션 레이어 패킷들 중 상기 복수의 제1 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치.
  7. 제 1항에 있어서, 상기 버퍼 제어부는,
    상기 복수의 제1 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 상기 제1 버퍼에서 상기 복수의 제1 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 PCIe 인터페이스 장치.
  8. 제 7항에 있어서, 상기 버퍼 제어부는,
    상기 복수의 제1 트랜잭션 레이어 패킷들 중 제1 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제1 트랜잭션 레이어 패킷들보다 높게 설정하고,
    상기 제1 타겟 트랜잭션 레이어 패킷들은,
    상기 복수의 제1 트랜잭션 레이어 패킷들 중 상기 스위치에 포함된 상기 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치.
  9. 제 1항에 있어서, 상기 제1 버퍼 및 상기 제2 버퍼는,
    적어도 하나의 DMA(Direct Memory Access) 장치에서 실행되는 상기 멀티 펑션들로부터 적어도 하나의 버스를 통해 상기 복수의 제1 트랜잭션 레이어 패킷들 및 상기 복수의 제2 트랜잭션 레이어 패킷들을 수신하는 PCIe 인터페이스 장치.
  10. 제 9항에 있어서, 트랜잭션 레이어 패킷의 아이디는,
    상기 트랜잭션 레이어 패킷에 대응되는 버스의 번호, 상기 트랜잭션 레이어 패킷에 대응되는 PCIe 장치의 번호 및 상기 트랜잭션 레이어 패킷에 대응되는 펑션의 번호를 포함하는 PCIe 인터페이스 장치.
  11. 제 9항에 있어서, 상기 적어도 하나의 DMA 장치는,
    NVMe(Non Volatile Memory Express) 모듈, AI CPU 모듈, AI SoC 모듈, 이더넷(Ethernet) 카드, 사운드 카드 및 그래픽 카드 중 적어도 하나를 포함하는 PCIe 인터페이스 장치.
  12. 복수의 제1 트랜잭션 레이어 패킷들을 저장하는 제1 버퍼 및 복수의 제2 트랜잭션 레이어 패킷들을 저장하는 제2 버퍼를 포함하는 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치의 동작 방법에 있어서,
    스위치에 포함된 제1 버퍼가 풀(Full)인지 여부를 나타내는 플로우 컨트롤 신호를 수신하는 단계; 및
    상기 스위치에 포함된 상기 제1 버퍼가 풀이면, 상기 복수의 제2 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 상기 제2 버퍼에서 상기 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계;를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  13. 제 12항에 있어서, 상기 제1 버퍼는 쓰기 버퍼이고,
    상기 제2 버퍼는 리드 버퍼인 PCIe 인터페이스 장치의 동작 방법.
  14. 제 12항에 있어서,
    멀티 펑션들로부터 수신한 상기 복수의 제2 트랜잭션 레이어 패킷들을 상기 제2 버퍼에 저장하는 단계; 및
    상기 복수의 제2 트랜잭션 레이어 패킷들 각각의 우선 순위를 상기 제2 버퍼에 저장된 순서대로 할당하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
  15. 제 14항에 있어서, 상기 복수의 제2 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계는,
    상기 복수의 제2 트랜잭션 레이어 패킷들 중 제2 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제2 트랜잭션 레이어 패킷들보다 높게 설정하는 단계;를 포함하고,
    상기 제2 타겟 트랜잭션 레이어 패킷들은,
    상기 복수의 제2 트랜잭션 레이어 패킷들 중 상기 스위치에 포함된 상기 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치의 동작 방법.
  16. 제 15항에 있어서, 상기 제2 타겟 트랜잭션 레이어 패킷들은,
    상기 복수의 제2 트랜잭션 레이어 패킷들 중 상기 복수의 제1 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치의 동작 방법.
  17. 제 12항에 있어서,
    멀티 펑션들로부터 수신한 상기 복수의 제1 트랜잭션 레이어 패킷들을 상기 제1 버퍼에 저장하는 단계;
    상기 복수의 제1 트랜잭션 레이어 패킷들 각각의 우선 순위를 상기 제1 버퍼에 저장된 순서대로 할당하는 단계; 및
    상기 복수의 제1 트랜잭션 레이어 패킷들 각각의 아이디를 기초로, 상기 제1 버퍼에서 상기 복수의 제1 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
  18. 제 17항에 있어서, 상기 복수의 제1 트랜잭션 레이어 패킷들이 출력되는 순서를 재정렬하는 단계는,
    상기 복수의 제1 트랜잭션 레이어 패킷들 중 제1 타겟 트랜잭션 레이어 패킷들의 우선 순위를 나머지 제1 트랜잭션 레이어 패킷들보다 높게 설정하는 단계;를 포함하고,
    상기 제1 타겟 트랜잭션 레이어 패킷들은,
    상기 복수의 제1 트랜잭션 레이어 패킷들 중 상기 스위치에 포함된 상기 제1 버퍼에 계류 중인 트랜잭션 레이어 패킷들과 다른 아이디를 갖는 트랜잭션 레이어 패킷인 PCIe 인터페이스 장치의 동작 방법.
  19. 제 14항에 있어서, 상기 복수의 제1 트랜잭션 레이어 패킷들 및 상기 복수의 제2 트랜잭션 레이어 패킷들은,
    적어도 하나의 DMA(Direct Memory Access) 장치에서 실행되는 상기 멀티 펑션들로부터 적어도 하나의 버스를 통해 수신되는 PCIe 인터페이스 장치의 동작 방법.
  20. 제 19항에 있어서, 트랜잭션 레이어 패킷의 아이디는,
    상기 트랜잭션 레이어 패킷에 대응되는 버스의 번호, 상기 트랜잭션 레이어 패킷에 대응되는 PCIe 장치의 번호 및 상기 트랜잭션 레이어 패킷에 대응되는 펑션의 번호를 포함하는 PCIe 인터페이스 장치의 동작 방법.
KR1020210037512A 2021-03-18 2021-03-23 PCIe 인터페이스 장치 및 그 동작 방법 KR102496994B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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