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

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

Info

Publication number
KR102521902B1
KR102521902B1 KR1020210037503A KR20210037503A KR102521902B1 KR 102521902 B1 KR102521902 B1 KR 102521902B1 KR 1020210037503 A KR1020210037503 A KR 1020210037503A KR 20210037503 A KR20210037503 A KR 20210037503A KR 102521902 B1 KR102521902 B1 KR 102521902B1
Authority
KR
South Korea
Prior art keywords
functions
traffic class
transaction layer
interface device
throughput
Prior art date
Application number
KR1020210037503A
Other languages
English (en)
Other versions
KR20220132329A (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 KR1020210037503A priority Critical patent/KR102521902B1/ko
Priority to US17/467,070 priority patent/US20220309014A1/en
Priority to CN202111206778.4A priority patent/CN115114014A/zh
Priority to TW110145465A priority patent/TW202238400A/zh
Priority to US17/567,609 priority patent/US20220300442A1/en
Publication of KR20220132329A publication Critical patent/KR20220132329A/ko
Application granted granted Critical
Publication of KR102521902B1 publication Critical patent/KR102521902B1/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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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/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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality of Service based
    • 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/0024Peripheral component interconnect [PCI]
    • 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 인터페이스 장치는 성능 분석부 및 트래픽 클래스 제어부를 포함할 수 있다. 성능 분석부는 적어도 하나 이상의 DMA 장치에서 실행되는 멀티 펑션들의 처리량을 측정할 수 있다. 트래픽 클래스 제어부는 멀티 펑션들의 처리량을 기초로 멀티 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 동적으로 할당할 수 있다.

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) 등이 있다.
본 발명의 실시 예는, 펑션 별로 균등한 QoS(Quality of Service)를 제공하는 PCIe 인터페이스 장치 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 PCIe 인터페이스 장치는 성능 분석부 및 트래픽 클래스 제어부를 포함할 수 있다. 성능 분석부는 적어도 하나 이상의 DMA 장치에서 실행되는 멀티 펑션들의 처리량을 측정할 수 있다. 트래픽 클래스 제어부는 멀티 펑션들의 처리량을 기초로 멀티 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 동적으로 할당할 수 있다.
본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작 방법은, 적어도 하나 이상의 DMA 장치에서 실행되는 멀티 펑션들의 처리량을 측정하는 단계; 및 멀티 펑션들의 처리량을 기초로 멀티 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 동적으로 할당하는 단계;를 포함할 수 있다.
본 기술에 따르면 펑션 별로 균등한 QoS(Quality of Service)를 제공하는 PCIe 인터페이스 장치 및 그 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 호스트 시스템과 PCIe 장치 간의 통신 구조를 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 PCIe 장치의 구조 및 동작을 설명하기 위한 도면이다.
도 3은 PCIe 링크에서 가상 채널을 설명하기 위한 도면이다.
도 4는 도 3의 스위치 내부에서의 가상 채널을 설명하기 위한 도면이다.
도 5는 일 실시 예에 따른 가상 채널과 트래픽 클래스의 매핑 테이블을 설명하기 위한 도면이다.
도 6은 도 5에서 설명된 매핑 테이블에 따른 가상 채널과 트래픽 채널의 매핑 구조를 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른, 펑션 별 처리량을 기초로 트래픽 클래스 값을 할당하는 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
도 9는 일 실시 예에 따른 트래픽 클래스 값을 할당하는 방법을 설명하기 위한 순서도이다.
도 10은 일 실시 예에 따른 트래픽 클래스 값을 할당하는 방법을 설명하기 위한 순서도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 실시 예에 따른 호스트 시스템과 PCIe 장치 간의 통신 구조를 설명하기 위한 도면이다.
도 1을 참조하면, 호스트 시스템(200)은 루트 컴플렉스(210), 스위치(220), CPU(230) 및 메모리(240)를 포함할 수 있다.
루트 컴플렉스(210)는 CPU(230) 및 메모리(240)를 입출력 계층 구조(I/O Hierarchy)와 연결할 수 있다. 루트 컴플렉스(210)는 적어도 하나의 호스트 브릿지 및 루트 포트를 포함할 수 있다. 루트 컴플렉스(210)는 하나 이상의 PCIe(Peripheral Component Interconnect Express) 포트를 지원할 수 있다.
루트 컴플렉스(210)는 입출력 리퀘스트(I/O request)를 지원할 수 있다. 루트 컴플렉스(210)는 구성 리퀘스트(Configuration request) 생성을 지원해야한다(must). 루트 컴플렉스(210)는 컴플리터(Completer)로서 Lock semantics를 지원해서는 안된다. 루트 컴플렉스(210)는 리퀘스터(Requester)로서 Lock request 생성을 요청할 수 있다.
스위치(220)는 패킷을 라우팅하도록 적어도 둘 이상의 포트들을 연결할 수 있다. 스위치(220)는 가상의 PCI-to-PCI 브릿지 장치들의 집합일 수 있다. 스위치(220)는 2개 이상의 논리적 PCI 대 PCI 브릿지로 구성될 수 있다. 스위치(220)는 PCI 브릿지 메커니즘(어드레스 기반의 멀티 캐스팅 방식)을 사용하여 트랜잭션을 전달할 수 있다. 스위치(220)는 모든 포트 간에 모든 유형의 트랜잭션 레이어 패킷을 전달해야한다(must). 스위치(220)는 잠금 리퀘스트(Locked request)를 지원해야 한다. 활성화된 각 스위치의 포트는 플로우 컨트롤을 지원해야한다. 스위치(220)는 동일한 가상 채널에서 경합이 발생하는 경우 라운드 로빈 또는 가중 라운드 로빈 방식으로 중재할 수 있다.
PCIe 엔드 포인트는 PCIe 트랜잭션의 리퀘스터 또는 컴플리터 역할을 수행할 수 있다.
도 1에서, 제1 PCIe 엔드 포인트(PCI EP 1)는 루트 컴플렉스(210)와 트랜잭션 레이어 패킷을 송수신할 수 있다. 제2 및 제3 PCIe 엔드 포인트(PCIe EP 2, PCIe EP 3)는 스위치(220)와 트랜잭션 레이어 패킷을 송수신할 수 있다.
스위치(220)는 제2 및 제3 PCIe 엔드 포인트(PCIe EP 2, PCIe EP 3)로부터 수신한 트랜잭션 레이어 패킷을 루트 컴플렉스(210)로 전달할 수 있다. 스위치(220)는 루트 컴플렉스(210)로부터 수신한 트랜잭션 레이어 패킷을 제2 및 제3 PCIe 엔드 포인트(PCIe EP 2, PCIe EP 3)로 전달할 수 있다.
루트 컴플렉스(210)는 제1 PCIe 엔드 포인트(PCI EP 1)와 직접 트랜잭션 레이어 패킷을 송수신할 수 있다. 루트 컴플렉스(210)는 스위치(220)를 통해 제2 및 제3 PCIe 엔드 포인트(PCIe EP 2, PCIe EP 3)과 트랜잭션 레이어 패킷을 송수신할 수 있다. 루트 컴플렉스(210)는 제1 내지 제3 PCIe 엔드 포인트(PCIe EP 1~PCIe EP 3)로부터 수신한 트랜잭션 레이어 패킷을 CPU(230)나 메모리(240)에 전달할 수 있다.
도 2는 본 발명의 실시 예에 따른 PCIe 장치의 구조 및 동작을 설명하기 위한 도면이다.
도 2를 참조하면, PCIe 장치(100)는 PCIe 인터페이스 장치(110) 및 적어도 하나의 DMA(Direct Memory Access) 장치들(120)을 포함할 수 있다. PCIe 장치(100)는 도 1에서 설명된 PCIe 엔드 포인트일 수 있다. 호스트 시스템(200)은 도 1에서 설명된 바와 마찬가지로 루트 컴플렉스(210), 스위치(220), CPU(미도시) 및 메모리(미도시)를 포함할 수 있다.
PCIe 인터페이스 장치(110)는 DMA 장치들(120)에서 실행되는 멀티 펑션들(Function 1~Function 4)로부터 트랜잭션 레이어 패킷을 수신할 수 있다. PCIe 인터페이스 장치(110)는 각 펑션들로부터 수신한 트랜잭션 레이어 패킷을 호스트 시스템(200)의 스위치(220)에 전달할 수 있다. PCIe 인터페이스 장치(110)는 각 펑션들의 처리량을 기초로 수신한 트랜잭션 레이어 패킷의 트래픽 클래스 값을 동적으로 할당할 수 있다. 트래픽 클래스는 변조되지 않은(Unmodifed) 종단 간에 전달되는 트랜잭션 레이어 패킷의 레이블일 수 있다.
PCIe 인터페이스 장치(110)는 성능 분석부(111) 및 트래픽 클래스 제어부(112)를 포함할 수 있다.
성능 분석부(111)는 DMA 장치들(120)에서 실행되는 멀티 펑션들 각각의 처리량(Throughput)을 측정할 수 있다. 멀티 펑션들은 DMA 장치들(120)과 PCIe 인터페이스 장치(110)를 연결하는 데이터 경로(path)를 공유할 수 있다. 성능 분석부(111)는 데이터 경로(path)에서 멀티 펑션들의 점유율을 기초로, 멀티 펑션들의 처리량을 연산할 수 있다. 성능 분석부(111)는 단위 시간당 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 멀티 펑션들의 점유율을 연산할 수 있다.
트래픽 클래스 제어부(112)는 멀티 펑션들의 처리량을 기초로 멀티 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 동적으로 할당할 수 있다. 트래픽 클래스 제어부(112)는 멀티 펑션들의 처리량의 순위가 변동될 때마다, 변동된 순위를 기초로 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 재할당할 수 있다.
트래픽 클래스 제어부(112)는 멀티 펑션들로부터 수신한 트랜잭션 레이어 패킷들의 트래픽 클래스의 초기 값을 미리 설정된 디폴트 값으로 할당할 수 있다.
트래픽 클래스 제어부(112)는 멀티 펑션들의 처리량과 임계 값의 비교 결과에 따라, 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 다르게 할당할 수 있다. 트래픽 클래스 제어부(112)는 멀티 펑션들 중 처리량이 임계 값을 초과하는 펑션으로부터 수신하는 트랜잭션 레이어 패킷의 트래픽 클래스 값을 디폴트 값으로 할당할 수 있다. 트래픽 클래스 제어부(112)는 멀티 펑션들 중 처리량이 임계 값보다 작거나 같은 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값의 순위를 멀티 펑션들의 처리량의 순위의 역순으로 할당할 수 있다. 트래픽 클래스 값의 할당하는 실시 예는 도 7에서 설명하기로 한다.
트래픽 클래스 제어부(112)는 멀티 펑션들 중 인터럽트된 펑션으로부터 수신하는 트랜잭션 레이어 패킷의 트래픽 클래스 값을 디폴트 값으로 할당할 수 있다.
도 6에서 후술할 바와 같이, 트랜잭션 레이어 패킷들은 할당된 트래픽 클래스 값에 따라 스위치(220) 또는 루트 컴플렉스(210)에서 매핑되는 가상 채널이 결정될 수 있다. 트랜잭션 레이어 패킷들은 매핑된 가상 채널에 따라 스위치 또는 루트 컴플렉스에서 외부로 출력되는 순서가 결정될 수 있다.
DMA 장치(120)의 종류는 NVMe(Non Volatile Memory Express) 장치, SSD(Solid State Drive) 장치, AI CPU(Artificial Intelligence Central Processing Unit), AI SoC(Artificial Intelligence System on Chip), 이더넷(Ethernet) 장치, 사운드 카드 및 그래픽 카드 등을 포함할 수 있다. DMA 장치(120)의 종류는 이에 한정되지 않고, PCIe 인터페이스를 사용하는 다른 전자 장치들을 포함할 수 있다. 펑션은 DMA 장치(120)에서 실행되고 트랜잭션 레이어 패킷의 트랜잭션을 처리하는 소프트웨어 또는 펌웨어일 수 있다.
DMA 장치(120)별로 펑션이 실행될 수 있다. 도 2에서, DMA 장치 별로 각각 하나의 펑션이 실행될 수 있다.
예를 들어, 제1 DMA 장치(120_1)에서 제1 펑션(Function 1)이 실행될 수 있다. 제2 DMA 장치(120_2)에서 제2 펑션(Function 2)이 실행될 수 있다. 제3 DMA 장치(120_3)에서 제3 펑션(Function 3)이 실행될 수 있다. 제4 DMA 장치(120_4)에서 제4 펑션(Function 4)이 실행될 수 있다.
단, DMA 장치에 실행되는 펑션의 개수는 본 실시 예에 제한되지 않는다. 예를 들어, PCIe 장치(100)는 호스트 시스템(200)으로부터 수신된 가상화 요청에 따라 물리 펑션 또는 가상 펑션을 생성할 수 있다. PCIe 장치(100)는 펑션들을 각 DMA 장치에 할당할 수 있다. 각 DMA 장치에 할당되어 실행되는 펑션의 개수는 개별적으로 설정될 수 있다. 따라서, 하나의 DMA 장치에 복수 펑션들이 할당될 수 있고, 각 펑션들은 독립적인 동작 단위로서 실행될 수 있다.
도 3은 PCIe 링크에서 가상 채널을 설명하기 위한 도면이다.
도 3을 참조하면, PCIe 엔드 포인트의 업 스트림 포트는 루트 컴플렉스의 다운 스트림 포트 또는 스위치의 다운 스트림 포트와 연결될 수 있다. 스위치의 업 스트림 포트는 루트 컴플렉스의 다운 스트림 포트와 연결될 수 있다.
도 3에서, 제1 PCIe 엔드 포인트(PCIe EP 1)의 업 스트림 포트는 루트 컴플렉스의 제2 다운 스트림 포트와 연결될 수 있다. 제2 PCIe 엔드 포인트(PCIe EP 2)의 업 스트림 포트는 루트 컴플렉스의 제3 다운 스트림 포트와 연결될 수 있다.
제1 PCIe 엔드 포인트(PCIe EP 1)는 하나의 가상 채널이 설정된 단일 링크를 통해 루트 컴플렉스와 통신할 수 있다. 가상 채널은 디폴트 채널 VC0으로 설정될 수 있다.
제2 PCIe 엔드 포인트(PCIe EP 2)는 두 개의 가상 채널이 설정된 단일 링크를 통해 루트 컴플렉스와 통신할 수 있다. 두 개의 가상 채널은 디폴트 채널 VC0과 다른 가상 채널을 포함할 수 있다. 링크에 설정 가능한 가상 채널의 개수는 본 실시 예에 제한되지 않는다.
제3 PCIe 엔드 포인트(PCIe EP 3)의 업 스트림 포트는 스위치의 제1 다운 스트림 포트와 연결될 수 있다. 제4 PCIe 엔드 포인트(PCIe EP 4)의 업 스트림 포트는 스위치의 제2 다운 스트림 포트와 연결될 수 있다. 제5 PCIe 엔드 포인트(PCIe EP 5)의 업 스트림 포트는 스위치의 제3 다운 스트림 포트와 연결될 수 있다. 스위치의 업 스트림 포트는 루트 컴플렉스의 제1 다운 스트림 포트와 연결될 수 있다.
제3 내지 제5 PCIe 엔드 포인트(PCIe EP 3~PCIe EP 5)는 스위치를 통해 루트 컴플렉스와 통신할 수 있다.
제3 PCIe 엔드 포인트(PCIe EP 3)는 하나의 가상 채널이 설정된 단일 링크를 통해 스위치와 통신할 수 있다. 가상 채널은 디폴트 채널 VC0으로 설정될 수 있다. 제4 PCIe 엔드 포인트(PCIe EP 4)는 두 개의 가상 채널이 설정된 단일 링크를 통해 스위치와 통신할 수 있다. 두 개의 가상 채널은 디폴트 채널 VC0과 다른 가상 채널을 포함할 수 있다. 제5 PCIe 엔드 포인트(PCIe EP 5)는 두 개의 가상 채널이 설정된 단일 링크를 통해 스위치와 통신할 수 있다. 두 개의 가상 채널은 디폴트 채널 VC0과 다른 가상 채널을 포함할 수 있다.
스위치는 두 개의 가상 채널이 설정된 단일 링크를 통해 루트 컴플렉스와 통신할 수 있다. 두 개의 가상 채널은 디폴트 채널 VC0과 다른 가상 채널을 포함할 수 있다.
도 4는 도 3의 스위치 내부에서의 가상 채널을 설명하기 위한 도면이다.
도 4를 참조하면, 스위치는 제1 내지 제3 다운 스트림 포트(DP1~DP3)와 업 스트림 포트(UP)를 포함할 수 있다.
제1 다운 스트림 포트(DP1)로부터 수신되는 트랜잭션 레이어 패킷은 디폴트 채널 VC0을 통해 업 스트림 포트(UP)로 전달될 수 있다. 제2 다운 스트림 포트(DP2)로부터 수신되는 트랜잭션 레이어 패킷은 디폴트 채널 VC0과 다른 가상 채널 VCn, (n은 1이상의 자연수)을 통해 업 스트림 포트(UP)로 전달될 수 있다. 제3 다운 스트림 포트(DP3)로부터 수신되는 트랜잭션 레이어 패킷은 디폴트 채널 VC0과 다른 가상 채널 VCn을 통해 업 스트림 포트(UP)로 전달될 수 있다.
디폴트 채널 VC0 및 다른 가상 채널 VCn으로부터 수신하는 트랜잭션 레이어 패킷이 업 스트림 포트(UP)를 통해 외부로 출력되는 순서는 스위치 내부의 구성 정보(Configuration)에 따라 결정될 수 있다. 예를 들어, 다른 가상 채널 VCn에서 수신하는 트랜잭션 레이어 패킷이 디폴트 채널 VC0에서 수신하는 트랜잭션 레이어 패킷보다 우선하여 업 스트림 포트(UP)에서 외부로 출력될 수 있다.
도 5는 일 실시 예에 따른 가상 채널과 트래픽 클래스의 매핑 테이블을 설명하기 위한 도면이다.
도 5를 참조하면, 가상 채널 메커니즘은 서로 다른 트래픽 클래스를 이용하여 패브릭(fabric) 전체에 차별화된 트래픽을 제공할 수 있다. 이는 단일 트래픽 사용으로 인한 병목 현상을 방지하기 위함이다.
실시 예에서, 하나의 트래픽 클래스가 하나의 가상 채널에 매핑될 수 있다. 여러 트래픽 클래스가 단일 가상 채널에 매핑될 수 있다. 트래픽 클래스는 하나의 가상 채널에만 매핑될 수 있다. 트래픽 클래스의 디폴트 값은 TC0이고 가상 채널의 디폴트 채널은 VC0이다.
도 5에서, 디폴트 채널 VC0에 트래픽 클래스 TC(0-7)가 전부가 매핑될 수 있다.
가상 채널 VC0 및 VC1에 트래픽 클래스 TC(0-7)가 매핑되는 경우, 트래픽 클래스 TC(0-6)은 디폴트 채널 VC0에 매핑되고, 트래픽 클래스 TC7은 가상 채널 VC1에 매핑될 수 있다.
가상 채널 VC0 내지 VC3에 트래픽 클래스 TC(0-7)가 매핑되는 경우, 트래픽 클래스 TC(0-1)은 디폴트 채널 VC0에 매핑될 수 있다. 트래픽 클래스 TC(2-4)은 가상 채널 VC1에 매핑될 수 있다. 트래픽 클래스 TC(5-6)은 가상 채널 VC2에 매핑될 수 있다. 트래픽 클래스 TC7은 가상 채널 VC3에 매핑될 수 있다.
가상 채널 VC0 내지 VC7에 트래픽 클래스 TC(0-7)가 일대일로 매핑될 수 있다.
가상 채널 및 트래픽 클래스의 개수는 본 실시 예에 제한되지 않는다.
도 6은 도 5에서 설명된 매핑 테이블에 따른 가상 채널과 트래픽 채널의 매핑 구조를 설명하기 위한 도면이다.
도 6을 참조하면, 트랜잭션 레이어 패킷은 할당된 트래픽 클래스 값에 따라 매핑된 가상 채널을 통해 컴포넌트 간에 트랜잭션이 수행될 수 있다. 이 때 트래픽 클래스 값에 따라 스위치 내부 또는 루트 컴플랙스 내부에서 트랜잭션 레이어 패킷들 간의 오더링(Ordering)이 수행될 수 있다.
가상 채널을 통해 특정 물리적 리소스에서 독립적인 논리 데이터 플로우가 제공될 수 있다. 예를 들어, 물리적 단일 링크에서 복수의 가상 채널이 설정되면, 각 가상 채널 별로 논리적으로 독립된 데이터 플로우가 제공될 수 있다.
스위치는 링크를 통해 전달받은 트랜잭션 레이어 패킷을 루트 컴플렉스로 전달할 수 있다. 스위치는 구성 정보(Configuration)로서 트래픽 클래스와 가상 채널의 매핑 테이블을 포함할 수 있다. 스위치의 구성 정보(Configuration)는 호스트의 요청에 따라 변경될 수 있다. 매핑 테이블은 각 스위치 별로 다르게 설정될 수 있다. 스위치는 트랜잭션 레이어 패킷에 할당된 트래픽 클래스 값에 따라 트랜잭션 레이어 패킷이 전송되는 가상 채널을 배정할 수 있다.
예를 들어, 제1 스위치(Switch 1)는 가상 채널 VC0에 트래픽 클래스 TC[0:6]를 매핑 하고, 가상 채널 VC1에 트래픽 클래스 TC7을 매핑할 수 있다. 트래픽 클래스 TC[0:6]를 갖는 트랜잭션 레이어 패킷은 가상 채널 VC0을 통해 루트 컴플렉스로 전달 될 수 있다. 트래픽 클래스 TC7을 갖는 트랜잭션 레이어 패킷은 가상 채널 VC1을 통해 루트 컴플렉스로 전달 될 수 있다. 제1 스위치(Switch 1)의 구성 정보에 따라, 가상 채널 VC0과 가상 채널 VC1에서 루트 컴플렉스로 전달되는 트랜잭션 레이어 패킷들 간의 우선 순위 또는 순서가 결정될 수 있다.
제2 스위치(Switch 2)는 가상 채널 VC0에 트래픽 클래스 TC[0:1]를 매핑 하고, 가상 채널 VC1에 트래픽 클래스 TC[2:4]를 매핑 하고, 가상 채널 VC3에 트래픽 클래스 TC[5:6]를 매핑 하고, 가상 채널 VC3에 트래픽 클래스 TC7을 매핑할 수 있다.
제1 스위치에서 트랜잭션 레이어 패킷의 전달 과정을 설명한 바와 같이, 트랜잭션 레이어 패킷은 트래픽 클래스 값에 따라 매핑된 가상 채널을 통해 루트 컴플렉스로 전달될 수 있다. 제2 스위치(Switch 2)의 구성 정보에 따라, 가상 채널 VC0 내지 VC3에서 루트 컴플렉스로 전달되는 트랜잭션 레이어 패킷들 간의 우선 순위 또는 순서가 결정될 수 있다.
도 7은 본 발명의 실시 예에 따른, 펑션 별 처리량을 기초로 트래픽 클래스 값을 할당하는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 펑션의 처리량은 단위 시간당 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 결정될 수 있다. 각 펑션의 처리량의 순위는 각 펑션의 데이터 경로에 대한 점유율의 순위를 나타낼 수 있다.
할당되는 트래픽 클래스 값의 개수는 펑션의 개수와 동일하게 결정될 수 있다. 도 7에서 제1 내지 제4 펑션(F1~F4)으로부터 수신하는 트랜잭션 레이어 패킷에 대해 트래픽 클래스 값 TC0 내지 TC3이 할당될 수 있다. 트래픽 클래스 값이 클수록 우선 순위가 높은 것으로 설정될 수 있다. 다른 실시 예에서, 트래픽 클래스 값이 작을수록 우선 순위가 높은 것으로 설정될 수 있다.
t1에서 각 펑션들로부터 수신하는 트랜잭션 레이어 패킷의 트래픽 클래스 값은 모두 디폴트 값인 TC0으로 할당될 수 있다. t1은 PCIe의 링크가 연결되는 시점(Linkup)일 수 있다.
t2에서, 제1 내지 제4 펑션(F1~F4)의 처리량은 임계 값(TH)보다 작을 수 있다. 처리량의 순위는 제1 펑션(F1)부터 제2 펑션(F2), 제3 펑션(F3) 및 제4 펑션(F4) 순으로 낮아질 수 있다.
실시 예에서, 각 펑션의 처리량이 임계 값(TH)보다 작은 경우, 각 펑션들의 처리량의 순위와 역순으로 트래픽 클래스 값이 할당될 수 있다. 따라서, 처리량의 순위가 가장 높은 제1 펑션(F1)의 트랜잭션 레이어 패킷에 가장 낮은 트래픽 클래스 값인 TC0이 매핑될 수 있다. 제2 펑션(F2)의 트랜잭션 레이어 패킷에 트래픽 클래스 값 TC1이 매핑될 수 있다. 제3 펑션(F3)의 트랜잭션 레이어 패킷에 트래픽 클래스 값 TC2이 매핑될 수 있다. 처리량의 순위가 가장 낮은 제4 펑션(F4)의 트랜잭션 레이어 패킷에 제일 높은 트래픽 클래스 값 TC3이 매핑될 수 있다.
t3에서, 제2 펑션(F2)의 처리량은 임계 값(TH)을 초과할 수 있다.
실시 예에서, 펑션의 처리량이 임계 값(TH)을 초과하는 경우 해당 펑션으로부터 수신하는 트랜잭션 레이어 패킷에 트래픽 클래스는 디폴트 값인 TC0이 할당될 수 있다. 따라서, 처리량이 임계 값을 초과하는 제2 펑션(F2)의 트랜잭션 레이어 패킷에 트래픽 클래스의 디폴트 값인 TC0이 할당될 수 있다.
제1, 제3 및 제4 펑션(F1, F3, F4)의 처리량은 임계 값(TH)보다 작을 수 있다. 따라서, 아직 할당되지 않은 트래픽 클래스 값인 TC1부터 TC3이 제1, 제3 및 제4 펑션(F1, F3, F4)들의 처리량의 순위와 역순으로 트랜잭션 레이어 패킷에 할당될 수 있다.
예를 들어, 처리량의 순위가 가장 높은 제1 펑션(F1)의 트랜잭션 레이어 패킷에, 할당되지 않은 트래픽 클래스 값인 TC1부터 TC3중에서 가장 낮은 트래픽 클래스 값인 TC1이 매핑될 수 있다. 제3 펑션(F3)의 트랜잭션 레이어 패킷에 트래픽 클래스 값 TC2가 매핑될 수 있다. 제4 펑션(F4)의 트랜잭션 레이어 패킷에 트래픽 클래스 값 TC3이 매핑될 수 있다.
t3에서, 제1 내지 제4 펑션(F1~F4)의 처리량은 임계 값(TH)보다 작을 수 있다. 처리량의 순위는 제1 펑션(F1)부터 제2 펑션(F2), 제3 펑션(F3) 및 제4 펑션(F4) 순으로 낮아질 수 있다.
실시 예에서, 인터럽트된 펑션으로부터 수신하는 트랜잭션 레이어 패킷에 트래픽 클래스는 디폴트 값인 TC0이 할당될 수 있다. 따라서, 제4 펑션(F4)의 트랜잭션 레이어 패킷에 트래픽 클래스의 디폴트 값인 TC0이 할당될 수 있다.
제1, 제2 및 제3 펑션(F1, F2, F3)의 처리량은 임계 값(TH)보다 작을 수 있다. 따라서, 아직 할당되지 않은 트래픽 클래스 값인 TC1부터 TC3이 제1, 제2 및 제3 펑션(F1, F2, F3)들의 처리량의 순위와 역순으로 트랜잭션 레이어 패킷에 할당될 수 있다.
예를 들어, 처리량의 순위가 가장 높은 제1 펑션(F1)의 트랜잭션 레이어 패킷에, 할당되지 않은 트래픽 클래스 값인 TC1부터 TC3중에서 가장 낮은 트래픽 클래스 값인 TC1이 매핑될 수 있다. 제2 펑션(F2)의 트랜잭션 레이어 패킷에 트래픽 클래스 값 TC2가 매핑될 수 있다. 제3 펑션(F3)의 트랜잭션 레이어 패킷에 트래픽 클래스 값 TC3이 매핑될 수 있다.
도 7에서 설명한 바와 같이, 펑션의 처리량의 순위가 변동되거나 인터럽트가 발생하는 경우 트랜잭션 레이어 패킷에 트래픽 클래스 값이 재할당될 수 있다.
본 발명의 실시 예에서, 트랜잭션 레이어 패킷에 할당되는 트래픽 클래스 값에 따라 스위치 또는 루트 컴플렉스에서 트랜잭션 레이어 패킷 간에 오더링이 수행될 수 있다. 예를 들어, 트랜잭션 레이어 패킷에 높은 트래픽 클래스 값이 할당된 경우 낮은 트래픽 클래스 값이 할당된 경우보다 스위치 또는 루트 컴플렉스에서 처리되는 순위가 상승할 수 있다.
본 발명의 실시 예에 따르면, PCIe 인터페이스 장치는 펑션의 처리량이 임계 값을 초과하면 트래픽 클래스 값을 가장 낮은 디폴트 값인 TC으로 할당할 수 있다. PCIe 인터페이스 장치는 펑션의 처리량이 임계 값보다 작거나 같으면 펑션의 처리량의 순위와 역순으로 트래픽 클래스 값을 할당할 수 있다. 이와 같은 방식으로, 펑션의 처리량이 임계 값을 넘지 않는 범위에서 펑션의 점유율이 낮을수록 트랜잭션 레이어 패킷에 높은 트래픽 클래스 값이 할당됨으로서, 각 펑션의 점유율이 균등하게 달성될 수 있다. 이로써 PCIe 인터페이스 장치는 멀티 펑션 환경에서 펑션 별로 균등한 QoS를 달성할 수 있다.
도 8은 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 순서도이다.
도 8을 참조하면, S801단계에서 PCIe 인터페이스 장치는, DMA 장치들의 멀티 펑션들로부터 트랜잭션 레이어 패킷들을 수신할 수 있다.
S803단계에서 PCIe 인터페이스 장치는, 펑션 별로 처리량을 측정할 수 있다. 펑션의 처리량은 단위 시간당 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 결정될 수 있다.
S805단계에서 PCIe 인터페이스 장치는, 측정된 처리량을 기준으로 멀티 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 동적으로 할당할 수 있다. 트래픽 클래스 값을 할당하는 방법은 도 9 및 도 10에서 추가로 설명하기로 한다.
도 9는 일 실시 예에 따른 트래픽 클래스 값을 할당하는 방법을 설명하기 위한 순서도이다.
도 9를 참조하면, S901단계에서 PCIe 인터페이스 장치는, 수신한 트랜잭션 레이어 패킷의 펑션이 인터럽트되었는지 여부를 판단할 수 있다. PCIe 인터페이스 장치는 인터럽트된 펑션이 존재하면 S903단계로 진행하고, 인터럽트된 펑션이 없으면 S905단계로 진행한다.
S903단계에서 PCIe 인터페이스 장치는, 인터럽트된 펑션으로부터 수신한 트랜잭션 레이어 패킷의 트래픽 클래스 값을 디폴트 값으로 할당할 수 있다.
S905단계에서 PCIe 인터페이스 장치는, 인터럽트된 펑션을 제외한 멀티 펑션들의 처리량을 기준으로 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 동적으로 할당할 수 있다.
도 10은 일 실시 예에 따른 트래픽 클래스 값을 할당하는 방법을 설명하기 위한 순서도이다.
도 10을 참조하면, S1001단계에서 PCIe 인터페이스 장치는, 수신한 트랜잭션 레이어 패킷들의 트래픽 클래스의 초기 값을 디폴트 값으로 할당할 수 있다.
S1003단계에서 PCIe 인터페이스 장치는, 펑션의 처리량이 임계 값을 초과하는 지 판단할 수 있다. PCIe 인터페이스 장치는 펑션의 처리량이 임계 값을 초과하면 S1009단계로 진행하고, 펑션의 처리량이 임계 값보다 작거나 같으면 S1005단계로 진행한다.
S1005단계에서 PCIe 인터페이스 장치는, 처리량이 임계 값보다 작거나 같은 멀티 펑션들의 처리량을 기준으로 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 동적으로 할당할 수 있다.
S1007단계에서 PCIe 인터페이스 장치는, 멀티 펑션들의 처리량의 순위가 변동되었는지 판단할 수 있다. PCIe 인터페이스 장치는 처리량의 순위가 변동되면 S1003단계로 진행하고, 처리량의 순위에 변동이 없으면 동작을 종료한다.
S1009단계에서 PCIe 인터페이스 장치는, 처리량이 임계 값을 초과한 펑션으로부터 수신한 트랜잭션 레이어 패킷의 트래픽 클래스 값을 디폴트 값으로 할당할 수 있다.
100: PCIe 장치
110: PCIe 인터페이스 장치
111: 성능 분석부
112: 트래픽 클래스 제어부
120_1: 제1 DMA 장치
120_2: 제2 DMA 장치
120_3: 제3 DMA 장치
120_4: 제4 DMA 장치
200: 호스트 시스템
210: 루트 컴플렉스
220: 스위치

Claims (20)

  1. 적어도 하나 이상의 DMA(Direct Memory Access) 장치에서 실행되는 멀티 펑션들의 처리량(Throughput)을 측정하는 성능 분석부; 및
    상기 멀티 펑션들의 처리량을 기초로 상기 멀티 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 동적으로 할당하는 트래픽 클래스 제어부;를 포함하고,
    상기 트래픽 클래스 제어부는,
    상기 멀티 펑션들 중 처리량이 임계 값을 초과하는 펑션으로부터 수신하는 트랜잭션 레이어 패킷의 트래픽 클래스 값을 미리 설정된 디폴트 값으로 할당하고, 처리량이 상기 임계 값보다 작거나 같은 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값의 순위를 상기 멀티 펑션들의 처리량의 순위의 역순으로 할당하는 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치.
  2. 제 1항에 있어서, 상기 성능 분석부는,
    상기 적어도 하나 이상의 DMA(Direct Memory Access) 장치와 상기 PCIe 인터페이스 장치를 연결하는 데이터 경로(path)에서, 상기 멀티 펑션들의 점유율을 기초로 상기 멀티 펑션들의 처리량을 연산하는 PCIe 인터페이스 장치.
  3. 제 2항에 있어서, 상기 성능 분석부는,
    단위 시간당 상기 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 상기 멀티 펑션들의 점유율을 연산하는 PCIe 인터페이스 장치.
  4. 제 1항에 있어서, 상기 트래픽 클래스 제어부는,
    상기 멀티 펑션들의 처리량의 순위가 변동될 때마다, 변동된 순위를 기초로 상기 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 재할당하는 PCIe 인터페이스 장치.
  5. 제 1항에 있어서, 상기 트래픽 클래스 제어부는,
    상기 멀티 펑션들로부터 수신한 상기 트랜잭션 레이어 패킷들의 트래픽 클래스의 초기 값을 상기 디폴트 값으로 할당하는 PCIe 인터페이스 장치.
  6. 제 5항에 있어서, 상기 트래픽 클래스 제어부는,
    상기 멀티 펑션들의 처리량과 상기 임계 값의 비교 결과에 따라, 상기 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 다르게 할당하는 PCIe 인터페이스 장치.
  7. 삭제
  8. 삭제
  9. 제 5항에 있어서, 상기 트래픽 클래스 제어부는,
    상기 멀티 펑션들 중 인터럽트된 펑션으로부터 수신하는 트랜잭션 레이어 패킷의 트래픽 클래스 값을 상기 디폴트 값으로 할당하는 PCIe 인터페이스 장치.
  10. 제 1항에 있어서, 상기 트랜잭션 레이어 패킷들은,
    할당된 트래픽 클래스 값에 따라 스위치 또는 루트 컴플렉스(Root Complex)에서 매핑되는 가상 채널이 결정되는 PCIe 인터페이스 장치.
  11. 제 10항에 있어서, 상기 트랜잭션 레이어 패킷들은,
    상기 매핑된 가상 채널에 따라 상기 스위치 또는 상기 루트 컴플렉스에서 출력되는 순서가 결정되는 PCIe 인터페이스 장치.
  12. 제 1항에 있어서, 상기 적어도 하나 이상의 DMA(Direct Memory Access) 장치는,
    NVMe(Non Volatile Memory Express) 장치, SSD(Solid State Drive) 장치, AI CPU(Artificial Intelligence Central Processing Unit), AI SoC(Artificial Intelligence System on Chip), 이더넷(Ethernet) 장치, 사운드 카드 및 그래픽 카드 중 적어도 하나를 포함하는 PCIe 인터페이스 장치.
  13. 적어도 하나 이상의 DMA(Direct Memory Access) 장치에서 실행되는 멀티 펑션들의 처리량(Throughput)을 측정하는 단계;
    상기 멀티 펑션들 중 처리량이 임계 값을 초과하는 펑션으로부터 수신하는 트랜잭션 레이어 패킷의 트래픽 클래스 값을 미리 설정된 디폴트 값으로 할당하는 단계; 및
    상기 멀티 펑션들 중 처리량이 상기 임계 값보다 작거나 같은 펑션들로부터 수신하는 트랜잭션 레이어 패킷들의 트래픽 클래스 값의 순위를 상기 멀티 펑션들의 처리량의 순위의 역순으로 할당하는 단계;를 포함하는 PCIe(Peripheral Component Interconnect Express) 인터페이스 장치의 동작 방법.
  14. 제 13항에 있어서, 상기 멀티 펑션들의 처리량(Throughput)을 측정하는 단계는,
    상기 적어도 하나 이상의 DMA(Direct Memory Access) 장치와 상기 PCIe 인터페이스 장치를 연결하는 데이터 경로(path)에서, 상기 멀티 펑션들의 점유율을 기초로 상기 멀티 펑션들의 처리량을 연산하는 단계;를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  15. 제 14항에 있어서, 상기 멀티 펑션들의 점유율은,
    단위 시간당 상기 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 연산되는 PCIe 인터페이스 장치의 동작 방법.
  16. 제 13항에 있어서,
    상기 멀티 펑션들로부터 수신한 상기 트랜잭션 레이어 패킷들의 트래픽 클래스의 초기 값을 상기 디폴트 값으로 할당하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
  17. 제 13항에 있어서,
    상기 멀티 펑션들 중 인터럽트된 펑션으로부터 수신하는 트랜잭션 레이어 패킷의 트래픽 클래스 값을 상기 디폴트 값으로 할당하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
  18. 삭제
  19. 제 16항에 있어서,
    상기 멀티 펑션들의 처리량의 순위가 변동될 때마다, 변동된 순위를 기초로 상기 트랜잭션 레이어 패킷들의 트래픽 클래스 값을 재할당하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
  20. 제 13항에 있어서, 상기 트랜잭션 레이어 패킷들은,
    할당된 트래픽 클래스 값에 따라 스위치 또는 루트 컴플렉스(Root Complex)에서 매핑되는 가상 채널이 결정되고, 상기 매핑된 가상 채널에 따라 상기 스위치 또는 상기 루트 컴플렉스에서 출력되는 순서가 결정되는 PCIe 인터페이스 장치의 동작 방법.
KR1020210037503A 2021-03-18 2021-03-23 PCIe 인터페이스 장치 및 그 동작 방법 KR102521902B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210037503A KR102521902B1 (ko) 2021-03-23 2021-03-23 PCIe 인터페이스 장치 및 그 동작 방법
US17/467,070 US20220309014A1 (en) 2021-03-23 2021-09-03 Peripheral component interconnect express interface device and method of operating the same
CN202111206778.4A CN115114014A (zh) 2021-03-23 2021-10-18 高速外围组件互连接口装置及其操作方法
TW110145465A TW202238400A (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
KR1020210037503A KR102521902B1 (ko) 2021-03-23 2021-03-23 PCIe 인터페이스 장치 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20220132329A KR20220132329A (ko) 2022-09-30
KR102521902B1 true KR102521902B1 (ko) 2023-04-17

Family

ID=83325100

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210037503A KR102521902B1 (ko) 2021-03-18 2021-03-23 PCIe 인터페이스 장치 및 그 동작 방법

Country Status (4)

Country Link
US (1) US20220309014A1 (ko)
KR (1) KR102521902B1 (ko)
CN (1) CN115114014A (ko)
TW (1) TW202238400A (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070220193A1 (en) * 2006-03-17 2007-09-20 Junichi Ikeda Data communication circuit and arbitration method
US20080301605A1 (en) * 2007-06-01 2008-12-04 Inventure Inc. Method for designing lsi system and design support device for lsi system
US20140237156A1 (en) * 2012-10-25 2014-08-21 Plx Technology, Inc. Multi-path id routing in a pcie express fabric environment

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003019391A2 (en) * 2001-08-24 2003-03-06 Intel Corporation A general input/output architecture protocol and related methods to manage data integrity
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
US20140281099A1 (en) * 2013-03-14 2014-09-18 Broadcom Corporation METHOD, SYSTEM, AND COMPUTER PROGRAM PRODUCT FOR CONTROLLING FLOW OF PCIe TRANSPORT LAYER PACKETS
US10621125B2 (en) * 2016-06-28 2020-04-14 Nec Corporation Identifier-based packet request processing
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设备
US20210075732A1 (en) * 2020-11-19 2021-03-11 Intel Corporation Software distributed, hardware aggregated hierarchical traffic management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070220193A1 (en) * 2006-03-17 2007-09-20 Junichi Ikeda Data communication circuit and arbitration method
US20080301605A1 (en) * 2007-06-01 2008-12-04 Inventure Inc. Method for designing lsi system and design support device for lsi system
US20140237156A1 (en) * 2012-10-25 2014-08-21 Plx Technology, Inc. Multi-path id routing in a pcie express fabric environment

Also Published As

Publication number Publication date
KR20220132329A (ko) 2022-09-30
TW202238400A (zh) 2022-10-01
CN115114014A (zh) 2022-09-27
US20220309014A1 (en) 2022-09-29

Similar Documents

Publication Publication Date Title
US9806904B2 (en) Ring controller for PCIe message handling
US20100146170A1 (en) Differentiating Traffic Types in a Multi-Root PCI Express Environment
JP5871233B2 (ja) 計算機及び帯域制御方法
KR101104025B1 (ko) 멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화
US20110029693A1 (en) Reserving pci memory space for pci devices
JP7010598B2 (ja) 再構成可能なマルチポートを具備するPCIeストレージシステムのためのQoSを認識した入出力管理方法、管理システム、及び管理装置
US9021125B2 (en) Control path I/O virtualisation
US10007625B2 (en) Resource allocation by virtual channel management and bus multiplexing
CN103609077A (zh) 用于数据传输的方法、装置和系统以及物理网卡
CN107852423B (zh) 用于usb 2.0带宽保留的方法及系统
CN112311696B (zh) 网络封包接收装置及方法
US20110252174A1 (en) Hierarchical to physical memory mapped input/output translation
US10705985B1 (en) Integrated circuit with rate limiting
JP4408376B2 (ja) 交換のためにメモリに書き込まれるパケットをキューイングするシステム、方法及び論理
KR102521902B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
US20170031841A1 (en) Peripheral Device Connection to Multiple Peripheral Hosts
JP6760579B2 (ja) ネットワークラインカード(lc)のホストオペレーティングシステム(os)への統合
EP3420452B1 (en) Interconnected hardware infrastructure resource control
US20220300442A1 (en) Peripheral component interconnect express device and method of operating the same
US20080301350A1 (en) Method for Reassigning Root Complex Resources in a Multi-Root PCI-Express System
US10002099B2 (en) Arbitrated access to resources among multiple devices
KR102496994B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
Hyun et al. The effective buffer architecture for data link layer of PCI express
JP7446167B2 (ja) 軽量ブリッジ、これを含む物品及びこれを用いた方法
KR20220141686A (ko) PCIe 인터페이스 장치 및 그 동작 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant