KR20220130518A - PCIe 디바이스 및 그 동작 방법 - Google Patents

PCIe 디바이스 및 그 동작 방법 Download PDF

Info

Publication number
KR20220130518A
KR20220130518A KR1020210035522A KR20210035522A KR20220130518A KR 20220130518 A KR20220130518 A KR 20220130518A KR 1020210035522 A KR1020210035522 A KR 1020210035522A KR 20210035522 A KR20210035522 A KR 20210035522A KR 20220130518 A KR20220130518 A KR 20220130518A
Authority
KR
South Korea
Prior art keywords
throughput
delay time
information
functions
command
Prior art date
Application number
KR1020210035522A
Other languages
English (en)
Other versions
KR102529761B1 (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 KR1020210035522A priority Critical patent/KR102529761B1/ko
Priority to US17/467,078 priority patent/US11741039B2/en
Priority to CN202111206762.3A priority patent/CN115114013A/zh
Priority to TW110145466A priority patent/TW202238399A/zh
Priority to US17/567,609 priority patent/US20220300442A1/en
Publication of KR20220130518A publication Critical patent/KR20220130518A/ko
Application granted granted Critical
Publication of KR102529761B1 publication Critical patent/KR102529761B1/ko

Links

Images

Classifications

    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/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/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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
    • 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 디바이스는, 복수의 펑션들(function) 각각의 처리량(Throughput)을 산출하는 처리량 산출부, 상기 복수의 펑션들 각각에 설정된 제한 처리량 및 상기 산출된 처리량을 기초로 상기 복수의 펑션들 각각에 대해 상기 제한 처리량 및 상기 산출된 처리량을 비교한 결과를 나타내는 처리량 분석 정보를 생성하는 처리량 분석 정보 생성부, 상기 처리량 분석 정보를 기초로 상기 복수의 펑션들 각각에 대해 커맨드 페치 동작을 지연시키는 지연 시간을 생성하는 지연 시간 정보 생성부, 호스트로부터 페치할 타겟 커맨드와 관련된 정보를 포함하는 커맨드 관련 정보 및 상기 복수의 펑션들 중 상기 타겟 커맨드에 대응되는 펑션의 지연 시간을 저장하는 커맨드 룩업 테이블 저장부 및 상기 커맨드 관련 정보 및 상기 대응되는 펑션의 지연 시간을 기초로 상기 호스트로부터 상기 타겟 커맨드를 페치하는 커맨드 페치부를 포함한다.

Description

PCIe 디바이스 및 그 동작 방법{PCIe DEVICE AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 PCIe(Peripheral Component Interconnect Express) 디바이스 및 그 동작 방법에 관한 것이다.
PCI(Peripheral Component Interconnect)는 호스트 장치에 입출력 디바이스들을 연결하는데 사용되는 버스 프로토콜을 정의한다. PCIe(PCI Express)는 PCI 표준에서 정의한 프로그래밍 개념을 가지면서 물리적 통신 레이어(physical communication layer)를 고속 시리얼 인터페이스로 정의한 것이다.
스토리지 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (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 디바이스는, 복수의 펑션들(function) 각각의 처리량(Throughput)을 산출하는 처리량 산출부, 상기 복수의 펑션들 각각에 설정된 제한 처리량 및 상기 산출된 처리량을 기초로 상기 복수의 펑션들 각각에 대해 상기 제한 처리량 및 상기 산출된 처리량을 비교한 결과를 나타내는 처리량 분석 정보를 생성하는 처리량 분석 정보 생성부, 상기 처리량 분석 정보를 기초로 상기 복수의 펑션들 각각에 대해 커맨드 페치 동작을 지연시키는 지연 시간을 생성하는 지연 시간 정보 생성부, 호스트로부터 페치할 타겟 커맨드와 관련된 정보를 포함하는 커맨드 관련 정보 및 상기 복수의 펑션들 중 상기 타겟 커맨드에 대응되는 펑션의 지연 시간을 저장하는 커맨드 룩업 테이블 저장부 및 상기 커맨드 관련 정보 및 상기 대응되는 펑션의 지연 시간을 기초로 상기 호스트로부터 상기 타겟 커맨드를 페치하는 커맨드 페치부를 포함한다.
본 발명의 실시 예에 따른 PCIe 디바이스의 동작 방법은, 복수의 펑션들 각각의 처리량을 산출하는 단계, 상기 복수의 펑션들 각각에 설정된 제한 처리량 및 상기 산출된 처리량을 기초로 상기 복수의 펑션들 각각에 대해 상기 제한 처리량 및 상기 산출된 처리량을 비교한 결과를 나타내는 처리량 분석 정보를 생성하는 단계, 상기 처리량 분석 정보를 기초로 상기 복수의 펑션들 각각에 대해 커맨드 페치 동작을 지연시키는 지연 시간을 생성하는 단계, 호스트로부터 페치할 타겟 커맨드와 관련된 정보를 포함하는 커맨드 관련 정보를 획득하는 단계 및 상기 커맨드 관련 정보 및 상기 복수의 펑션들 중 상기 타겟 커맨드에 대응되는 펑션의 지연 시간을 기초로 상기 호스트로부터 상기 타겟 커맨드를 페치하는 단계를 포함할 수 있다.
본 기술에 따르면, 펑션 별로 성능을 제한할 수 있는 PCIe 디바이스 및 그 동작 방법을 제공한다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템의 일 예를 설명하기 위한 도면이다.
도 2는 도 1의 호스트를 설명하기 위한 도면이다.
도 3은 도 1의 PCIe 디바이스를 설명하기 위한 도면이다.
도 4는 도 3의 PCIe 인터페이스 디바이스에 포함된 레이어의 구조를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 PCIe 디바이스를 설명하기 위한 도면이다.
도 6는 본 발명의 일 실시 예에 따른 지연 시간 정보를 생성하는 동작을 설명하기 위한 그래프이다.
도 7은 본 발명의 일 실시 예에 따른 커맨드 페치 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 PCIe 디바이스의 동작 방법을 설명하기 위한 순서도이다.
도 9는 본 발명의 일 실시 예에 따른 타겟 커맨드를 페치하는 방법을 설명하기 위한 순서도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템의 일 예를 설명하기 위한 도면이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 호스트(1000) 및 PCIe(Peripheral Component Interconnect Express) 디바이스(2000)를 포함한다. 예를 들어, 컴퓨팅 시스템(100)은 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 테블릿 PC 또는 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등이 될 수 있다.
호스트(1000)는 데이터의 처리 및 컴퓨팅 시스템(100)의 동작들을 제어할 수 있다. 호스트(1000)는 컴퓨팅 시스템(100)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장할 수 있다.
호스트(1000)는 입출력 디바이스들을 접속하는 입출력 제어 모듈을 포함할 수 있다. 예를 들어, 입출력 제어 모듈은 USB(Universal Serial Bus) 어댑터, PCI(Peripheral Component Interconnect) 또는 PCIe(PCI Express) 어댑터, SCSI(Small Computer System Interface) 어댑터, SATA(Serial AT Attachment) 어댑터, NVMe(NonVolatile Memory express) 어댑터 등을 포함할 수 있다. 호스트(1000)는 입출력 제어 모듈를 통해 컴퓨팅 시스템(100)에 접속되는 디바이스들과의 정보를 통신할 수 있다.
PCI는 입출력 디바이스들을 연결하는데 사용되는 버스 프로토콜을 정의한다. PCIe는 PCI 표준에서 정의한 프로그래밍 개념을 가지면서 물리적 통신 레이어(physical communication layer)를 고속 시리얼 인터페이스로 정의한 것이다.
PCIe 디바이스(2000)는 PCIe를 이용하여 호스트(1000)와 통신할 수 있는 장치일 수 있다. 예를 들어, PCIe 디바이스(2000)는 네트워크, 스토리지 등과 같이 여러 I/O 디바이스 타입들로 구현될 수 있다.
일 실시 예에서, PCIe 디바이스(2000)는 엔드포인트(endpoint)로 정의되거나, 엔드포인트를 포함하는 장치일 수 있다.
엔드포인트는 PCIe 트랜잭션의 요청자 또는 컴플리터가 될 수 있는 펑션의 유형을 나타낸다. 엔드포인트는 레거시 엔드포인트(Legacy Endpoint), PCIe 엔드포인트(PCI Express Endpoint) 또는 RCiEP (Root Complex Integrated Endpoints)로 분류된다.
레거시 엔드포인트는 타입 00h 컨피규레이션 스페이스(Configuration Space) 헤더를 갖는 펑션일 수 있다. 레거시 엔드포인트는 컴플리터로서 컨피규레이션 요청을 지원할 수 있다. 레거시 엔드포인트는 컴플리터로서 I/O 요청을 지원할 수 있다. 레거시 엔드 포인트는 해당 엔드 포인트의 I/O 디코드 구성에 관계없이 80h 및 84h 위치 중 하나 또는 둘 모두에 대한 I/O 요청을 수락할 수 있다. 레거시 엔드포인트는 I/O 요청을 생성할 수 있다. 레거시 엔드포인트는 록 요청을 이슈(issue)하지 않아야 한다. 레거시 엔드포인트는 익스텐디드 컨피규레이션 스페이스 케이퍼빌리티(Extended Configuration Space Capabilities)를 구현할 수 있다. 메모리 트랜잭션의 요청자로 작동하는 레거시 엔드 포인트는 4GB 이상의 주소를 생성할 필요가 없다. 인터럽트 리소스가 요청된 경우 MSI 또는 MSI-X 또는 둘 다를 지원하려면 레거시 엔드 포인트가 필요하다. MSI가 구현 된 경우 레거시 엔드 포인트는 MSI 기능 구조의 32 비트 또는 64 비트 메시지 주소 버전을 지원할 수 있다. 레거시 엔드포인트는 메모리 리소스를 요청하는 기본 주소 레지스터에 대해 32 비트 주소 지정을 지원할 수 있다. 레거시 엔드포인트는 루트 콤플렉스에서 시작된 하이어라키 도메인 중 하나 내에 나타날 수 있다.
PCIe 엔드포인트는 타입 00h 컨피규레이션 스페이스 헤더를 갖는 펑션일 수 있다. PCIe 엔드포인트는 컴플리터로서 컨피규레이션 요청을 지원할 수 있다. PCIe 엔드포인트는 베이스 어드레스 레지스터(Base Address Register; BAR)를 통해 요청된 I/O 리소스의 운영 체제 할당에 의존해서는 안된다. PCIe 엔드포인트는 I/O 요청을 생성할 수 없다. PCIe 엔드포인트는 록 요청을 컴플리터로서 지원하거나 요청자로서 생성할 수 없다. PCIe 엔드포인트에 액세스 할 때 잠금 시맨틱을 사용하지 않도록 PCIe 호환 소프트웨어 드라이버 및 응용 프로그램을 작성할 수 있다. 메모리 트랜잭션의 요청자로 작동하는 PCIe 엔드포인트 는 4GB보다 큰 주소를 생성할 수 있다. 인터럽트 리소스가 요청 된 경우 MSI(Message Signaled Interrupt) 또는 MSI-X 또는 둘 다를 지원하려면 PCIe 엔드포인트이 필요할 수 있다. MSI가 구현 된 경우 PCIe 엔드포인트는 MSI 기능 구조의 64 비트 메시지 주소 버전을 지원할 수 있다. 베이스 어드레스 레지스터에서 요청하는 최소 메모리 주소 범위는 128 바이트일 수 있다. PCIe 엔드포인트는 루트 콤플렉스에서 시작된 하이어라키 도메인 중 하나 내에 나타날 수 있다.
RCiEP는 루트 포트를 포함하는 루트 콤플렉스의 내부 논리에 구현될 수 있다. RCiEP는 타입 00h 컨피규레이션 스페이스 헤더를 갖는 펑션일 수 있다. RCiEP는 컴플리터로서 컨피규레이션 요청을 지원할 수 있다. RCiEP는 베이스 어드레스 레지스터를 통해 요청된 I/O 리소스를 요구하지 않을 수 있다. RCiEP는 I/O 요청을 생성하지 않을 수 있다. RCiEP는 록 요청을 컴플리터로서 지원하거나 요청자로서 생성할 수 없다. RCiEP에 액세스할 때 록 시맨틱을 사용하지 않도록 PCIe 호환 소프트웨어 드라이버 및 응용 프로그램을 작성할 수 있다. 메모리 트랜잭션의 요청자로 작동하는 RCiEP는 호스트(1000)가 컴플리터로서 처리할 수 있는 것보다 크거나 같은 주소를 생성할 수 있다. RCiEP는 인터럽트 리소스가 요청된 경우 MSI 또는 MSI-X 또는 둘 다를 지원하는 데 필요합니다. MSI가 구현 된 경우 RCiEP는 MSI 기능 구조의 32 비트 또는 64 비트 메시지 주소 버전을 지원하도록 허용됩니다. RCiEP는 메모리 리소스를 요청하는 베이스 어드레스 레지스터에 대해 32 비트 주소 지정을 지원할 수 있다. RCiEP는 PCIe 익스텐디드 케이퍼빌리티(PCI Express Extended Capability)에서 링크 케이퍼빌리티, 링크 상태, 링크 제어, 링크 케이퍼빌리티 2, 링크 상태 2 및 링크 제어 2 레지스터를 구현할 수 없다. RCiEP는 활성 상태 전원 관리를 구현하지 않을 수 있다. RCiEP는 전체적으로 루트 콤플렉스와 독립적으로 핫 플러그되지 않을 수 있다. RCiEP는 루트 콤플렉스에 의해 노출된 하이어라키 도메인에 나타나지 않을 수 있다. RCiEP는 스위치에 나타나지 않을 수 있다.
일 실시 예에서, PCIe 디바이스(2000)는 하나 이상의 가상 디바이스를 생성할 수 있다. 예를 들어, PCIe 디바이스(2000)는 하나 이상의 가상 디바이스를 생성하기 위한 프로그램 코드들을 저장할 수 있다.
일 실시 예에서, PCIe 디바이스(2000)는 호스트(1000)로부터 수신된 가상화 요청에 기초하여 물리 펑션(Physical Function; PF) 디바이스 또는 가상 펑션(Virtual Function; VF) 디바이스를 생성할 수 있다. 예를 들어, 물리 펑션 디바이스는 호스트(1000)의 버추얼라이제이션 인터미디어리에게 액세스 권한이 부여된 가상 디바이스로 설정될 수 있다. 가상 펑션 디바이스는 호스트(1000)의 가상 머신에 할당되는 가상 디바이스로 설정될 수 있다.
도 2는 도 1의 호스트를 설명하기 위한 도면이다.
일 실시 예에서, 도 2는 PCIe 사용 가능한 호스트(1000)의 예를 나타낸다.
도 2를 참조하면, 호스트(1000)는 복수의 시스템 이미지들(1010-1~1010-n), 버추얼라이제이션 인터미디어리(1020), 프로세서(1030), 메모리(1040), 루트 콤플렉스(1050) 및 스위치(1060)를 포함할 수 있다.
일 실시 예에서, 복수의 PCIe 디바이스들(2000-1~2000-3)은 도 1의 PCIe 디바이스(2000)를 나타낼 수 있다.
시스템 이미지들(1010-1~1010-n)은 PCIe 펑션을 할당받을 수 있는 가상 시스템에서 실행되는 소프트웨어 구성 요소일 수 있다. 일 실시 예에서, 시스템 이미지들(1010-1~1010-n)은 가상 머신으로 지칭될 수 있다. 시스템 이미지들(1010-1~1010-n)은 애플리케이션들 또는 신뢰할 수 있는 서비스들을 실행하는 데 이용되는 운영 체제와 같은 소프트웨어일 수 있다. 예를 들어, 시스템 이미지들(1010-1~1010-n)은 게스트 운영 체제(Guest OS), 및 공유 또는 비공유 I/O 디바이스 드라이버 등으로 구성될 수 있다. 하드웨어 수정없이 효과적인 하드웨어 리소스 활용도를 높이기 위해, 컴퓨팅 시스템(100)에서는 복수의 시스템 이미지들(1010-1~1010-n)이 실행될 수 있다.
일 실시 예에서, PCIe 펑션은 PCIe 디바이스(2000-1~2000-3)에 포함된 물리적 리소스들을 제공하는 독립적인 동작 단위일 수 있다. 본 명세서에서 PCIe 펑션과 “펑션”은 같은 의미로 사용될 수 있다.
버추얼라이제이션 인터미디어리(1020)는 하나 이상의 시스템 이미지들(1010-1~1010-n)을 지원하는 소프트웨어 구성 요소이다. 일 실시 예에서, 버추얼라이제이션 인터미디어리(1020)는 하이퍼바이저(Hypervisor) 또는 가상 머신 모니터(Virtual Machine Monitor; VMM)로 지칭될 수 있다. 버추얼라이제이션 인터미디어리(1020)는 프로세서(1030), 메모리(1040) 등과 같은 하드웨어와 시스템 이미지(1010-1~1010-n) 사이에 인터포즈(interpose)될 수 있다. 컴퓨팅 시스템(100)에서의 I/O 동작(인바운드 또는 아웃바운드)들은 버추얼라이제이션 인터미디어리(1020)에 의해 인터셉트(intercepte)되어 처리될 수 있다. 버추얼라이제이션 인터미디어리(1020)는 하드웨어 리소스를 앱스트랙트(abstract)하여 자신의 가상 시스템을 갖는 각 시스템 이미지(1010-1~1010-n)를 프리젠트(present)할 수 있다. 각 시스템 이미지(1010-1~1010-n)에서 사용 가능한 실제 하드웨어 리소스들은 워크로드 또는 커스터머-스펙시픽 정책들(customer-specific policies)에 따라 달라질 수 있다.
프로세서(1030)는 데이터의 처리 및 컴퓨팅 시스템(100)의 구성 요소들의 동작들에 대한 제어를 수행하기 위한 회로, 인터페이스들 또는 프로그램 코드를 포함할 수 있다. 예를 들어, 프로세서(1030)는 CPU, ARM, 또는 주문형 반도체(ASIC: application specific integrated circuit) 등을 포함할 수 있다.
메모리(1040)는 컴퓨팅 시스템(100)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM 등을 포함할 수 있다. 또한, 비휘발성 메모리를 포함할 수도 있다. 일 실시 예에서, 메모리(1040)에는 하나 이상의 오퍼레이팅 시스템(operating system; OS)들 및 가상 머신(virtual machine; VM)들을 실행하도록 동작할 수 있는 프로그램 코드들 및 가상 머신들을 관리하기 위한 버추얼라이제이션 인터미디어리(Virtualization Intermediary; VI)를 실행하는 프로그램 코드들도 저장될 수 있다.
프로세서(1030)는 메모리(1040)에 저장된 프로그램 코드들을 구동시켜 하나 이상의 오퍼레이팅 시스템들 및 가상 머신들을 실행시킬 수 있다. 또한, 프로세서(1030)는 가상 머신들을 관리하기 위한 버추얼라이제이션 인터미디어리(1020)를 실행시킬 수 있다. 이와 같은 방식으로, 프로세서(1030)는 컴퓨팅 시스템(100)의 구성 요소들의 동작을 제어할 수 있다.
루트 콤플렉스(1050)는 프로세서(1030)/메모리(1040) 서브 시스템을 I/O에 연결하는 I/O 계층 구조의 루트를 나타낸다.
컴퓨팅 시스템(100)은 하나 이상의 루트 콤플렉스(1050)를 포함할 수 있다. 또한, 각 루트 콤플렉스(1050)는 하나 이상의 루트 포트들(1051-1, 1051-2)을 포함할 수 있다. 루트 포트들(1051-1, 1051-2)은 별도의 하이어라키(hierarchy)를 나타낸다. 루트 콤플렉스(1050)는 루트 포트(1051-1, 1051-2)를 통해 스위치(1060) 또는 PCIe 디바이스(2000-1~2000-3)와 통신할 수 있다.
루트 콤플렉스(1050)를 통해 하이어라키 도메인(hierarchy domain) 사이에 피어-투-피어 트랜잭션을 라우팅하는 기능은 선택 사항이다. 하이어라키 도메인은 단일 엔드 포인트(end point) 또는 하나 이상의 스위치 및 엔드 포인트를 포함하는 서브 하이어라키로 구성될 수 있다.
루트 콤플렉스(1050)는 하이어라키 도메인 사이에서 피어 투 피어 트랜잭션을 라우팅할 때 패킷을 더 작은 패킷으로 분할할 수 있다. 예를 들어, 루트 콤플렉스(1050)는 256 바이트 페이로드를 갖는 단일 패킷을 각각 128 바이트 페이로드를 갖는 두 패킷으로 분할할 수 있다. 예외로서, 벤더 디파인드 메시지(Vendor_Defined Messages)의 피어-투-피어 라우팅을 지원하는 루트 콤플렉스(1050)는 벤더 디파인드 메시지 패킷을 128 바이트 경계를 제외하고 더 작은 패킷으로 분할할 수 없다(즉, 마지막 패킷을 제외한 모든 결과 패킷은 128 바이트의 정수 배수여야 함).
루트 콤플렉스(1050)는 요청자(Requester)로서 컨피규레이션(configuration) 요청 생성을 지원해야한다. 루트 콤플렉스(1050) 요청자로서 I/O 요청 생성을 지원할 수 있다.
루트 콤플렉스(1050)는 컴플리터(completer)로서 록 시맨틱스(Lock semantics)를 지원하지 않아야 한다. 루트 콤플렉스(1050)는 요청자로서 록 요청 생성을 지원할 수 있다.
스위치(1060)는 여러 가상 PCI-PCI 브리지 장치의 논리적 어셈블리로 정의될 수 있다. 스위치(1060)는 연결된 PCIe 디바이스(2000-2, 2000-3)와 통신할 수 있다.
스위치(1060)는 구성 소프트웨어에 두 개 이상의 논리적 PCI-PCI 브리지로 나타낸다.
스위치(1060)는 PCI 브리지 메커니즘을 사용하여 트랜잭션을 전달할 수 있다. 스위치(1060)는 모든 포트 세트 사이에 모든 유형의 트랜잭션 레이어 패킷(Transaction Layer Packets; TLP)을 전달할 수 있다. 스위치(1060)는 록 요청을 지원할 수 있다.
스위치(1060)는 패킷을 더 작은 패킷으로 분할할 수 없다.
스위치(1060)의 인그레스 포트(Ingress Ports) 사이의 중재(Arbitration)는 동일한 가상 채널에서 경합이 발생할 때 라운드 로빈 또는 가중된 라운드 로빈을 사용하여 구현될 수 있습니다.
엔드포인트는 스위치 다운 스트림 포트를 나타내는 가상 PCI-PCI 브리지의 피어로서 스위치(1060)의 내부 버스에 있는 구성 소프트웨어에 표시되지 않아야 한다.
도 3은 도 1의 PCIe 디바이스를 설명하기 위한 도면이다.
도 3을 참조하면, PCIe 디바이스(2000)는 PCIe 인터페이스 디바이스(2100) 및 복수의 DMA(Direct Memory Access) 장치들(2200-1~2200-n)을 포함할 수 있다.
PCIe 인터페이스 디바이스(2100)는 복수의 DMA 장치들(2200-1~2200-n)에서 실행되는 복수의 펑션들(Function)로부터 트랜잭션 레이어 패킷을 수신할 수 있다. PCIe 인터페이스 디바이스(2100)는 각 펑션들로부터 수신한 트랜잭션 레이어 패킷을 호스트(1000)로 전달할 수 있다.
DMA 장치(2200-1~2200-n)의 종류는 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 장치(2200-1~2200-n)의 종류는 이에 한정되지 않고, PCIe 인터페이스를 사용하는 다른 전자 장치들을 포함할 수 있다. 펑션은 DMA 장치(2200-1~2200-n)에서 실행되고 트랜잭션 레이어 패킷의 트랜잭션을 처리하는 소프트웨어 또는 펌웨어일 수 있다.
DMA 장치(2200-1~2200-n)별로 펑션이 실행될 수 있다. 예를 들어, DMA 장치(2200-1~2200-n)는 적어도 하나 이상의 펑션들을 포함할 수 있다. 이때, DMA 장치(2200-1~2200-n)에서 실행되는 펑션의 개수는 실시 예에 따라 다양할 수 있다. PCIe 디바이스(2000)는 호스트(1000)로부터 수신된 가상화 요청에 따라 물리 펑션 또는 가상 펑션을 생성할 수 있다. PCIe 디바이스(2000)는 펑션들을 각 DMA 장치(2200-1~2200-n)에 할당할 수 있다. 각 DMA 장치(2200-1~2200-n)에 할당되어 실행되는 펑션의 개수는 개별적으로 설정될 수 있다. 따라서, 하나의 DMA 장치(2200-1~2200-n)에 복수 펑션들이 할당될 수 있고, 각 펑션들은 독립적인 동작 단위로서 실행될 수 있다.
도 4는 도 3의 PCIe 인터페이스 디바이스에 포함된 레이어의 구조를 설명하기 위한 도면이다.
도 4를 참조하면, 제1 PCIe 인터페이스 디바이스(2100a) 및 제2 PCIe 인터페이스 디바이스(2100b)가 도시되어 있다. 제1 PCIe 인터페이스 디바이스(2100a) 및 제2 PCIe 인터페이스 디바이스(2100b)는 도 3의 PCIe 인터페이스 디바이스(2100)를 나타낼 수 있다.
PCIe 인터페이스 디바이스들(2100a, 2100b)에 포함된 PCIe 레이어들은 3개의 이산적 논리적 계층들(three discrete logical layers)을 포함할 수 있다. 예를 들어, PCIe 레이어들 트랜잭션 레이어, 데이터 링크 레이어 및 피지컬 레이어를 포함할 수 있다. 각 레이어들은 두 개의 섹션들을 포함할 수 있다. 하나의 섹션은 아웃바운드(또는 전송될) 정보를 처리할 수 있고, 다른 섹션은 인바운드(또는 수신된) 정보를 처리할 수 있다. 그리고, PCIe 인터페이스 디바이스들(2100a, 2100b)은 정보를 통신하기 위해 트랜잭션 레이어 패킷들을 사용할 수 있다.
트랜잭션 레이어는 트랜잭션 레이어 패킷들을 모으고(assembly) 분해(disassembly)할 수 있다. 그리고, 트랜잭션 레이어는 스플릿 트랜잭션(split tansaction), 즉, 타겟 시스템이 응답에 필요한 데이터를 수집하는 동안 링크로 다른 트래픽을 전달하게 해주는 트랜잭션을 구현할 수 있다. 예컨대, 트랜잭션 레이어는 요청과 응답이 시간적으로 분리되어 있는 트랜잭션을 구현할 수 있다. 일 실시예에서, 네 개의 트랜잭션 어드레스 공간은 구성 어드레스 공간, 메모리 어드레스 공간, 입력/출력 어드레스 공간, 및 메시지 어드레스 공간을 포함할 수 있다. 메모리 공간 트랜잭션은 데이터를 메모리-매핑된 장소로/로부터 전달하는 읽기 요청 및 쓰기 요청 중 하나 이상을 포함할 수 있다. 일 실시예에서, 메모리 공간 트랜잭션은 두 가지 상이한 어드레스 포맷, 예를 들면, 32-비트 어드레스와 같이 짧은 어드레스 포맷, 또는 64-비트 어드레스와 같이 긴 어드레스 포맷을 사용할 수 있다. 구성 공간 트랜잭션은 PCIe 시스템의 구성 공간에 액세스하는데 사용될 수 있다. 구성 공간으로의 트랜잭션은 읽기 요청 및 쓰기 요청을 포함할 수 있다. 메시지 공간 트랜잭션(또는, 메시지)은 PCIe 시스템들 간의 대역-내(in-band) 통신을 지원하기 위해 정의될 수 있다.
트랜잭션 레이어는 링크 구성 정보(Link configuration information) 등을 저장할 수 있다. 그리고, TLP를 생성하거나, 외부로부터 수신한 TLP를 페이로드(payload) 또는 상태 정보(status information)로 변환할 수 있다.
데이터 링크 레이어는 링크 관리(link management) 및 에러 검출과 에러 정정을 포함하는 데이터 무결성(data integrity) 기능을 수행할 수 있다. 구체적으로, 데이터 링크 레이어의 송신 측은 트랜잭션 레이어에서 수집된(assembled) TLPs를 수용(accept)하고, 데이터 보호 코드를 부여하고, TLP 시퀀스 번호를 계산할 수 있다. 그리고, 데이터 링크 레이어의 송신 측은 링크를 통해 전송하기 위해 데이터 보호 코드와 TLP 시퀀스 번호를 피지컬 레이어로 전송할 수 있다. 데이터 링크 레이어의 수신 측은 피지컬 레이어로부터 수신된 TLPs의 데이터 무결성을 체크하고, 추가적인 처리를 위해 트랜잭션 레이어로 TLPs를 전송할 수 있다.
피지컬 레이어는 인터페이스 동작을 위한 모든 회로(all circuitry)를 포함할 수 있다. 여기서, 모든 회로는 드라이버, 입력 버퍼, 직렬-병렬 변환 회로, 병렬-직렬 변환 회로, 위상 동기 루프(phase locked loop(PLLs)), 및 임피던스 매칭 회로를 포함할 수 있다.
그리고, 피지컬 레이어는 패킷을 외부 PCIe 시스템에 물리적으로 전송하는 논리 서브블록 및 전기 서브블록을 포함할 수 있다. 여기서, 논리 서브블록은 피지컬 레이어의 ‘디지털’ 기능에 필요한 역할을 수행할 수 있다. 이와 관련하여, 논리 서브블록은 물리 서브블록에 의해 전송하기 위한 발송 정보를 준비하는 송신 섹션과 수신된 정보를 데이터 링크 레이어에 전달하기 전에 수신된 정보를 식별하고 준비하는 수신 섹션을 포함할 수 있다. 피지컬 레이어는 송신기 및 수신기를 포함할 수 있다. 송신기는 논리 서브블록에 의해 송신기가 직렬화하여 외부 장치에 송신하는 심볼을 공급받을 수 있다. 그리고, 수신기는 외부 장치로부터 직렬화된 심볼을 공급받고 수신된 신호를 비트스트림으로 변환할 수 있다. 비트스트림은 역직렬화되어 논리 서브블록에 공급될 수 있다. 즉, 피지컬 레이어는 데이터 링크 레이어로부터 수신한 TLPs를 직렬화된 형식(serialized format)으로 변환하고, 외부 장치로부터 수신한 패킷을 역직렬화된 형식(deserialized format)으로 변환할 수 있다. 그리고, 피지컬 레이어는 인터페이스 초기화 및 유지에 관련된 논리적 기능들을 포함할 수 있다.
도 4에서는 PCIe 인터페이스 디바이스(2100a, 2100b)의 구조를 예시적으로 도시하였으나, 퀵 패스 인터커넥트(Quick Path Interconnect) 구조, 차세대 고성능 컴퓨팅 인터커넥트(Next Generation High Performance Computing Interconnect) 구조 또는 다른 계층화된 구조 등과 같은 임의의 형태를 포함할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 PCIe 디바이스를 설명하기 위한 도면이다.
도 5에 도시된 PCIe 디바이스(500)는 도 1 내지 3에 도시된 PCIe 디바이스(2000, 2000-1, 2000-2, 2000-3)를 나타낼 수 있다.
도 5를 참조하면, PCIe 디바이스(500)는 처리량 산출부(510), 처리량 분석 정보 생성부(520), 지연 시간 정보 생성부(530), 커맨드 룩업 테이블 저장부(540) 및 커맨드 페치부(550)를 포함할 수 있다.
처리량 산출부(510)는 복수의 펑션들 각각의 처리량을 산출할 수 있다. 처리량은 펑션들의 성능을 나타내는 지표일 수 있다. 처리량 산출부(510)는 주기적으로 펑션들의 처리량을 산출할 수 있다.
일 실시 예에서, 처리량 산출부(510)는 복수의 펑션들이 공유하는 데이터 경로에서 복수의 펑션들의 점유율을 기초로 처리량을 산출할 수 있다. 일 실시 예에서, 데이터 경로는 PCIe 인터페이스 디바이스와 복수의 DMA 장치들을 연결하는 경로일 수 있다.
예를 들어, 처리량 산출부(510)는 단위 시간당 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 복수의 펑션들의 점유율을 산출할 수 있다. 복수의 펑션들은 데이터 경로를 통해 트랜잭션 레이어 패킷을 전송할 때 펑션의 식별 정보를 포함시켜 전송할 수 있다. 이에 따라, 처리량 산출부(510)는 트랜잭션 레이어 패킷에 포함된 펑션의 식별 정보를 기초로 복수의 펑션들의 점유율을 산출할 수 있다. 처리량 산출부(510)는 산출된 점유율을 기초로 복수의 펑션들의 처리량을 산출할 수 있다. 처리량 산출부(510)는 산출된 처리량을 처리량 분석 정보 생성부(520)로 제공할 수 있다.
일 실시 예에서, 처리량 산출부(510)는 복수의 펑션들 각각의 리드 동작에 대응되는 처리량 및 쓰기 동작에 대응되는 처리량을 산출할 수 있다. 이때, 리드 동작에 대응되는 처리량은 펑션의 리드 동작 시 산출된 처리량을 나타내고, 쓰기 동작에 대응되는 처리량은 펑션의 쓰기 동작 시 산출된 처리량을 나타낼 수 있다. 따라서, 복수의 펑션들 각각의 처리량은 리드 동작에 대응되는 처리량 및 쓰기 동작에 대응되는 처리량을 포함할 수 있다.
처리량 분석 정보 생성부(520)는 복수의 펑션들 각각에 설정된 제한 처리량 및 산출된 처리량을 기초로 복수의 펑션들 각각에 대한 처리량 분석 정보를 생성할 수 있다. 예를 들어, 처리량 분석 정보 생성부(520)는 처리량 산출부(510)로부터 제공받은 처리량을 기초로 주기적으로 처리량 분석 정보를 생성할 수 있다.
이때, 제한 처리량은 펑션의 처리량을 제한하기 위해 설정된 임계치일 수 있다. 예를 들어, 처리량 분석 정보 생성부(520)는 호스트(1000)로부터 복수의 펑션들 각각의 제한 처리량에 대한 정보를 수신할 수 있다. 처리량 분석 정보 생성부(520)는 수신된 제한 처리량에 대한 정보에 따라 복수의 펑션들 각각의 제한 처리량을 설정할 수 있다.
이때, 처리량 분석 정보는 제한 처리량 및 산출된 처리량을 비교한 결과를 나타내는 정보일 수 있다. 일 실시 예에서, 처리량 분석 정보는 산출된 처리량이 제한 처리량을 초과하였는지 여부에 대한 정보, 제한 처리량 대비 산출된 처리량의 초과 비율, 제한 처리량 대비 산출된 처리량의 잔여 비율, 펑션이 유휴(idle) 상태인지 여부에 대한 정보 및 산출된 처리량이 펑션에 설정된 최저 성능 임계치보다 낮은지 여부에 대한 정보 중 적어도 하나 이상을 포함할 수 있다. 처리량 분석 정보는 상술한 예시들외에 처리량을 비교 분석하여 획득될 수 있는 다양한 정보들을 포함할 수 있다.
일 실시 예에서, 제한 처리량 대비 산출된 처리량의 초과 비율은 특정 펑션에 대해 산출된 처리량이 특정 펑션에 설정된 제한 처리량을 초과할 때 산출될 수 있다. 예를 들어, 제한 처리량 대비 산출된 처리량의 초과 비율은 아래의 수학식 1을 통해 나타낼 수 있다.
Figure pat00001
일 실시 예에서, 제한 처리량 대비 산출된 처리량의 잔여 비율은 특정 펑션에 대해 산출된 처리량이 특정 펑션에 설정된 제한 처리량을 초과하지 않을 때 산출될 수 있다. 제한 처리량 대비 산출된 처리량의 잔여 비율은 아래의 수학식 2를 통해 나타낼 수 있다.
Figure pat00002
일 실시 예에서, 처리량 분석 정보 생성부(520)는 리드 동작에 대응되는 처리량 분석 정보 및 쓰기 동작에 대응되는 처리량 분석 정보를 생성할 수 있다. 예를 들어, 처리량 분석 정보 생성부(520)는 리드 동작에 대응되는 처리량 및 제한 처리량을 비교할 결과를 기초로 리드 동작에 대응되는 처리량 분석 정보를 생성할 수 있다. 또한, 처리량 분석 정보 생성부(520)는 쓰기 동작에 대응되는 처리량 및 제한 처리량을 비교할 결과를 기초로 쓰기 동작에 대응되는 처리량 분석 정보를 생성할 수 있다. 따라서, 처리량 분석 정보는 리드 동작에 대응되는 처리량 분석 정보 및 쓰기 동작에 대응되는 처리량 분석 정보를 포함할 수 있다.
일 실시 예에서, 최저 성능 임계치는 펑션의 동작 시 레이턴시(latency)가 발생하지 않도록 하기 위한 임계치일 수 있다. 처리량 분석 정보 생성부(520)는 복수의 펑션들 각각에 대한 최저 성능 임계치를 설정할 수 있다.
처리량 분석 정보 생성부(520)는 처리량 분석 정보를 지연 시간 정보 생성부(530)로 제공할 수 있다.
지연 시간 정보 생성부(530)는 처리량 분석 정보를 기초로 복수의 펑션들 각각에 대한 지연 시간을 생성할 수 있다. 이때, 지연 시간은 각 펑션의 커맨드 페치 동작을 지연시키는 정보일 수 있다.
일 실시 예에서, 복수의 펑션들 중 산출된 처리량이 제한 처리량을 초과한 펑션의 지연 시간을 생성하는 경우, 지연 시간 정보 생성부(530)는 제한 처리량 대비 산출된 처리량의 초과 비율을 기초로 펑션의 지연 시간을 증가시킬 수 있다. 예를 들어, 지연 시간 정보 생성부(530)는 초과 비율에 제1 상수 값을 곱한 결과 값을 지연 시간 증가 값으로 산출할 수 있다. 이때, 제1 상수 값은 호스트(1000)의 설정에 따라 다양하게 설정될 수 있다. 지연 시간 정보 생성부(530)는 이전에 생성된 펑션의 이전 지연 시간에서 지연 시간 증가 값만큼 증가한 값을 펑션에 대한 현재 지연 시간으로 산출할 수 있다.
일 실시 예에서, 지연 시간이 초기 값보다 높은 펑션들 중 산출된 처리량이 제한 처리량을 초과하지 않은 펑션의 지연 시간을 생성하는 경우, 지연 시간 정보 생성부(530)는 제한 처리량 대비 산출된 처리량의 잔여 비율을 기초로 펑션의 지연 시간을 감소시킬 수 있다. 일 실시 예에서, 지연 시간의 초기 값은 0일 수 있다. 예를 들어, 지연 시간 정보 생성부(530)는 잔여 비율에 제2 상수 값을 곱한 결과 값을 지연 시간 감소 값으로 산출할 수 있다. 이때, 제2 상수 값은 호스트(1000)의 설정에 따라 다양하게 설정될 수 있다. 지연 시간 정보 생성부(530)는 이전에 생성된 펑션의 이전 지연 시간에서 지연 시간 감소 값만큼 감소한 값을 펑션에 대한 현재 지연 시간으로 산출할 수 있다.
일 실시 예에서, 지연 시간 정보 생성부(530)는 복수의 펑션들 중 유휴 상태를 갖는 펑션 및 산출된 처리량이 최저 성능 임계치보다 낮은 펑션의 지연 시간을 초기 값으로 설정할 수 있다. 이에 따라, 중 유휴 상태를 갖는 펑션 및 산출된 처리량이 최저 성능 임계치보다 낮은 펑션의 지연 시간은 0으로 설정될 수 있다.
일 실시 예에서, 지연 시간은 리드 동작에 대응되는 지연 시간 및 쓰기 동작에 대응되는 지연 시간을 포함할 수 있다. 예를 들어, 지연 시간 정보 생성부(530)는 리드 동작에 대응되는 처리량 분석 정보를 기초로 리드 동작에 대응되는 지연 시간을 생성할 수 있다. 또한, 지연 시간 정보 생성부(530)는 쓰기 동작에 대응되는 처리량 분석 정보를 기초로 쓰기 동작에 대응되는 지연 시간을 생성할 수 있다.
지연 시간 정보 생성부(530)는 지연 시간을 커맨드 룩업 테이블 저장부(540)로 제공할 수 있다.
커맨드 룩업 테이블 저장부(540)는 커맨드 룩업 테이블을 저장할 수 있다.
이때, 커맨드 룩업 테이블은 호스트(1000)로부터 페치할 타겟 커맨드와 관련된 정보를 포함하는 커맨드 관련 정보 및 복수의 펑션들 중 타겟 커맨드에 대응되는 펑션의 지연 시간을 저장할 수 있다. 커맨드 룩업 테이블은 복수의 타겟 커맨드들 각각에 대한 커맨드 관련 정보를 저장할 수 있다. 일 실시 예에서, 커맨드 관련 정보는 호스트(1000) 내 타겟 커맨드가 저장된 주소, 타겟 커맨드가 리드 커맨드인지 또는 쓰기 커맨드인지 여부를 나타내는 정보, 타겟 커맨드에 할당된 펑션의 식별 정보 등을 포함할 수 있다.
커맨드 룩업 테이블 저장부(540)는 호스트(1000)로부터 타겟 커맨드에 대한 커맨드 관련 정보를 수신할 수 있다. 예를 들어, 호스트(1000)는 PCIe 디바이스(500)에 커맨드 수행을 요청하기 위해 서브미션 큐 헤드 도어벨을 업데이트할 수 있다. 이때, 커맨드 룩업 테이블 저장부(540)는 호스트(1000)로부터 커맨드 수행이 요청되는 타겟 커맨드에 대한 커맨드 관련 정보를 수신할 수 있다.
일 실시 예에서, 커맨드 룩업 테이블 저장부(540)는 지연 시간 경과 정보를 커맨드 관련 정보와 연관시켜 저장할 수 있다. 이때, 지연 시간 경과 정보는 커맨드 룩업 테이블에 타겟 커맨드의 커맨드 관련 정보가 저장된 시점으로부터 타겟 커맨드에 대응되는 펑션의 지연 시간이 경과되었는지 여부를 나타내는 정보일 수 있다. 예를 들어, 타겟 커맨드가 리드 커맨드인 경우, 지연 시간 경과 정보는 리드 동작에 대응되는 지연 시간을 기초로 생성될 수 있다. 타겟 커맨드가 쓰기 커맨드인 경우, 지연 시간 경과 정보는 쓰기 동작에 대응되는 지연 시간을 기초로 생성될 수 있다.
일 실시 예에서, 커맨드 룩업 테이블 저장부(540)는 커맨드 관련 정보가 저장된 시점부터 시간을 카운팅하여 지연 시간의 경과 여부를 확인할 수 있다. 예를 들어, 펑션의 지연 시간이 경과된 경우, 지연 시간 경과 정보는 펑션의 지연 시간이 만료되었다는 정보를 포함할 수 있다. 다른 예로, 펑션의 지연 시간이 경과되지 않은 경우, 지연 시간 경과 정보는 펑션의 지연 시간이 만료되지 않았다는 정보를 포함할 수 있다.
커맨드 페치부(550)는 타겟 커맨드의 커맨드 관련 정보 및 타겟 커맨드에 대응되는 펑션의 지연 시간을 기초로 호스트(1000)로부터 타겟 커맨드를 페치할 수 있다.
일 실시 예에서, 커맨드 페치부(550)는 지연 시간 경과 정보를 기초로 타겟 커맨드의 페치 여부를 결정할 수 있다. 예를 들어, 지연 시간 경과 정보에 따라 커맨드 관련 정보가 저장된 시점으로부터 대응되는 펑션의 지연 시간이 경과된 경우, 커맨드 페치부(550)는 호스트(1000)로부터 타겟 커맨드를 페치할 수 있다. 다른 예로, 지연 시간 경과 정보에 따라 커맨드 관련 정보가 저장된 시점으로부터 대응되는 펑션의 지연 시간이 경과되지 않은 경우, 커맨드 페치부(550)는 타겟 커맨드의 커맨드 페치 동작을 지연시킬 수 있다. 이 경우, 커맨드 페치부(550)는 해당 타겟 커맨드에 대한 페치 동작을 스킵하고, 지연 시간이 경과된 다른 타겟 커맨드에 대한 페치 동작을 수행할 수 있다.
본 발명의 일 실시 예에 따르면, 펑션 별로 할당된 지연 시간을 기초로 타겟 커맨드의 페치 동작을 제어함으로써, 펑션 별 성능 제한이 빠르고 정확하게 수행될 수 있다.
도 6는 본 발명의 일 실시 예에 따른 지연 시간 정보를 생성하는 동작을 설명하기 위한 그래프이다.
상단에 도시된 그래프는 경과 시간에 따른 펑션의 지연 시간 변화를 나타낸 그래프일 수 있다. 펑션 i의 지연 시간은 도 5의 지연 시간 정보 생성부(530)에 의해 생성될 수 있다. 하단에 도시된 그래프는 경과 시간에 따른 펑션의 처리량 변화를 나타낸 그래프일 수 있다. 펑션 i의 처리량은 도 5의 처리량 산출부(510)에 의해 생성될 수 있다.
도 6에서 설명되는 펑션 i는 도 3에 도시된 복수의 펑션들 중 어느 하나의 펑션을 나타낼 수 있다. 도 6에서, 펑션 i의 제한 처리량은 1Gb/s로 설정되고, 펑션 i의 최저 성능 임계치는 200Mb/s로 설정된 것으로 가정한다. 펑션 i의 지연 시간의 초기 값은 0인 것으로 가정한다.
T0 이전의 경우, 펑션 i의 처리량이 제한 처리량보다 낮으므로, 펑션 i의 지연 시간은 계속해서 초기 값일 수 있다.
T0에서부터 T1까지, 펑션 i의 처리량이 제한 처리량을 초과하므로, 지연 시간 정보 생성부(530)는 펑션 i의 제한 처리량 대비 산출된 처리량의 초과 비율을 기초로 지연 시간 증가 값을 산출할 수 있다. 이에 따라, 펑션 i의 지연 시간은 지연 시간 증가 값만큼 계속해서 증가할 수 있다.
T1에서부터 T2까지, 펑션의 처리량이 제한 처리량을 초과하지 않고 최저 임계치보다 높으므로, 지연 시간 정보 생성부(530)는 펑션 i의 제한 처리량 대비 산출된 처리량의 잔여 비율을 기초로 지연 시간 감소 값을 산출할 수 있다. 이에 따라, 펑션 i의 지연 시간은 지연 시간 감소 값만큼 계속해서 감소할 수 있다.
T2에서부터 T3까지, 펑션 i의 처리량이 제한 처리량을 초과하므로, 지연 시간 정보 생성부(530)는 펑션 i의 제한 처리량 대비 산출된 처리량의 초과 비율을 기초로 지연 시간 증가 값을 산출할 수 있다. 이에 따라, 펑션 i의 지연 시간은 지연 시간 증가 값만큼 계속해서 증가할 수 있다.
T3에서부터 T4에서는, 펑션 i의 지연 시간이 증가 및 감소가 반복됨에 따라, 펑션 i의 지연 시간이 일정한 값을 유지하는 것으로 가정한다. 이와 같이, 본 발명의 일 실시 예에 따르면, 펑션의 지연 시간을 기초로 커맨드 페치 동작을 제어함으로써, 펑션의 성능 제한이 빠르고 정확하게 수행될 수 있다.
T4에서부터 T5까지, 펑션의 처리량이 제한 처리량을 초과하지 않고 최저 임계치보다 높으므로, 지연 시간 정보 생성부(530)는 펑션 i의 제한 처리량 대비 산출된 처리량의 잔여 비율을 기초로 지연 시간 감소 값을 산출할 수 있다. 이에 따라, 펑션 i의 지연 시간은 지연 시간 감소 값만큼 계속해서 감소할 수 있다.
T5에서, 펑션의 처리량이 최저 임계치보다 낮으므로, 지연 시간 정보 생성부(530)는 펑션 i의 지연 시간을 초기 값으로 설정할 수 있다. 이에 따라, 펑션 i의 지연 시간은 0일 수 있다.
T5에서부터 T6까지, 펑션 i의 처리량이 제한 처리량보다 낮고 펑션 i의 지연 시간이 초기 값을 가진 상태이므로, 펑션 i의 지연 시간은 초기 값을 유지할 수 있다. 즉, 지연 시간이 초기 값인 경우에는, 펑션 i의 처리량이 제한 처리량을 초과하기 전까지 지연 시간이 증가하지 않는다.
T6에서, 펑션 i의 처리량이 제한 처리량을 초과하므로, 지연 시간 정보 생성부(530)는 펑션 i의 제한 처리량 대비 산출된 처리량의 초과 비율을 기초로 지연 시간 증가 값을 산출할 수 있다. 이에 따라, 펑션 i의 지연 시간은 지연 시간 증가 값만큼 계속해서 증가할 수 있다.
도 7은 본 발명의 일 실시 예에 따른 커맨드 페치 동작을 설명하기 위한 도면이다.
도 7을 참조하면, 커맨드 룩업 테이블은 복수의 타겟 커맨드들에 대한 커맨드 관련 정보들(CMD1 INFO~CMD5 INFO) 및 각 커맨드 관련 정보(CMD1 INFO~CMD5 INFO)와 연관된 지연 시간 경과 정보를 저장할 수 있다. 도 7에서는 5개의 타겟 커맨드들에 대한 커맨드 관련 정보들(CMD1 INFO~CMD5 INFO)이 저장된 것으로 가정한다.
커맨드 페치부(550)는 커맨드 룩업 테이블을 기초로 타겟 커맨드들에 대한 커맨드 페치 동작의 수행 여부를 결정할 수 있다. 커맨드 페치부(550)는 커맨드 페치 동작을 수행하는 시점에 커맨드 룩업 테이블에 저장된 커맨드 관련 정보 및 지연 시간 정보를 확인할 수 있다. 커맨드 페치부(550)는 확인 결과에 따라 지연 시간이 만료된 타겟 커맨드들에 대한 커맨드 페치 동작을 수행하고, 지연 시간이 만료되지 않은 타겟 커맨드들에 대한 커맨드 페치 동작을 스킵할 수 있다.
예를 들어, 제1 타겟 커맨드, 제4 타겟 커맨드 및 제5 타겟 커맨드들에 대한 커맨드 관련 정보들(CMD1 INFO, CMD4 INFO, CMD5 INFO)과 연관되어 저장된 지연 시간 정보는 지연 시간 정보가 만료되었다는 정보를 포함할 수 있다. 이 경우, 커맨드 페치부(550)는 호스트(1000)로부터 제1 타겟 커맨드(CMD1), 제4 타겟 커맨드(CMD4) 및 제5 타겟 커맨드(CMD5)를 페치할 수 있다.
이와 달리, 제2 타겟 커맨드 및 제3 타겟 커맨드들에 대한 커맨드 관련 정보들(CMD2 INFO, CMD3 INFO)과 연관되어 저장된 지연 시간 정보는 지연 시간 정보가 만료되지 않았다는 정보를 포함할 수 있다. 이 경우, 커맨드 페치부(550)는 제2 타겟 커맨드(CMD2) 및 제3 타겟 커맨드(CMD3)에 대한 커맨드 페치 동작을 스킵할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 PCIe 디바이스의 동작 방법을 설명하기 위한 순서도이다.
도 8에 도시된 방법은 예를 들어, 도 5에 도시된 PCIe 디바이스(500)에 의해 수행될 수 있다.
도 8을 참조하면, 단계 S801에서, PCIe 디바이스(500)는 복수의 펑션들 각각의 처리량(Throughput)을 산출할 수 있다.
이때, PCIe 디바이스(500)는 단위 시간당 복수의 펑션들이 공유하는 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 데이터 경로에 대한 복수의 펑션들의 점유율을 산출할 수 있다. PCIe 디바이스(500) 점유율을 기초로 처리량을 산출할 수 있다.
단계 S803에서, PCIe 디바이스(500)는 복수의 펑션들 각각에 설정된 제한 처리량 및 복수의 펑션들 각각의 처리량을 기초로 복수의 펑션들 각각에 대한 처리량 분석 정보를 생성할 수 있다.
이때, PCIe 디바이스(500)는 제한 처리량 대비 산출된 처리량 초과 비율을 기초로 복수의 펑션들 중 산출된 처리량이 제한 처리량을 초과한 펑션의 지연 시간을 증가시킬 수 있다.
또한, PCIe 디바이스(500)는 제한 처리량 대비 산출된 처리량의 잔여 비율을 기초로 지연 시간이 초기 값보다 높은 펑션들 중 산출된 처리량이 제한 처리량을 초과하지 않은 펑션의 지연 시간을 감소시킬 수 있다.
또한, PCIe 디바이스(500)는 복수의 펑션들 중 유휴 상태를 갖는 펑션 및 산출된 처리량이 최저 성능 임계치보다 낮은 펑션의 지연 시간을 초기 값으로 설정할 수 있다.
단계 S805에서, PCIe 디바이스(500)는 처리량 분석 정보를 기초로 복수의 펑션들 각각에 대한 지연 시간을 생성할 수 있다.
단계 S807에서, PCIe 디바이스(500)는 호스트로부터 페치할 타겟 커맨드와 관련된 정보를 포함하는 커맨드 관련 정보를 획득할 수 있다.
단계 S809에서, PCIe 디바이스(500)는 커맨드 관련 정보 및 지연 시간을 저장할 수 있다.
단계 S811에서, PCIe 디바이스(500)는 커맨드 관련 정보 및 타겟 커맨드에 대응되는 펑션의 지연 시간을 기초로 호스트로부터 타겟 커맨드를 페치할 수 있다.
도 9는 본 발명의 일 실시 예에 따른 타겟 커맨드를 페치하는 방법을 설명하기 위한 순서도이다.
일 실시 예에서, 도 9에 도시된 방법은 도 8에 도시된 단계 S809 및 S811을 구체화한 방법일 수 있다.
도 9에 도시된 방법은 예를 들어, 도 5에 도시된 PCIe 디바이스(500)에 의해 수행될 수 있다.
도 9를 참조하면, 단계 S901에서, PCIe 디바이스(500)는 커맨드 관련 정보를 저장할 수 있다.
단계 S903에서, PCIe 디바이스(500)는 지연 시간 경과 정보를 커맨드 관련 정보와 연관시켜 저장할 수 있다.
단계 S905에서, PCIe 디바이스(500)는 지연 시간 결과 정보를 기초로 타겟 커맨드에 대응되는 펑션의 지연 시간이 경과하였는지 여부를 판단할 수 있다. 단계 S905에서의 판단 결과에 따라 지연 시간이 경과한 경우, PCIe 디바이스(500)는 단계 S907을 수행할 수 있다.
단계 S907에서, PCIe 디바이스(500)는 호스트로부터 타겟 커맨드를 페치할 수 있다.
이와 달리, 단계 S905에서의 판단 결과에 따라 지연 시간이 경과하지 않은 경우, PCIe 디바이스(500)는 단계 S909을 수행할 수 있다.
단계 S909에서, PCIe 디바이스(500)는 타겟 커맨드의 커맨드 페치 동작을 지연시킬 수 있다.
100: 컴퓨팅 시스템
1000: 호스트
2000: PCIe 디바이스

Claims (20)

  1. 복수의 펑션들(function) 각각의 처리량(Throughput)을 산출하는 처리량 산출부;
    상기 복수의 펑션들 각각에 설정된 제한 처리량 및 상기 산출된 처리량을 기초로 상기 복수의 펑션들 각각에 대해 상기 제한 처리량 및 상기 산출된 처리량을 비교한 결과를 나타내는 처리량 분석 정보를 생성하는 처리량 분석 정보 생성부;
    상기 처리량 분석 정보를 기초로 상기 복수의 펑션들 각각에 대해 커맨드 페치 동작을 지연시키는 지연 시간을 생성하는 지연 시간 정보 생성부;
    호스트로부터 페치할 타겟 커맨드와 관련된 정보를 포함하는 커맨드 관련 정보 및 상기 복수의 펑션들 중 상기 타겟 커맨드에 대응되는 펑션의 지연 시간을 저장하는 커맨드 룩업 테이블 저장부; 및
    상기 커맨드 관련 정보 및 상기 대응되는 펑션의 지연 시간을 기초로 상기 호스트로부터 상기 타겟 커맨드를 페치하는 커맨드 페치부;를 포함하는 PCIe(Peripheral Component Interconnect Express) 디바이스.
  2. 제1 항에 있어서, 상기 처리량 산출부는,
    상기 복수의 펑션들이 공유하는 데이터 경로에서 상기 복수의 펑션들의 점유율을 기초로 상기 처리량을 산출하는 PCIe 디바이스.
  3. 제2 항에 있어서, 상기 처리량 산출부는,
    단위 시간당 상기 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 상기 복수의 펑션들의 점유율을 산출하는 PCIe 디바이스.
  4. 제1 항에 있어서, 상기 처리량 분석 정보 생성부는,
    상기 호스트로부터 상기 복수의 펑션들 각각의 제한 처리량에 대한 정보를 수신하고, 상기 수신된 제한 처리량에 대한 정보에 따라 상기 복수의 펑션들 각각의 제한 처리량을 설정하는 PCIe 디바이스.
  5. 제1 항에 있어서, 상기 처리량 분석 정보는,
    상기 산출된 처리량이 상기 제한 처리량을 초과하였는지 여부에 대한 정보, 상기 제한 처리량 대비 상기 산출된 처리량의 초과 비율, 상기 제한 처리량 대비 상기 산출된 처리량의 잔여 비율, 상기 복수의 펑션들이 유휴(idle) 상태인지 여부에 대한 정보 및 상기 산출된 처리량이 상기 복수의 펑션들 각각에 설정된 최저 성능 임계치보다 낮은지 여부에 대한 정보 중 적어도 하나 이상을 포함하는 PCIe 디바이스.
  6. 제5 항에 있어서, 상기 지연 시간 정보 생성부는,
    상기 복수의 펑션들 중 상기 산출된 처리량이 상기 제한 처리량을 초과한 펑션의 지연 시간을 생성하는 경우, 상기 초과 비율을 기초로 상기 제한 처리량을 초과한 펑션의 지연 시간을 증가시키는 PCIe 디바이스.
  7. 제5 항에 있어서, 상기 지연 시간 정보 생성부는,
    상기 지연 시간이 초기 값보다 높은 펑션들 중 상기 산출된 처리량이 상기 제한 처리량을 초과하지 않은 펑션의 지연 시간을 생성하는 경우, 상기 잔여 비율을 기초로 상기 제한 처리량을 초과하지 않은 펑션의 지연 시간을 감소시키는 PCIe 디바이스.
  8. 제5 항에 있어서, 상기 지연 시간 정보 생성부는,
    상기 복수의 펑션들 중 상기 유휴 상태를 갖는 펑션 및 상기 산출된 처리량이 상기 최저 성능 임계치보다 낮은 펑션의 지연 시간을 초기 값으로 설정하는 PCIe 디바이스.
  9. 제1 항에 있어서, 상기 커맨드 룩업 테이블 저장부는,
    상기 커맨드 관련 정보가 저장된 시점으로부터 상기 대응되는 펑션의 지연 시간이 경과되었는지 여부를 나타내는 지연 시간 경과 정보를 상기 커맨드 관련 정보와 연관시켜 저장하는 PCIe 디바이스.
  10. 제9 항에 있어서, 상기 커맨드 페치부는,
    상기 지연 시간 경과 정보에 따라 상기 커맨드 관련 정보가 저장된 시점으로부터 상기 대응되는 펑션의 지연 시간이 경과된 경우, 상기 호스트로부터 상기 타겟 커맨드를 페치하는 PCIe 디바이스.
  11. 제9 항에 있어서, 상기 커맨드 페치부는,
    상기 지연 시간 경과 정보에 따라 상기 커맨드 관련 정보가 저장된 시점으로부터 상기 대응되는 펑션의 지연 시간이 경과되지 않은 경우, 상기 타겟 커맨드의 커맨드 페치 동작을 지연시키는 PCIe 디바이스.
  12. 제1 항에 있어서, 상기 산출된 처리량은,
    상기 복수의 펑션들 각각의 리드 동작에 대응되는 처리량 및 쓰기 동작에 대응되는 처리량을 포함하고,
    상기 처리량 분석 정보는,
    상기 리드 동작에 대응되는 처리량 분석 정보 및 상기 쓰기 동작에 대응되는 처리량 분석 정보를 포함하고,
    상기 지연 시간은,
    상기 리드 동작에 대응되는 지연 시간 및 상기 쓰기 동작에 대응되는 지연 시간을 포함하는 PCIe 디바이스.
  13. 복수의 펑션들(function) 각각의 처리량(Throughput)을 산출하는 단계;
    상기 복수의 펑션들 각각에 설정된 제한 처리량 및 상기 산출된 처리량을 기초로 상기 복수의 펑션들 각각에 대해 상기 제한 처리량 및 상기 산출된 처리량을 비교한 결과를 나타내는 처리량 분석 정보를 생성하는 단계;
    상기 처리량 분석 정보를 기초로 상기 복수의 펑션들 각각에 대해 커맨드 페치 동작을 지연시키는 지연 시간을 생성하는 단계;
    호스트로부터 페치할 타겟 커맨드와 관련된 정보를 포함하는 커맨드 관련 정보를 획득하는 단계; 및
    상기 커맨드 관련 정보 및 상기 복수의 펑션들 중 상기 타겟 커맨드에 대응되는 펑션의 지연 시간을 기초로 상기 호스트로부터 상기 타겟 커맨드를 페치하는 단계;를 포함하는 PCIe(Peripheral Component Interconnect Express) 디바이스의 동작 방법.
  14. 제13 항에 있어서, 상기 산출하는 단계는,
    단위 시간당 상기 복수의 펑션들이 공유하는 데이터 경로를 통해 처리되는 트랜잭션 레이어 패킷의 양을 기초로 상기 데이터 경로에 대한 상기 복수의 펑션들의 점유율을 산출하는 단계; 및
    상기 점유율을 기초로 상기 처리량을 산출하는 단계;를 포함하는 PCIe 디바이스의 동작 방법.
  15. 제13 항에 있어서, 상기 처리량 분석 정보는,
    상기 산출된 처리량이 상기 제한 처리량을 초과하였는지 여부에 대한 정보, 상기 제한 처리량 대비 상기 산출된 처리량의 초과 비율, 상기 제한 처리량 대비 상기 산출된 처리량의 잔여 비율, 상기 복수의 펑션들이 유휴(idle) 상태인지 여부에 대한 정보 및 상기 산출된 처리량이 상기 복수의 펑션들 각각에 설정된 최저 성능 임계치보다 낮은지 여부에 대한 정보 중 적어도 하나 이상을 포함하는 PCIe 디바이스의 동작 방법.
  16. 제15 항에 있어서, 상기 지연 시간을 생성하는 단계는,
    상기 초과 비율을 기초로 상기 복수의 펑션들 중 상기 산출된 처리량이 상기 제한 처리량을 초과한 펑션의 지연 시간을 증가시키는 단계를 포함하는 PCIe 디바이스의 동작 방법.
  17. 제15 항에 있어서, 상기 지연 시간 정보 생성하는 단계는,
    상기 잔여 비율을 기초로 상기 지연 시간이 초기 값보다 높은 펑션들 중 상기 산출된 처리량이 상기 제한 처리량을 초과하지 않은 펑션의 지연 시간을 감소시키는 단계를 포함하는 PCIe 디바이스의 동작 방법.
  18. 제15 항에 있어서, 상기 지연 시간 정보를 생성하는 단계는,
    상기 복수의 펑션들 중 상기 유휴 상태를 갖는 펑션 및 상기 산출된 처리량이 상기 최저 성능 임계치보다 낮은 펑션의 지연 시간을 초기 값으로 설정하는 단계를 포함하는 PCIe 디바이스의 동작 방법.
  19. 제13 항에 있어서,
    상기 커맨드 관련 정보를 저장하는 단계; 및
    상기 커맨드 관련 정보가 저장된 시점으로부터 상기 대응되는 펑션의 지연 시간이 경과되었는지 여부를 나타내는 지연 시간 경과 정보를 상기 커맨드 관련 정보와 연관시켜 저장하는 단계;를 더 포함하는 PCIe 디바이스의 동작 방법.
  20. 제19 항에 있어서, 상기 페치하는 단계는,
    상기 지연 시간 경과 정보에 따라 상기 커맨드 관련 정보가 저장된 시점으로부터 상기 대응되는 펑션의 지연 시간이 경과된 경우, 상기 호스트로부터 상기 타겟 커맨드를 페치하는 단계; 및
    상기 지연 시간 경과 정보에 따라 상기 커맨드 관련 정보가 저장된 시점으로부터 상기 대응되는 펑션의 지연 시간이 경과되지 않은 경우, 상기 타겟 커맨드의 커맨드 페치 동작을 지연시키는 단계;를 포함하는 PCIe 디바이스의 동작 방법.
KR1020210035522A 2021-03-18 2021-03-18 PCIe 디바이스 및 그 동작 방법 KR102529761B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210035522A KR102529761B1 (ko) 2021-03-18 2021-03-18 PCIe 디바이스 및 그 동작 방법
US17/467,078 US11741039B2 (en) 2021-03-18 2021-09-03 Peripheral component interconnect express device and method of operating the same
CN202111206762.3A CN115114013A (zh) 2021-03-18 2021-10-18 高速外围组件互连装置及其操作方法
TW110145466A TW202238399A (zh) 2021-03-18 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
KR1020210035522A KR102529761B1 (ko) 2021-03-18 2021-03-18 PCIe 디바이스 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20220130518A true KR20220130518A (ko) 2022-09-27
KR102529761B1 KR102529761B1 (ko) 2023-05-09

Family

ID=83284787

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210035522A KR102529761B1 (ko) 2021-03-18 2021-03-18 PCIe 디바이스 및 그 동작 방법

Country Status (4)

Country Link
US (1) US11741039B2 (ko)
KR (1) KR102529761B1 (ko)
CN (1) CN115114013A (ko)
TW (1) TW202238399A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220300442A1 (en) * 2021-03-18 2022-09-22 SK Hynix Inc. Peripheral component interconnect express device and method of operating the same
US11928070B2 (en) * 2021-04-13 2024-03-12 SK Hynix Inc. PCIe device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007065847A (ja) * 2005-08-30 2007-03-15 Ricoh Co Ltd 情報処理システム、プログラムおよびデータ転送方法
KR20190032716A (ko) * 2017-09-19 2019-03-28 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법
US20190146684A1 (en) * 2017-11-13 2019-05-16 Western Digital Technologies, Inc. System and method for qos over nvme virtualization platform using adaptive command fetching
KR20200016810A (ko) * 2018-08-07 2020-02-17 마벨 월드 트레이드 리미티드 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 서비스의 품질을 제공하기 위한 장치 및 방법
KR20200073592A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR102238652B1 (ko) * 2014-11-12 2021-04-09 삼성전자주식회사 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003019394A1 (en) 2001-08-24 2003-03-06 Intel Corporation A general input/output architecture, protocol and related methods to support legacy interrupts
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
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
JP6146306B2 (ja) * 2011-10-28 2017-06-14 日本電気株式会社 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
IN2013KN03842A (ko) 2012-10-27 2015-05-01 Huawei Tech Co Ltd
US20140281099A1 (en) 2013-03-14 2014-09-18 Broadcom Corporation METHOD, SYSTEM, AND COMPUTER PROGRAM PRODUCT FOR CONTROLLING FLOW OF PCIe TRANSPORT LAYER PACKETS
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
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
US10089275B2 (en) 2015-06-22 2018-10-02 Qualcomm Incorporated Communicating transaction-specific attributes in a peripheral component interconnect express (PCIe) system
US10176126B1 (en) 2015-06-29 2019-01-08 Cadence Design Systems, Inc. Methods, systems, and computer program product for a PCI implementation handling multiple packets
US10606510B2 (en) 2015-10-29 2020-03-31 Netflix, Inc. Memory input/output management
US10157153B2 (en) 2016-02-03 2018-12-18 Qualcomm Incorporated Inline cryptographic engine (ICE) for peripheral component interconnect express (PCIe) systems
US10621125B2 (en) * 2016-06-28 2020-04-14 Nec Corporation Identifier-based packet request processing
KR20180114972A (ko) 2017-04-11 2018-10-22 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
WO2019036217A1 (en) 2017-08-18 2019-02-21 Missing Link Electronics, Inc. HETEROGENEOUS TRANSPORT BASED ON PACKETS
CN109656854A (zh) * 2017-10-12 2019-04-19 光宝科技股份有限公司 固态储存装置的重置电路及其重置方法
US10678478B2 (en) 2018-08-24 2020-06-09 Apple Inc. Ordering memory requests based on access efficiency
US11971861B2 (en) * 2019-03-15 2024-04-30 Microsoft Technology Licensing, Llc Providing scalable and concurrent file systems
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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007065847A (ja) * 2005-08-30 2007-03-15 Ricoh Co Ltd 情報処理システム、プログラムおよびデータ転送方法
KR102238652B1 (ko) * 2014-11-12 2021-04-09 삼성전자주식회사 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법
KR20190032716A (ko) * 2017-09-19 2019-03-28 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법
US20190146684A1 (en) * 2017-11-13 2019-05-16 Western Digital Technologies, Inc. System and method for qos over nvme virtualization platform using adaptive command fetching
KR20200016810A (ko) * 2018-08-07 2020-02-17 마벨 월드 트레이드 리미티드 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 서비스의 품질을 제공하기 위한 장치 및 방법
KR20200073592A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Also Published As

Publication number Publication date
US11741039B2 (en) 2023-08-29
TW202238399A (zh) 2022-10-01
US20220300448A1 (en) 2022-09-22
KR102529761B1 (ko) 2023-05-09
CN115114013A (zh) 2022-09-27

Similar Documents

Publication Publication Date Title
US20200278880A1 (en) Method, apparatus, and system for accessing storage device
WO2018120986A1 (zh) 转发报文的方法和物理主机
US20050235068A1 (en) Computer system sharing an I/O device between logical partitions
US8458368B2 (en) System and method for discovering and protecting shared allocated resources in a shared virtualized I/O device
US10474606B2 (en) Management controller including virtual USB host controller
US8996774B2 (en) Performing emulated message signaled interrupt handling
KR102568906B1 (ko) PCIe 디바이스 및 그 동작 방법
WO2021051919A1 (zh) 一种数据转发芯片及服务器
KR102529761B1 (ko) PCIe 디바이스 및 그 동작 방법
US20200401751A1 (en) Systems & methods for multi pf emulation using vfs in ssd controller
US8312461B2 (en) System and method for discovering and protecting allocated resources in a shared virtualized I/O device
US11928070B2 (en) PCIe device
US11314673B2 (en) Configurable multi-function PCIe endpoint controller in an SoC
US20220300442A1 (en) Peripheral component interconnect express device and method of operating the same
KR102570943B1 (ko) PCIe 디바이스 및 그 동작 방법
KR102568909B1 (ko) PCIe 펑션 및 그 동작 방법
US8225007B2 (en) Method and system for reducing address space for allocated resources in a shared virtualized I/O device
US20230350824A1 (en) Peripheral component interconnect express device and operating method thereof
US11983136B2 (en) PCIe device and operating method thereof
US20230318606A1 (en) Interface device and method of operating the same
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same

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