KR20160016557A - 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템 - Google Patents

멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템 Download PDF

Info

Publication number
KR20160016557A
KR20160016557A KR1020150056385A KR20150056385A KR20160016557A KR 20160016557 A KR20160016557 A KR 20160016557A KR 1020150056385 A KR1020150056385 A KR 1020150056385A KR 20150056385 A KR20150056385 A KR 20150056385A KR 20160016557 A KR20160016557 A KR 20160016557A
Authority
KR
South Korea
Prior art keywords
pcie
qos
host
function
command
Prior art date
Application number
KR1020150056385A
Other languages
English (en)
Other versions
KR102387932B1 (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 삼성전자주식회사
Publication of KR20160016557A publication Critical patent/KR20160016557A/ko
Application granted granted Critical
Publication of KR102387932B1 publication Critical patent/KR102387932B1/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/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • G06F9/3855

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템이 제공된다. 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법은, 적어도 하나의 호스트 장치가 복수의 호스트 명령어(host command)를 PCIe(Peripheral Componenet Interconnect Express) 장치에 발행하고, 명령어 아비터(command aribter) 및 인출(fetch) 모듈이 PCIe 펑션 명령어 큐(PCIe function command queue)로부터 상기 발행된 복수의 명령어를 인출하고, 상기 PCIe 장치의 내부 메모리에 상기 인출된 복수의 명령어를 저장하고, QoS(Quality of Service) 검사기 모듈(checker module)이 상기 복수의 인출된 명령어를 회수(retrieve)하고, 상기 복수의 회수된 명령어 및 페이로드 정보(payload information)에 기반한 자원 분배(resource distribution)를 계산하여 호스트 명령어의 QoS를 유지하는 것을 포함한다.

Description

멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템{A METHOD TO PROVIDE FIXED QUALITY OF SERVICE TO HOST IO COMMANDS IN MULTI-PORT, MULTI-FUNCTION PCIe BASED STORAGE DEVICE}
본 발명은 PCIe(Peripheral component interconnect express) 기반 저장 장치, 더욱 구체적으로는 멀티 포트(multi-port), 멀티 펑션(multi-function) 기반 NAND 플래시 저장 장치 또는 다른 메모리 장치 또는 하나 이상의 PCIe 펑션(PCIe function)을 지원하는 가상화(virtualize) 및 비가상화(Non-virtualize) 저장 장치에서 호스트 I/O 명령어의 일정한 QoS(Quality of Service)를 제공하는 방법과 관련된다.
최근, 플래시 기반 SSD가 용량 및 인기도 모두에서 크게 성장하였다. 요즘 NAND 플래시 저장 장치는 테라바이트(TB) 크기로 사용 가능하고 미래에는 더욱 증가할 것이다.
현재 시장 경향은 PCIe 기반 NAND 장치응 데이터 센터 시장뿐만 아니라 엔터프라이즈 분야에서도 큰 수요가 있다는 것을 나타낸다. 엔터프라이즈 저장 분야에서 멀티패스(multi-path)와 가상화(virtualization)는 저장 장치의 두 가지 중요한 특징이다. 저장 장치는 다양한 목적의 다중 호스트 엔티티(multiple host entity)에 의해 사용된다. 그러므로, 일정한 QoS가 저장 장치를 사용하는 다중 호스트 엔티티 사이의 공정성(fairness)을 유지하는 데에 매우 중요하다.
QoS는 유저 저장 장치가 호스트 엔티티 요청에 반응하는 시간을 말한다. 멀티 펑션 장치에서, 이 시간은 장치 상에서 다양한 종류의 동작을 수행하는 호스트들 사이에서 일정해야 한다.
선행 기술에서, 저장 장치를 액세스하는 가상화된 환경에서의 각각의 호스트는 배분된 작업에 따라 장치를 사용한다. 멀티미디어 애플리케이션(multimedia application)을 실행하는 호스트는 과중한 I/O 동작들을 제공받고, 다른 호스트는 온라인 트랜잭션 프로세싱(Online Transaction Processing; OLTP)을 실행하거나 데이터베이스를 실행할 것이다. 만약 저장 장치가 각각의 호스트들로부터의 필요한 요청을 알지 못한다면, 각각의 호스트에 대한 QoS는 동적으로 변화할 것이며 예측할 수 없게 된다. 이러한 환경에서, 장치 생산자는 OLTP와 같은 동작에서 중요한 각각의 호스트에 대한 일정한 서비스 시간을 보장할 수 없다.
본 발명이 해결하고자 하는 기술적 과제는 일정한 QoS를 PCIe 장치를 액세스하는 모든 호스트 장치에 일정한 QoS를 제공하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 일정한 QoS를 PCIe 장치를 액세스하는 모든 호스트 장치에 일정한 QoS를 제공하는 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 PCIe 장치의 호스트 명령어의 QoS 유지 방법은, 적어도 하나의 호스트 장치가 복수의 호스트 명령어(host command)를 PCIe(Peripheral Componenet Interconnect Express) 장치에 발행하고, 명령어 아비터(command aribter) 및 인출(fetch) 모듈이 PCIe 펑션 명령어 큐(PCIe function command queue)로부터 상기 발행된 복수의 명령어를 인출하고, 상기 PCIe 장치의 내부 메모리에 상기 인출된 복수의 명령어를 저장하고, QoS(Quality of Service) 검사기 모듈(checker module)이 상기 복수의 인출된 명령어를 회수(retrieve)하고, 상기 복수의 회수된 명령어 및 페이로드 정보(payload information)에 기반한 자원 분배(resource distribution)를 계산하여 호스트 명령어의 QoS를 유지하는 것을 포함한다.
본 발명의 몇몇 실시예에서, 각각의 명령어의 실행 시간을 결정하여 상기 PCIe 장치의 QoS 요구를 제공하는 것을 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 하나 이상의 계류 명령어(pending command)를 대기 큐(wait queue)에 푸시하고, 상기 실행 시간 이후에 상기 하나 이상의 계류 명령어의 QoS를 계산하는 것을 더 포함하되, 상기 명령어의 실행 시간은 미리 정한 일정한 QoS 시간일 수 있다.
본 발명의 몇몇 실시예에서, 상기 QoS 검사기 모듈은 상기 QoS를 계산한 이후에 상기 명령어를 자원 할당에 기반한 다중 작업으로 분리할 수 있다.
본 발명의 몇몇 실시예에서, 상기 자원 분배는 적어도 하나의 메모리 할당 및 CPU 할당을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 자원 할당은 하나 이상의 PCIe 포트에 기반할 수 있다.
본 발명의 몇몇 실시예에서, 상기 자원 분배는 하나 이상의 물리적 펑션(physical function; PF) 또는 가상 펑션(virtual function; VP)에 기반할 수 있다.
본 발명의 몇몇 실시예에서, 상기 QoS는 동일한 실행 가중치(weightage of execution)와 자원 할당을 갖는 복수의 PCIe 펑션 및 서로 다른 실행 가중치를 갖는 복수의 PCIe 펑션 중 어느 하나로부터 계산될 수 있다.
본 발명의 몇몇 실시예에서, 각각의 PCIe 펑션에 배분된 고정 가중치(fixed weightage)에 기반한 자원 분배를 계산하는 것을 더 포함하되, 상기 가중치는 장치 사용자로부터 배분될 수 있다.
본 발명의 몇몇 실시예에서, 각각의 PCIe 펑션의 가중치는 적어도 하나의 사용자 고유 인풋 아웃(input out) 명령어 또는 임의의 사이드 밴드 관리 프로토콜(side band management protocol)에 기반할 수 있다.
본 발명의 몇몇 실시예에서, 상기 QoS 검사기 모듈은 상기 페이로드를 검출하고 상기 PCIe 장치의 명령어 페이로드를 사용 가능한 자원에 기반하여 정규화(normalize)할 수 있다.
본 발명의 몇몇 실시예에서, 상기 QoS는 각각의 PCIe 펑션에서 상기 PCIe 펑션으로부터의 전체 페이로드까지 상기 PCIe 장치들의 가용한 전체 프리 리소스(free resource)로 정의될 수 있다.
본 발명의 몇몇 실시예에서, 상기 PCIe 장치는 멀티 포트(multi-port), 멀티 평선(multifunction) 또는 멀티 포트 및 멀티 펑션 저장 장치 중 어느 하나일 수 있다.
본 발명의 몇몇 실시예에서, 상기 PCIe 펑션은 가상 펑션(VF) 또는 물리적 펑션(PF) 중 어느 하나일 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 PCIe 장치의 호스트 명령어의 QoS 유지 시스템은, PCIe 디바이스로 복수의 호스트 명령어를 발행하는 적어도 하나의 호스트 장치, PCIe 펑션 명령어 큐로부터 상기 발행된 복수의 명령어를 인출하는 명령어 아비터 및 인출 모듈, PCIe 장치의 내부 메모리에 상기 인출된 복수의 명령어를 저장하는 저장 모듈 및 상기 복수의 인출된 명령어를 회수하고, 상기 복수의 명령어 및 페이로드 정보에 기반한 자원 분배를 계산하는 QoS 검사기 모듈을 포함한다.
본 발명의 몇몇 실시예에서, 각각의 명령어의 실행 시간을 결정하여 상기 PCIe 장치의 QoS 요구를 제공하는 적어도 하나의 모듈을 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 하나 이상의 계류 명령어를 대기 큐에 푸시하고, 상기 실행 시간 이후에 상기 하나 이상의 계류 명령어의 QoS를 계산하는 것을 더 포함하되, 상기 명령어의 실행 시간은 미리 정한 일정한 QoS 시간인 적어도 하나의 모듈을 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 QoS 검사기 모듈은 상기 QoS를 계산한 이후에 상기 명령어를 자원 할당에 기반한 다중 작업으로 분리할 수 있다.
본 발명의 몇몇 실시예에서, 상기 자원 분배는 적어도 하나의 메모리 할당 및 CPU 할당을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 자원 분배는 하나 이상의 PCIe 포트 및 하나 이상의 물리 펑션(PF) 또는 가상 펑션(VF)에 기반할 수 있다.
도 1은 본 발명이 일 실시예에 따른 SR-IOV 구성을 가진 일반적인 플랫폼의 구조를 도시하는 개략적인 블록도이다.
도 2는 본 발명의 일 실시예에 따른 가중 펑션 없이 QoS를 계산하는 방법을 도시한 개략도이다.
도 3은 본 발명의 일 실시예에 따른 가중 펑션을 이용한 QoS 계산 방법을 도시한 개략도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 발명의 다양한 실시예는 PCIe 펑션을 통해 PCIe 기반 NAND 저장 장치를 액세스하는 모든 호스트 엔티티들에 일정한 QoS를 제공하는 방법을 개시하며, PCIe 펑션은 물리적 펑션(Physical Function; PF) 또는 가상 펑션(Virtual Function; VF)이 될 수 있다. 이 방법은 하나 이상의 PCIe 펑션을 지원하는 가상화된 저장 장치 및 비가상화된 저장장치 모두에 적용된다.
본 발명에 따르면, 멀티 포트, 멀티 펑션 PCIe 장치는 하나 이상의 PCIe 포트 및 가상 펑션 또는 물리적 펑션인 하나 이상의 PCIe 펑션을 포함한다. 다수의 포트는 일반적으로 대체 경로(failover path)로 사용되며 주 경로(main path)로도 사용된다. 대체는 주 포트(main port)가 임의의 호스트로부터의 요청을 수용하는 것에 실패한 경우, 대체 포트가 서비스를 지속시키기 위해 사용되는 것을 의미한다. 이러한 구성은 엔터프라이즈 시장에서 정지 시간(down time)을 방지하기 위해, 다수의 경로가 구현되어 저장 장치를 액세스하는 고가용성 솔루션(high availability solution)에서 요구된다. 모든 경로가 주 경로로 사용되는 경우에, 모든 PCIe 펑션은 호스트 엔티티로부터 서비스 요청을 받는다
PCIe 기반 가상화를 지원하는 저장 장치는 이하 두 가지 사양 중 어느 하나를 구현한다.
단일 루트 입출력 가상화(Single Root Input Output Virtualization; SR-IOV)
다중 루트 입출력 가상화(Multi Root Input Output Virtualization; MR-IOV)
I/O 가상화 기술은 PCIe 기반 가상화 이전에도 존재하였으나 이에 선천적인 문제가 존재하였고, 따라서 이하에서는 자세하게 설명하지 않는다. 이는 SR-IOV 또는 MR-IOV와 같은 산업 표준에 기반하지 않는다. PCIe 기반 가상화의 주된 장점은 저장 장치가 선천적으로 자원을 공유하게 된다는 것이다. 그러므로, 메모리 스페이스(Memory Space), IO 큐(IO Queue), 각각의 인터페이스를 위한 인터럽트 및 명령어 처리와 같은 모든 자원은 각각의 PCIe 펑션에 고유하게 노출된다. 각각의 PCIe 펑션에 분리된 인터페이스를 가짐으로써, SR-IOV 또는 MR-IOV 가능한 저장 장치는 어떠한 중간층(middle layer)이 개입됨이 없이 호스트로부터 동시에 명령어를 수신하여, 결과적으로 호스트 레이턴시(latency)를 감소시킨다. 이러한 구현에서 각각의 PCIe 펑션은 독립적이고 다른 PCIe 펑션의 활동에 대해 알지 못한다.
PCIe 기반 가상화에서의 직접 자원 배분은 매우 빠른 I/O를 제공하고 I/O 장치들의 공유를 방지한다. SR-IOV는 호스트 머신 내의 단일 루트 펑션(예를 들어 저장 장치)이 다수의 분리된 물리적 장치로 보이는 메커니즘을 제공한다.
도 1은 본 발명이 일 실시예에 따른 SR-IOV 구성을 가진 일반적인 플랫폼의 구조를 도시하는 개략적인 블록도(100)이다. 본 발명에 따르면, 하나의 저장 장치(102)가 다수의 가상 머신(Virtual Machines; VM)(104)에 연결된다. SR-IOV 가능한 장치는 하이퍼바이저(Hypervisor) 또는 가상 중개자(Virtual Intermediary; VI)(106)로 구성되어 PCI 구성 공간(configuration space)에서 기본 주소 레지스터(Base Address Register; BAR)을 갖는 구성 공간을 갖는 다수의 펑션들로 나타난다. 하이퍼바이저(106)는 가상 펑션의 실제 구성 공간을 하이퍼바이저(106)에 의해 가상 머신(104a)으로 제공된 구성 공간에 맵핑(mapping)함으로써 하나 이상의 가상 펑션(108)을 가상 머신(104a)에 배분한다.
물리적 펑션은 SR-IOV 또는 MR-IOV 인터페이스를 지원하는 저장 장치의 PCIe 펑션이다. 물리적 펑션은 PCIe 구성 공간에서 SR-IOV의 확장된 능력을 포함한다. 능력은 가상화를 가능하게 하고 가상 펑션을 노출하는 것과 같은 저장 장치의 SR-IOV 기능성을 구성 및 관리하는 것에 사용된다.
가상 펑션은 SR-IOV 또는 MR-IOV 인터페이스를 지원하는 저장 장치 상의 가벼운(lightweight) PCIe 펑션이다. 가상 펑션은 저장 장치 상의 PF와 관련되며, / 저장 장치의 가상화된 인스턴스(instance)를 나타낸다. 각각의 가상 펑션은 고유의 PCIe 구성 공간을 갖는다. 각각의 가상 펑션은 또한 저장 장치 상의 하나 이상의 물리적 자원을 공유한다.
SR-IOV 가능한 장치에서, 물리적 펑션이 먼저 발견되고 PCIe 구성 공간을 읽음으로써, SR-IOV 가능한 호스트가 지원되는 모든 가상 펑션들을 스캔하고 이를 열거할 수 있으며 이러한 가상 펑션은 가상 머신으로 배분될 수 있다.
본 발명의 일 실시예에 따르면, 멀티 펑션, 멀티 포트 PCIe 장치에서 QoS를 유지하는 방법이 제안된다. 일정한 QoS 보장을 제공하기 위하여, 저장 장치는 페이로드(payload)를 감지해야 하며 각각의 PCIe 펑션의 패턴을 액세스해야 한다. 저장 장치는 하드웨어 또는 펌웨어 또는 그 모두로 페이로드를 감지하는 “QoS 검사기(checker)” 요소를 구현한다. 페이로드 정보 및 가용한 자원들을 사용함으로써, 저장 장치는 QoS 요구를 만족시키기 위해 얼마나 긴 명령어가 실행되어야 하는지를 나타내고, 가용한 자원에 따라 호스트 명령어 페이로드를 정상화(normalize)시킨다.
QoS가 계산되는 것에는 두 가지 경우가 있다.
1. 모든 PCIe 펑션이 실행 및 자원 분배와 관련하여 동일한 가중치를 갖는다.
2. 가중치는 실행 시작 전 고정되는 자원 할당을 위해 각각의 PCIe 펑션들에 배분된다. 이러한 특별한 경우에 “가중치”의 세부 사항이 저장 장치에 알려지고, 이는 각각의 제조사의 장치 관리 소프트웨어에 의해 프로그램된다.
본 발명은 동일 가중 펑션(Equal Weighted Function)의 QoS를 계산을 다음과 같이 기술할 수 있다.
도 2는 본 발명의 일 실시예에 따른 가중 펑션 없이 QoS를 계산하는 방법을 도시한 개략도(200)이다. 저장 장치(210)를 액세스하려고 시도하는 네 개의 호스트 엔티티(202, 204, 206 및 208)가 저장 장치(210)에 호스트 커맨드를 발행한다. 다른 종류의 애플리케이션을 실행하는 이 호스트들은 다른 페이로드를 요구한다. PCIe 장치에서, 명령어 아비터 및 인출 모듈(212)은 모든 가능한 PCIe 펑션(214, 216, 218 및 220)의 명령어 큐(command queue)로부터 저장 장치의 중재 정책(arbitration policy)에 따라 호스트 명령어를 인출하고 호스트 명령어를 내부 장치 매모리(SRAM/DRAM/TCM)에 저장한다. QoS 검사기 모듈(222)은 호스트 명령어를 차례로 수신하고 수신된 명령어들을(필요한 경우에만) QoS 공식을 적용한 후에 가용한 자원에 따라 다수의 명령어들로 분리한다. 이 QoS 공식은 매우 복잡하며 QoS 타이밍에서 모든 충돌을 피하기 위해 적절한 때에 적용되어야 한다.
단일 호스트의 QoS를 계산하기 위한 기본적인 계산식은:
Figure pat00001
상기 공식은 각각의 호스트가 동일한 공정성 쿼터(fairness quota)를 가지는 명령어 메모리 자원과 특정 시점에서 사용 가능한 프로세서 실행 시간을 계산한다.
본 발명에 따르면, 각각의 계류 명령어는 주어진 메모리 자원으로 실행하고 이후에 명령어는 대기 큐(WaitQueue)로 푸시된다. 미리 정해진 시간 이후에, 전체 발행 명령어에 대하여 QoS가 다시 계산되고 과정이 반복된다. 이러한 식으로 각각의 애플리케이션이 일정한 시간의 서비스 시작을 요하는 엔터프라이즈 시스템에서 매우 중요한 미리 정해진 일정한 QoS 시간으로 저장 장치가 모든 호스트를 대응할 수 있다.
본 발명의 일 실시예에 따르면, 호스트 엔티티에서 저장 장치가 사용되는 예가 이하 설명된다. 총 4개의 호스트가 저장 장치를 사용한다. 모든 4 개의 호스트가 이하의 패턴으로 액세스한다고 가정한다.
I/O 요청:
호스트1:
Figure pat00002
호스트2:
Figure pat00003
호스트3:
Figure pat00004
호스트4:
Figure pat00005
초기 대기 레벨 중재(initial Queue level arbitration) 후 이하는 중재된 명령어 큐이다.
Figure pat00006
모든 PCIe 펑션들이 동일한 가중치를 갖는 것을 감안하면, 장치의 실행 큐(RunQueue)는 이하와 같을 것이다.
A QoS 적용 전
Figure pat00007
B QoS 적용 후
Figure pat00008
상술한 실시예에 따르면, “실행 큐”로부터 QoS를 적용하기 이전에, 명령어들은 다른 데이터 전송 크기를 갖는다는 것이 명백하다. 저장 장치가 각각의 호스트로부터의 데이터 전송 사이즈를 고려하지 않고 명령어 처리를 하기 시작한다면, 몇몇의 호스트는 명령어에 있어 거대한 데이터 전송 사이즈로 인해 결핍될 수 있다. 이러한 문제를 극복하기 위하여, 본 실시예는 일정한 QoS를 제공하고 대응하는 방법을 제공하고, 각각의 호스트의 페이로드는 추적되며 명령어 실행 시간, 장치 자원은 이에 따라 분배된다. QoS 적용 후 “대기 큐”를 고려하면, 모든 호스트 요청에 실행 도중 동일한 가중치 및 공정성이 주어진다는 것은 명확하다. QoS 적용 전, 명령어는 다른 데이터 전송 사이즈라는 것은 매우 명백하다. 만약 저장 장치가 각각의 호스트로부터 데이터 전송 사이즈를 고려하지 않고 명령어 처리를 시작한다면, 몇몇의 호스트는 명령어에 있어 거대한 데이터 전송 사이즈로 인해 결핍될 수 있다. 이러한 문제를 극복하기 위하여, 본 실시예는 일정한 QoS를 제공하고 대응하는 방법을 제공하고, 각각의 호스트의 페이로드는 추적되며 명령어 실행 시간, 장치 자원은 이에 따라 분배된다. 이제 QoS 적용 후 “대기 큐”를 고려하면, 모든 호스트 요청에 실행 도중 동일한 가중치 및 공정성이 주어진다는 것은 명확하다.
본 발명에서, 저장 장치는 PCIe 펑션 당 전체 데이터 전송 길이 카운터(data transfer length counter) 및 가용한 메모리 자원 카운터를 유지한다. 그러므로, 공식에 따라, 프로세서 실행 시간과 각각의 호스트 명령어에 할당된 메모리 자원을 계산한다. 각각의 명령어는 명령어가 다음 반복까지 “대기 큐”에 푸시된 이후에 할당된 메모리 자원 아웃소스(outsource)에 따라 실행한다.
다음 QoS 계산 사이클에서, “중재된 명령어 큐”와 “대기 큐”의 모든 호스트 명령어는 실행에 대하여 고려되고, 계산된 QoS를 적용한 이후에 “실행 큐”가 생성된다. 이러한 식으로 다른 호스트로부터의 명령어가 제공되고 QoS는 호스트에 의해 액세스되는 모든 PCIe 펑션 사이에서 유지될 것이다.
본 발명은 다른 가중치 펑션의 QoS 계산을 다음과 같이 설명할 수 있다:
제조사로부터 몇몇 PCIe 펑션에 내부적으로 연결된 각각의 호스트에 명령어 처리 가중치를 배당하는 요청이 있는 경우이다. QoS 검사는 각각 PCIe 펑션에 배분된 가중치에 따라 좀더 복잡하다.
본 발명의 일 실시예에 따르면, 2 개의 물리적 펑션(PF0,0 및 PF1,0)과 2개의 가상 펑션(VF0,0 및 F1,0)인 4개의 PCIe 펑션이 존재한다.
각각의 PCIe 펑션에 대해 가중치는 하기와 같이 장치 사용자에 의해 배분된다.
PF0,0 -> 40%
VF0,0 -> 10%
PF1,0 -> 40%
VF1,0 -> 10%
그러므로, QoS를 계산하는 동안, 배분된 가중치가 고려되고 실행 시간이 모든 PCIe 펑션을 위해 분리된다.
도 3은 본 발명의 일 실시예에 따른 가중 펑션을 이용한 QoS 계산 방법을 도시한 개략도(300)이다. QoS는 각각의 PCIe 펑션의 가중치에 따라 계산되고 실행 시간은 그에 따라 배분된다. “실행 큐”로부터 물리적 펑션이 더 많은 가중치를 갖는 것이 명확하므로, 그들의 실행 시간은 또한 가상 펑션에 더욱 비교된다. 가중치에 기반하지 않는 QoS의 계산과 유사하게, 초기 실행 이후에, 모든 호스트 명령어가 다음에 실행할 QoS 사이클을 대기할 “대기 큐”로 푸시된다. 호스트 명령어가 호스트 요청에 따라 완전히 실행되자마자, 명령어 완료(command completion)이 호스트로 전송되고 명령어는 “실행 큐”와 “대기 큐”로부터 제거된다.
본 명세서에 개시된 실시예는 하나 이상의 호스트가 동일한 작업 우선 순위 상에서 실행하지 않고, 저장 장치가 실행하기에 더욱 많은 시간이 필요한 높은 우선 순위의 작업이 거의 없는 시나리오를 언급하기 위해 구현된다.
본 실시예는 특정한 실시예들을 참조하여 설명되었다; 다양한 실시예 보다 넓은 사상 및 범위를 벗어나지 않고 이러한 실시예들에 대하여 다양한 변형 및 변경이 이루어질 수 있는 것은 명백할 것이다. 더 나아가, 본 명세서에서 설명된 다양한 장치, 모듈 등은 예를 들어 금속 산화막 반도체(metal oxide semiconductor) 기반 논리 회로와 같은 하드웨어 회로, 펌웨어, 소프트웨어 및/또는 하드웨어, 펌웨어 및/또는 기계로 판독가능한 매체에 포함된 소프트웨어의 임의의 조합을 사용하여 사용가능해지고, 동작할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
102, 210: 저장 장치 104: 가상 머신
106: 가상 중개자 202, 204, 206, 208: 호스트 엔티티
212: 명령어 아비터 및 인출 모듈

Claims (10)

  1. 적어도 하나의 호스트 장치가 복수의 호스트 명령어(host command)를 PCIe(Peripheral Componenet Interconnect Express) 장치에 발행하고,
    명령어 아비터(command aribter) 및 인출(fetch) 모듈이 PCIe 펑션 명령어 큐(PCIe function command queue)로부터 상기 발행된 복수의 명령어를 인출하고,
    상기 PCIe 장치의 내부 메모리에 상기 인출된 복수의 명령어를 저장하고,
    QoS(Quality of Service) 검사기 모듈(checker module)이 상기 복수의 인출된 명령어를 회수(retrieve)하고,
    상기 복수의 회수된 명령어 및 페이로드 정보(payload information)에 기반한 자원 분배(resource distribution)를 계산하여 호스트 명령어의 QoS를 유지하는 것을 포함하는 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  2. 제 1항에 있어서,
    각각의 명령어의 실행 시간을 결정하여 상기 PCIe 장치의 QoS 요구를 제공하는 것을 더 포함하는 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  3. 제2 항에 있어서,
    하나 이상의 계류 명령어(pending command)를 대기 큐(wait queue)에 푸시하고,
    상기 실행 시간 이후에 상기 하나 이상의 계류 명령어의 QoS를 계산하는 것을 더 포함하되,
    상기 명령어의 실행 시간은 미리 정한 일정한 QoS 시간인 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  4. 제 1항에 있어서,
    상기 자원 할당은 하나 이상의 PCIe 포트에 기반하는 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  5. 제 1항에 있어서,
    상기 QoS는 동일한 실행 가중치(weightage of execution)와 자원 할당을 갖는 복수의 PCIe 펑션 및 서로 다른 실행 가중치를 갖는 복수의 PCIe 펑션 중 어느 하나로부터 계산되는 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  6. 제 1항에 있어서,
    각각의 PCIe 펑션에 배분된 고정 가중치(fixed weightage)에 기반한 자원 분배를 계산하는 것을 더 포함하되, 상기 가중치는 장치 사용자로부터 배분되는 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  7. 제 1항에 있어서,
    상기 QoS 검사기 모듈은 상기 페이로드를 검출하고 상기 PCIe 장치의 명령어 페이로드를 사용 가능한 자원에 기반하여 정규화(normalize)하는 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  8. 제 1항에 있어서,
    상기 QoS는 각각의 PCIe 펑션에서 상기 PCIe 펑션으로부터의 전체 페이로드까지 상기 PCIe 장치들의 가용한 전체 프리 리소스(free resource)로 정의되는 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  9. 제 1항에 있어서,
    상기 PCIe 펑션은 가상 펑션(VF) 또는 물리적 펑션(PF) 중 어느 하나인 PCIe 장치의 호스트 명령어의 QoS 유지 방법.
  10. PCIe 디바이스로 복수의 호스트 명령어를 발행하는 적어도 하나의 호스트 장치;
    PCIe 펑션 명령어 큐로부터 상기 발행된 복수의 명령어를 인출하는 명령어 아비터 및 인출 모듈;
    PCIe 장치의 내부 메모리에 상기 인출된 복수의 명령어를 저장하는 저장 모듈; 및
    상기 복수의 인출된 명령어를 회수하고, 상기 복수의 명령어 및 페이로드 정보에 기반한 자원 분배를 계산하는 QoS 검사기 모듈을 포함하는 PCIe 장치의 호스트 명령어의 QoS 유지 시스템.
KR1020150056385A 2014-07-31 2015-04-22 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템 KR102387932B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN3747/CHE/2014(PROVISIONALAPPLI 2014-07-31
IN3747CH2014 2014-07-31
IN3747/CHE/2014(NON-PROVISIONALA 2014-12-29

Publications (2)

Publication Number Publication Date
KR20160016557A true KR20160016557A (ko) 2016-02-15
KR102387932B1 KR102387932B1 (ko) 2022-04-15

Family

ID=55180187

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150056385A KR102387932B1 (ko) 2014-07-31 2015-04-22 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템

Country Status (2)

Country Link
US (1) US9880967B2 (ko)
KR (1) KR102387932B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180091665A (ko) * 2017-02-07 2018-08-16 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
WO2020123860A1 (en) * 2018-12-12 2020-06-18 Micron Technology, Inc. Memory sub-system with multiple ports having single root virtualization
US11360917B2 (en) 2020-02-18 2022-06-14 Samsung Electronics Co., Ltd. Storage devices configured to support multiple hosts and operation methods thereof
US11741039B2 (en) 2021-03-18 2023-08-29 SK Hynix Inc. Peripheral component interconnect express device and method of operating the same
US11841819B2 (en) 2021-03-23 2023-12-12 SK Hynix Inc. Peripheral component interconnect express interface device and method of operating the same
US12007918B2 (en) 2021-03-23 2024-06-11 SK Hynix Inc. Peripheral component interconnect express interface device and method of operating the same

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579567B2 (en) 2017-06-28 2020-03-03 Western Digital Technologies, Inc. Queue depth management for host systems accessing a peripheral component interconnect express (PCIe) device via a PCIe switch
US10528268B2 (en) 2017-09-12 2020-01-07 Toshiba Memory Corporation System and method for channel time management in solid state memory drives
US10509753B2 (en) 2018-02-26 2019-12-17 Micron Technology, Inc. Dynamic allocation of resources of a storage system utilizing single root input/output virtualization
US10417168B1 (en) 2018-03-14 2019-09-17 International Business Machines Corporation Combining switch slot resources
US11126375B2 (en) * 2019-07-18 2021-09-21 Micron Technology, Inc. Arbiter circuit for commands from multiple physical functions in a memory sub-system
US11829618B2 (en) 2021-09-03 2023-11-28 Micron Technology, Inc. Memory sub-system QOS pool management
US11972125B2 (en) * 2021-09-03 2024-04-30 Micron Technology, Inc. Memory sub-system dynamic QOS pool

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060193327A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for providing quality of service in a virtual adapter
US20140059265A1 (en) * 2012-08-23 2014-02-27 Dell Products, Lp Fabric Independent PCIe Cluster Manager
US20140208327A1 (en) * 2013-01-18 2014-07-24 Nec Laboratories America, Inc. Method for simultaneous scheduling of processes and offloading computation on many-core coprocessors

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7602774B1 (en) 2005-07-11 2009-10-13 Xsigo Systems Quality of service for server applications
US8250197B2 (en) 2008-10-28 2012-08-21 Vmware, Inc. Quality of service management
WO2010114910A1 (en) 2009-04-01 2010-10-07 Aprius, Inc. Input/output (i/o) virtualization system
US8250252B1 (en) * 2010-06-29 2012-08-21 Qlogic, Corporation System and methods for using a DMA module for a plurality of virtual machines
US8631213B2 (en) * 2010-09-16 2014-01-14 Apple Inc. Dynamic QoS upgrading
US9218219B2 (en) 2010-11-24 2015-12-22 International Business Machines Corporation Managing virtual functions of an input/output adapter
US20120159090A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Scalable multimedia computer system architecture with qos guarantees
US8683478B2 (en) * 2010-12-21 2014-03-25 International Business Machines Corporation Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions
US8537706B2 (en) 2011-01-11 2013-09-17 International Business Machines Corporation Preserving traffic class priority QoS with self-virtualizing input/output device
US8484392B2 (en) 2011-05-31 2013-07-09 Oracle International Corporation Method and system for infiniband host channel adaptor quality of service
US9367357B2 (en) * 2013-01-18 2016-06-14 Nec Corporation Simultaneous scheduling of processes and offloading computation on many-core coprocessors
US9201681B2 (en) 2013-02-13 2015-12-01 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and controller device for quality of service (QOS) caching in a virtualized environment
US10102144B2 (en) * 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
WO2015089701A1 (en) * 2013-12-16 2015-06-25 Telefonaktiebolaget L M Ericsson (Publ) Method and system for controlling quality of service of sharing network
US9501442B2 (en) * 2014-04-30 2016-11-22 Freescale Semiconductor, Inc. Configurable peripheral componenent interconnect express (PCIe) controller

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060193327A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for providing quality of service in a virtual adapter
US20140059265A1 (en) * 2012-08-23 2014-02-27 Dell Products, Lp Fabric Independent PCIe Cluster Manager
US20140208327A1 (en) * 2013-01-18 2014-07-24 Nec Laboratories America, Inc. Method for simultaneous scheduling of processes and offloading computation on many-core coprocessors

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180091665A (ko) * 2017-02-07 2018-08-16 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
WO2020123860A1 (en) * 2018-12-12 2020-06-18 Micron Technology, Inc. Memory sub-system with multiple ports having single root virtualization
US11194750B2 (en) 2018-12-12 2021-12-07 Micron Technology, Inc. Memory sub-system with multiple ports having single root virtualization
US11675724B2 (en) 2018-12-12 2023-06-13 Micron Technology, Inc. Memory sub-system with multiple ports having single root virtualization
US11360917B2 (en) 2020-02-18 2022-06-14 Samsung Electronics Co., Ltd. Storage devices configured to support multiple hosts and operation methods thereof
US11741039B2 (en) 2021-03-18 2023-08-29 SK Hynix Inc. Peripheral component interconnect express device and method of operating the same
US11841819B2 (en) 2021-03-23 2023-12-12 SK Hynix Inc. Peripheral component interconnect express interface device and method of operating the same
US12007918B2 (en) 2021-03-23 2024-06-11 SK Hynix Inc. Peripheral component interconnect express interface device and method of operating the same

Also Published As

Publication number Publication date
US20160034415A1 (en) 2016-02-04
KR102387932B1 (ko) 2022-04-15
US9880967B2 (en) 2018-01-30

Similar Documents

Publication Publication Date Title
KR102387932B1 (ko) 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템
US11768698B2 (en) Mechanism to dynamically allocate physical storage device resources in virtualized environments
US10331600B1 (en) Virtual I/O queuing
US10007443B1 (en) Host to device I/O flow
US10853277B2 (en) Systems and methods for isolating input/output computing resources
US9734096B2 (en) Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
US10248468B2 (en) Using hypervisor for PCI device memory mapping
US9875208B2 (en) Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches
WO2018063718A1 (en) Techniques for input/output access to memory or storage by a virtual machine or container
US20190243757A1 (en) Systems and methods for input/output computing resource control
US9367478B2 (en) Controlling direct memory access page mappings
KR102387922B1 (ko) 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US11467776B1 (en) System supporting virtualization of SR-IOV capable devices
CN115203095A (zh) PCIe装置及其操作方法
US10853284B1 (en) Supporting PCI-e message-signaled interrupts in computer system with shared peripheral interrupts
US9047264B2 (en) Low pin count controller
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
TWI797022B (zh) 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法
US10437495B1 (en) Storage system with binding of host non-volatile memory to one or more storage devices
US9110731B1 (en) Hard allocation of resources partitioning
US10776021B2 (en) Exit-less host page table switching and virtual machine function detection with memory pages storing an identification value that are mapped at the same guest physical addresses
US11620083B2 (en) Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
US20230385118A1 (en) Selective execution of workloads using hardware accelerators
CN115237834A (zh) 高速外围组件互连装置及其操作方法

Legal Events

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