KR20160096279A - 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치 - Google Patents

가상화 기능을 지원하는 스토리지 장치 및 사용자 장치 Download PDF

Info

Publication number
KR20160096279A
KR20160096279A KR1020150017512A KR20150017512A KR20160096279A KR 20160096279 A KR20160096279 A KR 20160096279A KR 1020150017512 A KR1020150017512 A KR 1020150017512A KR 20150017512 A KR20150017512 A KR 20150017512A KR 20160096279 A KR20160096279 A KR 20160096279A
Authority
KR
South Korea
Prior art keywords
virtualization
queue
host
management
memory
Prior art date
Application number
KR1020150017512A
Other languages
English (en)
Other versions
KR102336443B1 (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 KR1020150017512A priority Critical patent/KR102336443B1/ko
Priority to US15/003,031 priority patent/US10467037B2/en
Publication of KR20160096279A publication Critical patent/KR20160096279A/ko
Application granted granted Critical
Publication of KR102336443B1 publication Critical patent/KR102336443B1/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 출원은 스토리지 장치 및 사용자 장치에 관한 것으로, 좀더 자세하게는 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치에 관한 것이다. 본 출원의 실시 예에 따른 스토리지 장치는 복수의 불휘발성 메모리들 및 상기 복수의 불휘발성 메모리들에 연결되며, 상기 복수의 불휘발성 메모리들을 제어하는 스토리지 컨트롤러를 포함하며, 상기 스토리지 컨트롤러는 호스트와 큐 베이스의 커맨드 교환 방식에 기초하여 인터페이스 동작을 수행하고, 상기 호스트의 복수의 가상화 장치들 각각에 대응하는 복수의 관리 큐 정보에 접근하여 처리한다. 본 출원의 실시 예에 따른 스토리지 장치 및 사용자 장치는 큐 베이스의 인터페이스 방식과 가상화 기능을 효율적으로 제공하여, 동작 속도 향상 및 리소스 이용 효율을 증가시킬 수 있다.

Description

가상화 기능을 지원하는 스토리지 장치 및 사용자 장치{STORAGE DEVICE AND USER DEVICE SUPPORTING VIRTUALIZATION FUNCTION}
본 출원은 스토리지 장치 및 사용자 장치에 관한 것으로, 좀더 자세하게는 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치에 관한 것이다.
플래시 메모리 장치를 기반으로 하는 데이터 저장 장치의 대표적인 예로써, 솔리스 스테이트 드라이브(solid state drive; SSD)가 있다. SSD와 같은 데이터 저장 장치에 사용되는 인터페이스로 SATA, PCIe, SAS 등이 있다. SSD의 성능은 점차 개선되고 있고, 동시에 처리되는 데이터 양도 점차 증가하고 있다. 그러나, SATA와 같은 종래의 인터페이스는 SSD와 같은 데이터 저장 장치에 특화된 인터페이스가 아니므로, 근본적으로 한계점을 가지고 있다. 그 결과, SSD에 걸맞는 표준화된 인터페이스를 만들고자 하는 노력의 일환으로써, NVMe가 탄생하게 되었다. NVMe는 SSD와 같은 데이터 저장 장치와 호스트 소프트웨어 간에 통신하는 레지스터 레벨의 인터페이스이다. NVMe는 종래의 PCIe 버스를 기반으로 하며, SSD에 최적화된 인터페이스이다.
한편, 반도체 제조 기술이 발전하면서, 스토리지 장치와 통신하는 컴퓨터, 스마트폰, 스마트패드 등과 같은 호스트 장치의 동작 속도가 향상되고 있다. 호스트 장치의 동작 속도가 향상됨에 따라, 하나의 호스트 장치에서 다양한 가상화 장치들을 구동하는 가상화가 도입되고 있다. 그러나 종래의 NVMe는 가상화를 고려하지 않고 설계되어, 이러한 가상화 기능을 지원하는데 한계가 있다.
본 출원의 목적은 NVMe와 같이 큐 베이스의 인터페이스 방식을 지원하면서 동시에 가상화 기능을 함께 지원할 수 있는 스토리지 장치 및 사용자 장치를 제공하는데 그 목적이 있다.
본 출원의 실시 예에 따른 스토리지 장치는 복수의 불휘발성 메모리들 및 상기 복수의 불휘발성 메모리들에 연결되며, 상기 복수의 불휘발성 메모리들을 제어하는 스토리지 컨트롤러를 포함하며, 상기 스토리지 컨트롤러는 호스트와 큐 베이스의 커맨드 교환 방식에 기초하여 인터페이스 동작을 수행하고, 상기 호스트의 복수의 가상화 장치들 각각에 대응하는 복수의 관리 큐 정보에 접근하여 처리한다.
본 발명의 실시 예에 따른 가상화 기능을 지원하는 사용자 장치는 적어도 하나의 물리 장치 및 적어도 하나의 가상화 장치를 포함하는 호스트 코어 및 상기 호스트 코어에 대한 워킹 메모리로 동작하는 호스트 메모리를 포함하며, 상기 호스트 메모리는 상기 적어도 하나의 가상화 장치에 대응하는 적어도 하나의 가상화 장치 관리 큐의 쌍을 저장한다.
본 출원의 실시 예에 따른 스토리지 장치 및 사용자 장치는 큐 베이스의 인터페이스 방식과 가상화 기능을 효율적으로 제공하여, 동작 속도 향상 및 리소스 이용 효율을 증가시킬 수 있다.
도 1은 큐 베이스의 커맨드 인터페이스 방식(queue based CMD interface scheme)을 지원하는 메모리 시스템을 보여주는 블록도이다.
도 2는 본 발명의 기술적 사상의 실시 예에 따른 가상화 기능을 지원하는 메모리 시스템의 일 예를 보여주는 블록도이다.
도 3은 본 발명의 기술적 사상의 다른 실시 예에 따른 가상화 기능을 지원하는 메모리 시스템의 일 예를 보여주는 블록도이다.
도 4는 도 3의 스토리지 컨트롤러 및 가상화 관리 모듈의 구성 및 동작을 좀더 자세히 보여주는 블록도이다.
도 5는 도 3의 호스트 장치 및 스토리지 장치의 동작을 보여주기 위한 순서도이다.
도 6은 본 발명의 다른 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 7 및 도 8은 본 발명의 다른 실시 예에 따른 스토리지 장치의 일 구성을 보여주는 블록도이다.
도 9는 본 발명의 다른 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 10은 본 발명의 다른 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 11은 도 10의 패치 정보 레지스터의 데이터 구조를 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템을 적용한 예를 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템이 적용된 휴대용 단말기를 나타내는 블록도이다.
이하에서는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예들을 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 큐 베이스의 커맨드 인터페이스 방식(queue based CMD interface scheme)을 지원하는 메모리 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 호스트 장치(110) 및 스토리지 컨트롤러(120)를 포함하며, 호스트 장치(110)는 컨트롤러 관리기(111) 및 복수의 코어들(112_1~112_n)을 포함한다.
잘 알려진 바와 같이, 큐 베이스의 커맨드 인터페이스 방식에는 NVMe 프로토콜을 따르는 방식 또는 PQI 프로토콜을 따르는 방식 등이 존재한다. 이러한 프로토콜 스킴에 따르면, 스토리지 컨트롤러는 호스트와의 인터페이스를 위하여 큐 베이스의 커맨드 교환(queue based CMD transaction)에 기초하여 인터페이스 동작을 수행한다.
NVMe 프로토콜 방식을 예로 들어 큐 베이스의 커맨드 인터페이스 방식에 대하여 좀더 자세히 설명하면, NVMe 프로토콜 방식은 커맨드 요청(CMD request)을 위한 서브미션 큐(submission queue, SQ)와 해당 커맨드의 결과에 대한 응답(CMD response)을 위한 컴플리션 큐(completion queue, CQ)로 이루어진 큐 페어(queue pair, 또는 큐의 쌍)에 기초하여 인터페이스 동작을 수행한다. 또한 NVMe 프로토콜 방식은 포맷(format), 리셋(reset), 큐의 생성(queue creation) 등 스토리지 컨트롤러의 관리(management)를 위한 한 쌍의 관리 큐(administrator queue, AQ)와 데이터에 대한 쓰기 및 읽기 동작 등 데이터 교환(transaction) 및 관리를 위한 복수 쌍의 입출력 큐(I/O queue)를 가진다.
예를 들어, 도 1에 도시된 바와 컨트롤러 관리기(111)는 하나의 관리 서브미션 큐(administrator submission queue, A_SQ)와 하나의 관리 컴플리션 큐(administrator completion queue, A_CQ)로 이루어진 한 쌍의 관리 큐에 기초하여 인터페이스 동작을 수행하며, 복수의 코어들(112_1~112_n)은 각각 하나의 입출력 서브미션 큐(I/O submission queue, I/O_SQ) 및 하나의 입출력 컴플리션 큐(I/O completion queue, I/O_CQ)로 이루어진 한 쌍의 입출력 큐에 기초하여 인터페이스 동작을 수행한다.
다만 도 1에 도시된 NVMe 프로토콜을 따르는 인터페이스 방식 또는 PQI 프로토콜을 따르는 인터페이스 방식은 가상화 기능(virtualization function)을 지원하지 못한다는 한계가 있다. 그러나 최근 코어 성능의 향상 및 한정된 물리적 하드웨어를 효율적으로 공유하여야 할 필요성이 증대됨에 따라, NVMe 또는 PQI 프로토콜을 따르는 인터페이스 방식에서도 가상화 기능을 지원하여야할 필요성이 증대되고 있다.
이에 따라, 이하에서는 본 발명의 기술적 사상의 실시 예에 따른 큐 베이스의 커맨드 인터페이스 방식을 지원하면서 동시에 가상화 기능을 함께 지원하는 메모리 시스템들이 좀더 자세히 설명될 것이다.
도 2는 본 발명의 기술적 사상의 실시 예에 따른 가상화 기능을 지원하는 메모리 시스템(1000)의 일 예를 보여주는 블록도이다. 도 2의 메모리 시스템(1000)은 큐 베이스의 커맨드 인터페이스 방식을 지원하면서 동시에 가상화 기능을 함께 지원할 수 있다. 예를 들어, 도 2의 메모리 시스템(1000)은 NVMe 프로토콜에 따른 인터페이스 방식을 지원하면서 동시에 SR-IOV(Single-Root IO Virtualization)의 가상화 기능을 함께 지원할 수 있다. 도 2를 참조하면, 메모리 시스템(1000)은 호스트 장치(1100) 및 스토리지 장치(1200)를 포함한다.
호스트 장치(1100)는 호스트 코어(1110), 가상화 중재기(Virtualization Intermediary, VI)(1120), 루트 컴플렉스(Root Complex, RC)(1130), 호스트 메모리(1140), 그리고 스토리지 인터페이스(1150)를 포함한다.
호스트 코어(1110)는 하나의 물리 장치(Physical Function, PF)(1110_a) 및 복수의 가상화 장치들(Virtual Function, VF)(1111~111n)을 포함한다. 여기서 물리 장치(1110_a)는 물리적인 하드웨어로써의 코어 혹은 프로세서일 수 있다. 복수의 가상화 장치들(1111~111n)은 각각 SR-IOV의 가상화 동작에 의하여 생성된 가상화 코어 혹은 프로세서일 수 있으며, 각각 독립적으로 운영체제 및 어플리케이션을 구동할 수 있다. 하나의 가상화 장치에 의하여 구동되는 운영체제는, 예를 들어, 게스트 O/S(Guest O/S)라 칭해질 수 있다.
가상화 중재기(1120)는 호스트 코어(1110) 및 루트 컴플렉스(1130)에 연결되며, 가상화 장치들(1111~111n)을 실행하거나 가상화 장치들(1111~111n)을 관리하는 기능을 수행한다. 예를 들어, 가상화 중재기(1120)는 SR-IOV의 가상화 동작을 위한 주소(address) 정보를 전송하고 관리하는 기능을 수행할 수 있다.
루트 컴플렉스(1130)는 계층(hierarchy)의 루트(root)를 나타내는 것으로, 가상화 중재기(1120), 호스트 메모리(1140), 그리고 스토리지 인터페이스(1150)에 연결된다. 루트 컴플렉스(1130)는 호스트 코어(1110)를 호스트 메모리(1140)에 연결하거나, 호스트 코어(1110) 및 호스트 메모리(1140)를 스토리지 인터페이스(1150)에 연결하는 역할을 수행할 수 있다.
호스트 메모리(1140)는 루트 컴플렉스(1130)를 통하여 가상화 중재기(1120) , 호스트 코어(1110), 그리고 스토리지 인터페이스(1150)에 연결된다. 호스트 메모리(1140)는, 예를 들어, 호스트 코어(1110)의 물리 장치(1110_a) 또는 가상화 장치들(1111~111n) 각각을 위한 워킹 메모리(working memory)로 사용될 수 있다. 이 경우, 호스트 메모리(1140)에는 응용 프로그램, 파일 시스템 및 장치 드라이버 등이 로딩될 수 있다.
다른 예로, 호스트 메모리(1140)는 스토리지 장치(1200)로 데이터를 전송하거나 스토리지 장치(1200)로부터 수신된 데이터를 임시로 저장하기 위한 버퍼로 사용될 수 있다. 호스트 메모리(1140)는, 예를 들어, SRAM(static RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리로 구현될 수 있으며, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferrolectric RAM) 등과 같은 불휘발성 메모리이거나, 또는 이들의 조합으로 구현될 수 있다.
스토리지 인터페이스(1150)는 루트 컴플렉스(1130)에 연결되며, 호스트 장치(1100)와 스토리지 장치(1200) 사이의 통신을 제공한다. 예를 들어, 스토리지 인터페이스(1150)는 NVMe 프로토콜 방식에 따라 큐 베이스의 커맨드들 및 데이터를 스토리지 장치(1200)에 제공하거나, 스토리지 장치(1200)로부터 처리된 커맨드들의 정보 및 데이터를 수신할 것이다.
계속해서 도 2를 참조하면, 스토리지 장치(1200)는 호스트 장치(1100)로부터 제공된 데이터를 저장하거나, 저장된 데이터를 호스트 장치(1100)에 제공할 수 있다. 스토리지 장치(1200)는 스토리지 컨트롤러(1210) 및 복수의 불휘발성 메모리들(1221~122n)를 포함한다.
스토리지 컨트롤러(1210)는 큐 베이스의 인터페이스 방식을 통하여 호스트 장치(1100)와 통신한다. 스토리지 컨트롤러(1210)는 호스트 장치(1100)로부터 수신된 커맨드에 따라 데이터를 복수의 불휘발성 메모리들(1221~122n) 중 적어도 하나에 저장하도록 스토리지 장치(1200)를 제어할 수 있다. 또한 스토리지 컨트롤러(1210)는 복수의 불휘발성 메모리들(1221~122n)에 저장된 데이터를 호스트 장치(1100)로 전송하도록 스토리지 장치(1200)를 제어할 수 있다.
복수의 불휘발성 메모리들(1221~122n)은 각각 대응하는 채널들(CH1~CHn)을 통하여 스토리지 컨트롤러(1210)에 연결된다. 복수의 불휘발성 메모리들(1221~122n)은 각각 스토리지 컨트롤러(1210)의 제어에 따라 데이터를 저장하거나 저장된 데이터를 독출하는 동작을 수행한다. 복수의 불휘발성 메모리들(1221~122n)은 각각 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등과 같은 불휘발성 메모리로 구현되거나, 혹은 이들이 조합된 형태로 구현될 수 있다.
복수의 불휘발성 메모리들(1221~122n) 중 적어도 하나는 3차원 불휘발성 메모리 장치로 구현될 수 있다. 예를 들어, 복수의 불휘발성 메모리들(1221~122n) 중 적어도 하나의 불휘발성 메모리의 메모리 셀 어레이에는 복수의 워드 라인들이 수직 방향으로 적층되고, 셀 스트링들 각각의 채널이 수직 방향으로 형성될 수 있다. 이런 셀 스트링의 구조로 메모리 셀 어레이가 형성되는 불휘발성 메모리는 수직 구조 불휘발성 메모리 또는 3차원 구조 불휘발성 메모리라 칭해질 수 있다. 셀 스트링이 수평 방향으로 형성되거나 수직 방향으로 형성되는 메모리 장치에서 메모리 셀들 각각은 멀티 레벨 셀(MLC)로 구동될 수 있다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 호스트 메모리(1140)는 큐 베이스의 인터페이스 방식을 지원하면서 동시에 가상화 기능을 지원하기 위한 큐 커맨드의 저장 영역을 제공할 수 있다. 다시 말하면, 본 발명의 기술적 사상에 따른 호스트 메모리(1140)는 가상화 기능을 구비하는 큐 베이스의 커맨드 인터페이스 방식을 지원하기 위하여, 큐 커맨드를 저장하기 위한 영역을 별도로 제공할 수 있다.
예를 들어 도 2에 도시된 바와 같이, NVMe 프로토콜 인터페이스 방식에서의 SR-IOV 가상화 기능을 지원하기 위하여, 호스트 메모리(1140)는 물리 장치(1110_a)의 관리 큐를 저장하기 위한 물리 장치 관리 큐 저장 영역(PF Administrator queue stroage area, PF A_Q Area)(1140_a), 물리 장치(1110_a)의 입출력 큐를 저장하기 위한 물리 장치 입출력 큐 저장 영역(PF I/O Queue storage area, PF I/O_Q Area)(1140_b), 가상화 장치들의 입출력 큐들을 저장하기 위한 복수의 가상화 장치 입출력 큐 저장 영역(VF1 I/O_Q Area~VFn I/O_Q Area)(1141~114n)을 제공할 수 있다. 이 경우, 큐 커맨드들은 NVMe 프로토콜 인터페이스 방식에서 주로 사용되는 써큘러 큐(circular queue) 방식을 이용하여 각 저장 영역에 저장될 수 있다.
다만, 도 2의 메모리 시스템(1000)과 같이 물리 장치(1110_a)에 대한 관리 큐(Administrator Queue)만이 존재할 뿐, 각 가상화 장치(1111~111n)에 대한 관리 큐는 별도로 존재하지 않는다. 각 가상화 장치(1111~111n)에 관리 큐가 별도로 할당되어 있지 않기 때문에, 각 가상화 장치(1111~111n)의 게스트 O/S 혹은 가상화 중재기(1120)는 가상화 장치들의 입출력 큐들(VF1 I/O Queue~VFn I/O Queue)을 처리할 때마다 물리 장치 관리 큐 저장 영역(1140_a)에 저장된 물리 장치(1110_a)의 관리 큐에 접근(access)하여야 한다. 이 경우, 물리 장치(1110_a)를 위한 동작 뿐만 아니라 복수의 가상화 장치들(1111~111n)의 동작들을 실행하기 위해서 하나의 동일한 관리 큐에 접근하여야 하므로, 메모리 시스템(1000)의 성능이 전반적으로 하락하게 되는 문제가 있다.
이러한 문제를 해결하기 위하여, 이하에서는 각 가상화 장치에 대응하는 가상화 장치 관리 큐가 별도로 존재하며, 해당 독립적인 가상화 장치 관리 큐를 저장하고 처리할 수 있는 메모리 시스템의 실시 예가 설명될 것이다.
도 3은 본 발명의 기술적 사상의 다른 실시 예에 따른 가상화 기능을 지원하는 메모리 시스템(2000)의 일 예를 보여주는 블록도이다. 도 3의 메모리 시스템(2000)의 구성은 도 2의 메모리 시스템(1000)의 구성과 일정부분 유사하다. 따라서 이하에서는 도 2의 메모리 시스템(1000)과의 차이점이 중점적으로 설명될 것이다. 도 3을 참조하면, 메모리 시스템(2000)은 호스트 장치(2100) 및 스토리지 장치(22000)를 포함한다.
호스트 장치(2100)는 호스트 코어(2110), 가상화 중재기(2120), 루트 컴플렉스(2130), 호스트 메모리(2140), 스토리지 인터페이스(2150)를 포함한다. 호스트 코어(2110), 가상화 중재기(2120), 루트 컴플렉스(2130) 및 스토리지 인터페이스(2150)의 구성 및 동작은 도 2에서 설명된 것과 유사하므로, 자세한 설명은 생략된다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 도 3의 복수의 가상화 장치들(2111~211n)에는 각각 별도의 독립적인 관리 큐가 할당된다. 즉, 복수의 가상화 장치들(2111~211n) 각각에는 독립적인 가상화 장치 관리 큐(VF1 Administrator Queue~VFn Administrator Queue)가 각각 할당된다. 따라서 복수의 가상화 장치들(2111~211n) 각각은 대응하는 가상화 장치 관리 큐를 이용하여 독립적으로 큐 관리(queue management) 및 커맨드/데이터의 교환(CMD/Data transaction) 동작을 수행할 수 있다.
예를 들어, 제 1 가상화 장치(2111)의 게스트 O/S는 제 1 가상화 장치 관리 큐(VF1 Administrator Queue)가 할당되며, 제 1 가상화 장치(2111)는 호스트 메모리(2140)의 제 1 가상화 장치 관리 큐 영역(2141_a)에 저장된 제 1 가상화 장치 관리 큐 및 제 1 가상화 장치 입출력 큐 영역(2141_b)에 저장된 복수의 가상화 장치 입출력 큐들을 이용하여 독립적으로 큐 관리 동작 및 커맨드/데이터 교환 동작을 수행할 수 있다.
이 경우, 가상화 중재기(2120)는 전반적인 가상화 동작에 개입할 필요가 없으며, 예를 들어, 단지 물리 장치(2110_a)를 통한 SR-IOV 기능 초기화(SR-IOV Capability Initialization)에만 관여하게 되므로, 도 2와 같은 오버헤드로 인한 메모리 시스템의 성능 저하를 방지할 수 있다.
또한, 복수의 가상화 장치들(2111~211n)에 대응하는 가상화 장치 관리 큐들(2141_a~214n_a)를 저장하기 위하여, 본 발명의 기술적 사상의 실시 예예 따른 호스트 메모리(2140)는 관리 큐 및 입출력 큐들의 큐 페어(queue pair)를 저장하기 위한 영역을 제공한다. 즉, 도 2의 호스트 메모리(1140)가 물리 장치 관리 큐 저장 영역(1140_a), 물리 장치 입출력 큐 저장 영역(PF I/O Queue)(1140_b), 복수의 가상화 장치 입출력 큐 저장 영역(VF1 I/O Queue~VFn I/O Queue)(1141~114n)만을 제공하는데 비하여, 도 3의 호스트 메모리(2140)는 복수의 가상화 장치 관리 큐 저장 영역(VF1 A_Q Area~VFn A_Q Area)(2141_a~214n_a)을 추가적으로 제공한다. 이 경우, 각 가상화 장치 관리 큐 및 가상화 장치 입출력 큐는 써큘러 큐 형태로 호스트 메모리(2140)에 저장될 수 있다.
계속해서 도 3을 참조하면, 스토리지 장치(2200)는 스토리지 컨틀롤러(2210) 및 복수의 불휘발성 메모리들(2221~222n)을 포함한다. 스토리지 장치(2200)의 전반적인 구성 및 동작은 도 2와 유사하므로, 자세한 설명은 생략된다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 스토리지 컨트롤러(2210)는 가상화 관리 모듈(VF Manage Module)(2230)을 포함한다. 가상화 관리 모듈(2230)은 복수의 가상화 장치들(2111~211n) 각각에 대응하는 가상화 장치 관리 큐 및 가상화 장치 입출력 큐를 저장하고 처리하는 동작을 수행한다. 가상화 관리 모듈(2230)의 구성 및 동작은 이하의 도 4에서 좀더 자세히 설명될 것이다.
상술한 바와 같이, 본 발명의 기술적 사상의 실시 예에 따른 메모리 시스템(2000)은 큐 베이스의 커맨드 인터페이스 방식을 지원하면서 동시에 가상화 기능을 함께 지원할 수 있다. 더욱이, 본 발명의 기술적 사상의 실시 예에 따른 메모리 시스템(2000)은 복수의 가상화 장치들 각각에 독립적인 관리 큐를 할당함으로써, 각 가상화 장치가 독립적으로 큐 관리 및 커맨드/데이터의 교환 동작을 수행할 수 있다.
도 4는 도 3의 스토리지 컨트롤러(2210) 및 가상화 관리 모듈(2230)의 구성 및 동작을 좀더 자세히 보여주는 블록도이다. 도 4를 참조하면, 스토리지 컨트롤러(2210)는 가상화 관리 모듈(2230), 복수의 코어들(2211_1~2211_n), 복수의 캐시들(2211_1'~2211_n'), 버퍼 컨트롤러(2212), 버퍼 메모리(2213), 그리고 불휘발성 메모리 인터페이스(2214)를 포함한다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 가상화 관리 모듈(2230)은 도 3의 호스트 장치(2100)로부터 수신된 가상화 장치 각각에 대응하는 복수의 관리 큐들 및 복수의 입출력 큐들을 저장하고 처리하는 동작을 수행하도록 구현될 수 있다. 가상화 관리 모듈(2230)은 호스트 인터페이스(2231), 복수의 가상화 커맨드 페처(2232_1~2232_n), 복수의 가상화 커맨드 파서(2233_1~2233_n), 커맨드 디스패처(2234), DMA 매니저(2235), DMA 유닛(2236), 공통 리스판스 매니저(2237), 복수의 가상화 리스판서(2238_1~2238_n)를 포함한다.
호스트 인터페이스(2231)는 호스트 장치(2100, 도 3 참조)와 스토리지 장치(2200) 사이의 인터페이싱 동작을 지원한다. 예를 들어, 도 4에 도시된 바와 같이, 제 n 가상화 장치(VFn)에 대응하는 제 n 가상화 장치 관리 서브미션 큐(VFn Administrator Submission Queue, VFn A_SQ) 및 제 n 가상화 장치 입출력 서브미션 큐(VFn I/O Submission Queue, VFn I/O SQ)의 정보는 호스트 인터페이스(2231)를 통하여 호스트(2100)로부터 스토리지 장치(2200)로 송신될 수 있다. 이 경우, 제 n 가상화 장치 관리 서브미션 큐(VFn A_SQ)에는 제 n 가상화 장치가 요구하는 관리(management) 정보가 포함될 수 있으며, 및 제 n 가상화 장치 입출력 서브미션 큐(VFn I/O_SQ)에는 제 n 가상화 장치가 요구하는 읽기 및 쓰기 동작에 대한 정보가 포함될 수 있다.
또한, 예를 들어, 제 n 가상화 장치(VFn)에 대응하는 제 n 가상화 장치 관리 컴플리션 큐(VFn Administrator Completion Queue, VFn A_CQ) 및 제 n 가상화 장치 입출력 컴플리션 큐(VFn I/O Completion Queue, VFn I/O_CQ)의 정보는 호스트 인터페이스(2231)를 통하여 스토리지 장치(2200)로부터 호스트 장치(2100)로 제공될 수 있다. 이 경우, 제 n 가상화 장치 관리 컴플리션 큐(VFn A_CQ)에는 제 n 가상화 장치 관리 서브미션 큐(VFn A_SQ)의 처리 결과에 대응하는 응답 정보(response information)가 포함될 수 있으며, 제 n 가상화 장치 입출력 컴플리셔 큐(VFn I/O_CQ)에는 제 n 가상화 장치 입출력 서브미션 큐(VFn I/O_SQ)의 처리 결과에 대응하는 응답 정보가 포함될 수 있다.
제 1 내지 제 n 가상화 장치 커맨드 패처들(2232_1~2232_n)은 각각 제 1 내지 제 n 가상화 장치 서브미션 큐의 정보에 대응하며, 대응하는 서브미션 큐에 저장된 커맨드를 패칭하는 동작을 지원한다. 예를 들어, 제 1 가상화 장치 커맨드 패처(VF1 CMD Fetcher)(2232_1)는 제 1 가상화 장치 관리 서브미션 큐(VF1 A_SQ) 및 제 1 가상화 장치 입출력 서브미션 큐(VF1 I/O_SQ)의 정보에 대응하며, 링 도어벨(Ring doorbell) 신호에 응답하여 제 1 가상화 장치 관리 서브미션 큐(VF1 A_SQ) 및 제 1 가상화 장치 입출력 서브미션 큐(VF1 I/O_SQ)의 정보를 패칭하는 동작을 수행한다.
패칭 동작에 대하여 좀더 자세히 설명하면, 호스트 메모리(2140, 도 3참조)의 제 1 가상화 장치 관리 큐 저장 영역(VF1 A_Q Area)(2141_a)에 서브미션 큐의 정보가 입력되는 경우, 호스트 장치(2100)는 링 도어벨 신호를 스토리지 컨트롤러(2210)에 전달한다. 이 경우, 제 1 가상화 장치 커맨드 패처(2232_1)는 해당 링 도어벨 신호에 응답하여 제 1 가상화 장치 관리 큐 저장 영역(2141_a)에 접근하며, 제 1 가상화 장치 관리 서브미션 큐(VF1 A_SQ))의 커맨드 정보를 제 1 가상화 장치 커맨드 패터(2232_1) 내의 메모리에 임시로 저장한다.
이와 유사하게, 만약 호스트 메모리(2140)의 제 1 가상화 장치 입출력 큐 저장 영역(VF1 I/O_Q Area)(2141_b)에 서브미션 큐의 정보가 입력되는 경우, 호스트 장치(2100)는 링 도어벨 신호를 스토리지 컨트롤러(2210)에 전달한다. 이 후, 제 1 가상화 장치 커맨드 패처(2232_1)는 해당 링 도어벨 신호에 응답하여 제 1 가상화 장치 입출력 큐 저장 영역(2141_b)에 접근하며, 제 1 가상화 장치 입출력 서브미션 큐(VF1 I/O_SQ))의 커맨드 정보를 제 1 가상화 장치 커맨드 패처(2232_1) 내의 메모리에 임시로 저장한다.
제 1 내지 제 n 가상화 장치 커맨드 파서(2233_1~2233_n)는 각각 제 1 내지 제 n 가상화 장치 커맨드 패처(2232_1~2232_n)에 연결된다. 제 1 내지 제 n 가상화 장치 커맨드 파서(2233_1~2233_n)는 각각 제 1 내지 제 n 가상화 장치 커맨드 패처(2232_1~2232_n)로부터 관리 서브미션 큐 또는 입출력 서브미션 큐에 대한 커맨드를 수신하며, 각 커맨드의 특성을 파싱(parsing)하는 동작을 수행할 수 있다. 예를 들어, 제 1 가상화 장치 커맨드 파서(2233_1)는 제 1 가상화 장치 커맨드 패처(2232_1)로부터 커맨드를 수신하고, 수신된 커맨드의 특성, 커맨드가 요구하는 동작 내용 등을 분석하는 동작을 수행할 수 있다.
커맨드 디스패처(2234)는 제 1 내지 제 n 가상화 장치 커맨드 파서(2233_1~2233_n_)에 공통으로 연결된다. 커맨드 디스패처(2234)는 제 1 내지 제 n 가상화 장치 커맨드 파서(2233_1~2233_n)로부터 파싱된 복수의 커맨드들을 수신하며, 이를 그 특성에 따라 복수의 코어들(2211_1~2211_n)에 적절하게 분배하는 동작을 수행한다. 예를 들어, 커맨드 디스패처(2234)는 복수의 코어들(2211_1~2211_n)이 병렬적으로 동작하도록 커맨드들을 분배할 수 있다.
복수의 코어들(2211_1~2211_n)은 각각 버스를 통하여 커맨드 디스패처(2234)에 연결되며, 커맨드 디스패처(2234)로부터 커맨드를 수신한다. 또한, 복수의 코어들(2211_1~2211_n)은 각각 복수의 캐시 메모리(2211_1'~2211_n')에 연결되며, 각각 대응하는 캐시 메모리에 저장된 명령어(instruction)를 참조하여 커맨드들을 조정(adjusting)하는 동작을 수행한다. 예를 들어, 수신된 커맨드 및 이에 대응하는 데이터가 DMA 유닛(2236)이 한번에 처리할 수 있는 데이터 용량을 초과하는 경우, 해당 코어는 대응하는 캐시 메모리에 저장된 명령어를 참조하여 해당 커맨드가 DMA 유닛(2236)에서 처리될 수 있도록 적절히 조정하는 동작을 수행한다.
DMA 매니저(2235)는 버스를 통하여 코어들(2211_1~2211_n)로부터 조정된 커맨드를 수신하며, 수신된 커맨드에 따라 DMA 유닛(2236)을 제어한다.
DMA 유닛(2236)은 쓰기 DMA(2236_1) 및 읽기 DMA(2236_2)를 포함하며, DMA 매니저(2235)의 제어에 따라 데이터 쓰기 동작 혹은 데이터 읽기 동작을 제어한다. 예를 들어, DMA 매니저(2235)의 제어에 따라 쓰기 동작을 수행하는 경우, 쓰기 DMA(2236_1)는 호스트 인터페이스(2231)를 통하여 데이터를 수신하며, 수신된 데이터가 복수의 불휘발성 메모리(2221~222n) 중 어느 하나에 저장되도록 스토리지 장치(2200)를 제어한다. 다른 예로, DMA 매니저(2235)의 제어에 따라 읽기 동작을 수행하는 경우, 읽기 DMA(2236_2)는 DMA 매니저(2235)의 제어에 따라 복수의 불휘발성 메모리(2221~222n) 중 어느 하나에 대한 읽기 동작을 수행하며, 독출된 데이터를 호스트 인터페이스(2231)를 통하여 호스트 장치(2100)에 제공한다.
공통 리스판스 매니저(2237)는 DMA 유닛(2236)에 연결되며, 각 커맨드에 대한 응답 정보(response information)를 수신한다. 예를 들어, 제 1 내지 제 n 가상화 장치 입출력 서브미션 큐(VF1 I/O SQ~VFn I/O SQ)가 각각 제 1 내지 제 n 데이터에 대한 쓰기 커맨드에 관한 것인 경우, 공통 리스판스 매니저(2237)는 제 1 내지 제 n 데이터에 대한 쓰기 결과에 대한 정보(예를 들어, 쓰기 실패(write fail) 정보 등)를 DMA 유닛(2236)으로부터 수신할 수 있다.
이 경우, 제 1 가상화 장치 관리 서브미션 큐(VF1 A_SQ)의 처리 결과에 대한 응답 정보는 제 1 가상화 장치 관리 컴플리션 큐(VF1 A_CQ)에 대응할 수 있으며, 제 1 가상화 장치 서브미션 큐(VF1 I/O_SQ)의 처리 결과에 대한 응답 정보는 제 1 가상화 장치 입출력 컴플리션 큐(VF1 I/O_CQ)에 대응할 수 있다. 마찬가지로, 제 n 가상화 장치 관리 서브미션 큐(VFn A_SQ)의 처리 결과에 대한 응답 정보는 제 n 가상화 장치 관리 컴플리션 큐(VFn A_CQ)에 대응할 수 있으며, 제 n 가상화 장치 서브미션 큐(VFn I/O_SQ)의 처리 결과에 대한 응답 정보는 제 n 가상화 장치 입출력 컴플리션 큐(VFn I/O_CQ)에 대응할 수 있다.
또한, 공통 리스판스 매니저(2237)는 수집된 응답 정보를 제 1 내지 제 n 가상화 장치 리스판서(2238_1~2238_n)에 분배하는 동작을 수행한다. 예를 들어, 공통 리스판스 매니저(2237)는 제 1 가상화 장치 관리 컴플리션 큐(VF1 A_CQ) 및 제 1 가상화 장치 입출력 컴플리션 큐(VF1 I/O_CQ)의 정보를 제 1 가상화 장치 리스판서(2238_1)에 분배하며, 제 n 가상화 장치 관리 컴플리션 큐(VFn A_CQ) 및 제 n 가상화 장치 입출력 컴플리션 큐(VFn I/O_CQ)의 정보를 제 n 가상화 장치 리스판서(2238_n)에 분배한다.
제 1 내지 제 n 가상화 장치 리스판서(2238_1~2238_n)는 공통 리스판스 매니저(2237)에 공통으로 연결되며, 대응하는 가상화 장치 관리 컴플리션 큐(VF A_CQ) 및 가상화 장치 입출력 컴플리션 큐(VF I/O_CQ)의 정보를 수신한다. 제 1 내지 제 n 가상화 장치 리스판서(2238_1~2238_n)는 수신한 컴프리션 큐의 정보를 호스트 메모리(2140)에 기록한다.
예를 들어, 제 1 가상화 장치 리스판서(2238_1)는 제 1 가상화 장치 관리 컴플리션 큐(VF1 A_CQ)의 정보 또는 제 1 가상화 장치 입출력 컴플리션 큐(VF1 I/O_CQ)의 정보를 각각 호스트 메모리(2140)의 제 1 가상화 장치 관리 큐 저장 영역(2141_a) 및 제 1 가상화 장치 입출력 큐 저장 영역(2141_b)에 기록할 수 있다. 다른 예로, 제 n 가상화 장치 리스판서(2238_n)는 제 n 가상화 장치 관리 컴플리션 큐(VFn A_CQ)의 정보 또는 제 n 가상화 장치 입출력 컴플리션 큐(VFn I/O_CQ)의 정보를 각각 호스트 메모리(2140)의 제 n 가상화 장치 관리 큐 저장 영역(214n_a) 및 제 n 가상화 장치 입출력 큐 저장 영역(214n_b)에 기록할 수 있다.
또한, 제 1 내지 제 n 가상화 장치 리스판서(2238_1~2238_n)는 각각 컴플리션 큐에 대한 기록 동작을 완료한 후에, 인터럽트 신호를 발생하여 이를 호스트 장치(2100)에 통지할 수 있다. 이 경우, 호스트 장치(2100)는 인터럽트 신호에 응답하여, 호스트 메모리(2140)의 처리 결과에 대한 정보를 확인하고, 이를 처리할 수 있다.
계속해서 도 4를 참조하면, 버퍼 컨트롤러(2212)는 가상화 장치 관리 모듈(2230) 및 버퍼 메모리(2231)에 연결된다. 버퍼 컨트롤러(2212)는 DMA 유닛(2236)의 제어에 응답하여 읽기 동작 또는 쓰기 동작을 수행하도록 버퍼 메모리(2213)를 제어하는 동작을 수행한다.
버퍼 메모리(2213)는 읽기 동작 또는 쓰기 동작에 있어서, 읽기 데이터 또는 쓰기 데이터가 임시로 저장되는 버퍼의 역할을 수행한다. 예를 들어, 버퍼 메모리(2213)는 DRAM으로 구현될 수 있다. 그러나 이는 예시적인 것이며, 버퍼 메모리(2213)는 SRAM(static RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리로 구현되거나, 또는 이들의 조합으로 구현될 수도 있다.
불휘발성 메모리 인터페이스(2214)는 복수의 채널들(CH1~CHn)을 통하여 불휘발성 메모리들(2221~222n)에 연결되며, 스토리지 컨트롤러(2210)와 불휘발성 메모리들(2221~222n) 사이의 인터페이싱을 제공한다.
상술한 바와 같이, 본 발명의 실시 예에 따른 가상화 관리 모듈(2230)은 호스트 장치(2100)의 복수의 가상화 장치들(2111~211n)이 각각 독립적으로 구동될 수 있도록, 각 가상화 장치에 대응하는 관리 큐 및 입출력 큐들을 저장하고 처리하는 기능을 지원할 수 있다. 더욱이, 본 발명의 실시 예에 따른 가상화 관리 모듈(2230)은 각 가상화 장치가 요구하는 동작이 스토리지 장치(2200)에서 병렬적으로 처리될 수 있도록, 각 가상화 장치마다 독립적인 패칭(fetching), 파싱(parsing), 응답(responsing) 동작을 수행하도록 구형될 수 있다. 이에 더하여, 본 발명의 실시 예에 따른 스토리지 장치(2200)는 각 가상화 장치가 요구하는 동작에 대한 병렬 처리를 보다 효과적으로 지원하기 위하여, 복수의 코어들(2211_1~2211_n)을 구비할 수 있다.
결국, 본 발명의 실시 예에 따른 스토리지 장치(2200)는 큐 베이스의 커맨드 인터페이스 방식을 지원하면서 동시에 가상화 기능을 함께 지원할 수 있을 뿐만 아니라, 호스트의 요구를 보다 빠르게 처리할 수 있다.
한편, 상술한 설명은 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 예를 들어, 도 3 및 도 4에서 메모리 시스템(2000)은 SR-IOV 방식의 가상화 기능을 지원하는 것으로 설명되었다. 다만 이는 예시적인 것이며, 본 발명의 메모리 시스템(2000)은 MR-IOV 방식에도 적용될 수 있음이 이해될 것이다. 또한 도 3 및 도 4에서 메모리 시스템(2000)은 NVMe 프로토콜 방식에 따른 인터페이스 방식을 지원하는 것으로 설명되었다. 다만 이는 예시적인 것이며, 본 발명의 메모리 시스템(2000)은 PCIe 인터페이스를 기반으로 하는 방식, 예를 들어, PQI, PQI/NVMe 방식에도 적용될 수 있음이 이해될 것이다. 또한 도 3 및 도 4에서 복수의 가상화 장치들 모두에 독립적인 가상화 장치 관리 큐가 할당되는 것으로 설명되었다. 다만 이는 예시적인 것이며, 복수의 가상화 장치들 중 적어도 하나의 가상화 장치에만 가상화 장치 관리 큐가 할당 될 수도 있다.
도 5는 도 3의 호스트 장치(2100) 및 스토리지 장치(2200)의 동작을 보여주기 위한 순서도이다. 이하에서는 도 3 내지 도 5를 참조하여, 호스트 장치(2100) 및 스토리지 장치(2200)의 동작이 좀더 자세히 설명될 것이다.
S110 단계에서, 호스트의 물리 장치(2110_a) 또는 가상화 장치들(2111~211n)에 의하여 커맨드(CMD)가 생성된다. 물리 장치(2110_a)에 의하여 생성된 커맨드는 호스트 메모리(2140)의 물리 장치 관리 큐 저장 영역(2140_a) 또는 물리 장치 입출력 큐 저장 영역(2140_b)에 저장될 수 있다. 가상화 장치들(2111~211n)에 의하여 생성된 커맨드는 각각 대응하는 가상화 장치 관리 큐 저장 영역(2141_a~214n_a) 또는 가상화 장치 입출력 큐 저장 영역(2141_b~214n_b)에 저장될 수 있다. 이 경우, 각 커맨드는 써큘러 큐(cicular queue) 형태의 서브미션 큐(submission queue)에 입력되는 방식으로 저장될 수 있다.
S120 단계에서, 호스트 장치(120)는 링 도어벨(Ring doorbell)을 생성하며, 이를 스토리지 장치(2200)에 전송한다. 이 후 S130 단계에서, 스토리지 장치(2200)가 호스트 메모리(2140)에 저장된 커맨드를 처리하기 위한 동작이 수행된다.
구체적으로, S131 단계에서, 제 1 내지 제 n 가상화 장치 커맨드 페처들(2232_1~2232_n)은 각각 링 도어벨에 응답하여 호스트 메모리(2140)의 써큘러 큐에 저장된 커맨드 정보를 패치한다. 예를 들어, 제 1 가상화 장치 커맨드 패처(2232_1)는 링 도어벨에 응답하여, 제 1 가상화 장치 관리 큐 저장 영역(2141_a) 또는 제 1 가상화 장치 입출력 큐 저장 영역(2141_b)의 서브미션 큐에 저장된 커맨드 정보를 패치한다.
S132 단계에서, 제 1 내지 제 n 가상화 장치 커맨드 파서들(2233_1~2233_n)은 대응하는 제 1 내지 제 n 가상화 장치 커맨드 페처들(2232_1~2232_n)에 저장된 커맨드의 특성 등을 분석하는 파싱 동작을 수행한다. 파싱된 커맨드들은 이후 모두 커맨드 디스패처(2234)에 전달된다.
S133 단계에서, 커맨드 디스패처(2234)는 제 1 내지 제 n 가상화 장치 커맨드 파서들(2233_1~2233_n) 파싱된 커맨드들을 수신하며, 해당 파싱된 커맨드들을 적절하게 코어들(2211_1~2211_n)에 분배한다. 예를 들어, 커맨드 디스패처(2234)는 복수의 코어들(2211_1~2211_n)이 병렬적으로 동작할 수 있도록 파싱된 커맨드들을 분배할 것이다.
S134 단계에서, 복수의 코어들(2211_1~2211_n)은 각각 수신된 커맨드들을 DMA 유닛(2236)이 처리할 수 있도록 적절하게 조정(adjusting)하는 동작을 수행한다. 이 경우, 예를 들어, 복수의 코어들(2211_1~2211_n)은 각각 대응하는 캐시 메모리들(2211_1'~2211_n')에 저장된 명령어(instruction) 정보를 참조하여, 조정하는 동작을 수행할 수 있다.
S135 단계에서, DMA 유닛(2236)에 의하여 쓰기 또는 읽기 동작이 수행된다. 예를 들어, 쓰기 동작이 수행되는 경우, DMA 유닛(2236)의 쓰기 DMA(2236_1)는 DMA 매니저(2235)의 제어에 따라 불휘발성 메모리들(2221~222n)에 데이터를 기입하는 동작을 수행할 것이다. 예를 들어, 읽기 동작이 수행되는 경우, DMA 유닛(2236)의 읽기 DMA(2236_2)는 DMA 매니저(2235)의 제어에 따라 불휘발성 메모리들(2221~222n)에 저장된 데이터를 독출하는 동작을 수행할 것이다.
S136 단계에서, 공통 리스판스 매니저(2237)는 각 커맨드의 처리 결과에 대한 응답 정보(response information)를 수신한다. 예를 들어, 호스트 장치(2100)의 가상화 장치들(2111~211n)에 의하여 요청된 동작이 쓰기 또는 읽기 동작인 경우, 공통 리스판스 매니저(2237)는 해당 쓰기 또는 읽기 동작의 성공 여부에 대한 응답 정보를 수신할 수 있다. 이 후 공통 리스판스 매니저(2237)는 수신된 응답 정보들을 각각 대응하는 제 1 내지 제 n 가상화 장치 리스판서(2238_1~2238_n)에 분배한다.
S137 단계에서, 제 1 내지 제 n 가상화 장치 리스판서(2238_1~2238_n)는 각각 대응하는 응답 정보를 수신하고, 이를 호스트 메모리(2140)에 저장할 수 있다. 예를 들어, 물리 장치(2110_a)에 의하여 생성된 커맨드에 대한 처리 결과는 호스트 메모리(2140)의 물리 장치 관리 큐 저장 영역(2140_a) 또는 물리 장치 입출력 큐 저장 영역(2140_b)에 저장될 수 있다. 가상화 장치들(2111~211n)에 의하여 생성된 커맨드에 대한 처리 결과는 각각 대응하는 가상화 장치 관리 큐 저장 영역(2141_a~214n_a) 또는 가상화 장치 입출력 큐 저장 영역(2141_b~214n_b)에 저장될 수 있다. 이 경우, 각 커맨드는 써큘러 큐(cicular queue) 형태의 컴플리션 큐(completion queue)에 입력되는 방식으로 저장될 수 있다.
S138 단계에서, 컴플리션 큐에 응답 정보를 기입하는 동작이 완료된 후에, 스토리지 장치(2210)는 인터럽트 신호를 발생한다.
이 후, S140 단계에서, 호스트 장치(140)는 컴플리션 큐에 기입된 응답 정보에 기초하여, 해당 응답 정보를 처리하는 동작을 수행한다.
한편, 상술한 설명은 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 이하에서는, 본 발명의 기술적 사상에 따른 다양한 적용 에들 및 응용 예들이 보다 자세히 설명될 것이다.
도 6은 본 발명의 다른 실시 예에 따른 스토리지 장치(3210)를 보여주는 블록도이다. 도 6의 스토리지 장치(3210)는 도 4의 스토리지 장치(2210)와 유사하다. 따라서 유사한 구성요소는 유사한 참조번호를 사용하여 설명될 것이다. 또한 간결한 설명을 위하여, 도 4의 스토리지 장치(3210)와의 차이점이 중점적으로 설명될 것이다. 도 6을 참조하면, 스토리지 장치(3210)는 코어(3211), 캐시 메모리(3211'), 가상화 장치 관리 모듈(3230), 버퍼 컨트롤러(3212), 버퍼 메모리(3213), 그리고 불휘발성 메모리 인터페이스(3214)를 포함할 것이다.
도 4의 스토리지 장치(2210)와 달리, 도 6의 스토리지 장치(3210)는 하나의 싱글 코어(3211)만을 구비한다. 즉, 도 4의 스토리지 장치(3210)가 복수의 멀티 코어들(2211_1~2211_n)을 구비하고 있는데 반하여, 도 6의 스토리지 장치(3210)는 단지 하나의 싱글 코어(3211)만을 구비하고 있다. 따라서 도 6의 스토리지 장치(3210)는 작은 면적에 구현할 수 있다는 장점이 있다.
도 7 및 도 8은 본 발명의 다른 실시 예에 따른 스토리지 장치(4210)의 일 구성을 보여주는 블록도이다. 도 7 및 도 8의 스토리지 장치(4210)는 도 4의 스토리지 장치(2210)와 유사하다. 따라서 유사한 구성요소는 유사한 참조번호를 사용하여 설명될 것이다. 또한 간략하고 명확한 설명을 위하여, 도 4와 동일하거나 유사한 기능 및 동작을 수행하는 구성은 생략된 채, 변경된 구성이 중심적으로 도시되어 있다.
도 7을 참조하면, 스토리지 장치(4210)는 복수의 가상화 장치 패처들(4232_1~4232_n-1), 복수의 가상화 장치 커맨드 파서들(4233_1~4233_n-1), 그리고 커맨드 디스패처(4234)를 포함한다.
도 4의 스토리지 장치(2210)와 달리, 도 7의 스토리지 장치(4210)는 두 개의 가상화 장치에 대한 큐들이 하나의 가상화 장치 커맨드 패처 및 하나의 가상화 장치 커맨드 파서를 공유한다. 예를 들어, 도 7에 도시된 바와 같이, 제 1 가상화 장치와 관련된 큐들(VF1 A_SQ, VF1 I/O_SQ) 및 제 2 가상화 장치와 관련된 큐들(VF2 A_SQ, VF2 I/O_SQ)는 하나의 가상화 장치 커맨드 패처(4232_1) 및 하나의 가상화 장치 커맨드 파서(4233_1)를 공유한다. 따라서, 도 7의 스토리지 장치(4210)는 보다 작은 면적에 구현될 수 있다는 장점이 있다.
도 8을 참조하면, 스토리지 장치(4210)는 공통 리스판스 매니저(4237) 및 복수의 가상화 장치 리스판서들(4238_1~4238_n-1)을 포함한다.
도 4의 스토리지 장치(2210)와 달리, 도 8의 스토리지 장치(4210)는 두 개의 가상화 장치에 대한 응답 정보들이 하나의 가상화 장치 리스판서들을 공유한다. 예를 들어, 도 8에 도시된 바와 같이, 제 1 가상화 장치와 관련된 응답 정보들(VF1 A_CQ, VF1 I/O_CQ) 및 제 2 가상화 장치와 관련된 응답 정보들(VF2 A_CQ, VF2 I/O_CQ)는 하나의 가상화 장치 리스판서(4238_1)을 공유한다. 따라서, 도 8의 스토리지 장치(4210)는 작은 면적에 구현될 수 있다는 장점이 있다.
한편, 상술한 설명은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 예를 들어, 셋 이상의 가상화 장치들에 대한 큐들이 하나의 가상화 장치 커맨드 패처 및 하나의 가상화 장치 커맨드 파서를 공유하는 것 역시 가능함이 쉽게 이해될 것이다.
도 9는 본 발명의 다른 실시 예에 따른 스토리지 장치(5210)를 보여주는 블록도이다. 도 9의 스토리지 장치(5210)는 도 4의 스토리지 장치(2210)와 유사하다. 따라서 유사한 구성요소는 유사한 참조번호를 사용하여 설명될 것이다. 또한 간략하고 명확한 설명을 위하여, 도 4와 동일하거나 유사한 기능 및 동작을 수행하는 구성은 생략된 채, 변경된 구성이 중심적으로 도시되어 있다.
도 9를 참조하면, 스토리지 장치(5210)는 통합 관리 모듈(5230)을 포함한다. 그리고 통합 관리 모듈(5230)은 호스트 인터페이스(5231), 복수의 가상화 장치 커맨드 패처들(5232_1~5232_n), 물리 장치 커맨드 패처(5232), 복수의 가상화 장치 커맨드 파서들(5233_1~5233_n), 물리 장치 커맨드 파서(5233), 커맨드 디스패처(5234), DMA 매니저(5235), DMA 유닛(5236), 공통 리스판스 매니저(5237), 복수의 가상화 장치 리스판서들(5238_1~5238_n), 그리고 물리 장치 리스판서(5238)를 포함한다.
도 4의 가상화 장치 관리 모듈(2230)과 달리, 도 9의 통합 관리 모듈(5230)은 물리 장치(2110_a, 도 3 참조)에 대한 큐들을 처리하기 위한 구성을 더 포함한다. 즉, 도 9의 통합 관리 모듈(5230)은 복수의 가상화 장치들(2111~211n, 도 3 참조)에 대한 큐들을 저장하고 처리하기 위한 구성을 구비할 뿐만 아니라, 물리 장치(2110_a)에 대한 큐들을 저장하고 처리하기 위한 구성을 함께 구비한다.
구체적으로, 도 9의 통합 관리 모듈(5230)은 도 4의 가상화 장치 관리 모듈(2230)에 비하여 물리 장치 커맨드 패처(5232) 및 물리 장치 커맨드 파서(5233)를 더 포함한다. 그리고, 물리 장치 커맨드 패처(5232)를 통하여 패치된 물리 장치 관리 서브미션 큐(PF A_SQ) 및 물리 장치 입출력 서브미션 큐(PF I/O_SQ)는 가상화 장치들에 대한 큐들과 함께 통합적으로 처리된다.
이와 유사하게, 도 9의 통합 관리 모듈(5230)은 도 4의 가상화 장치 관리 모듈(2230)에 비하여 물리 장치 리스판서(5238)를 더 포함하며, 물리 장치(2110_a)가 요청하는 동작에 대한 응답 정보는 다른 가상화 장치들에 대한 응답 정보와 함께 통합적으로 처리된다.
도 10은 본 발명의 다른 실시 예에 따른 스토리지 장치(6210)를 보여주는 블록도이다. 도 10의 스토리지 장치(6210)는 도 9의 스토리지 장치(5210)와 유사하다. 따라서 유사한 구성요소는 유사한 참조번호를 사용하여 설명될 것이다.
도 10을 참조하면, 스토리지 장치(6210)는 통합 관리 모듈(6230)을 포함한다. 그리고 통합 관리 모듈(6230)은 호스트 인터페이스(6231), 복수의 가상화 장치 커맨드 패처들(6232_1~6232_n), 물리 장치 커맨드 패처(6232), 복수의 가상화 장치 커맨드 파서들(6233_1~6233_n), 물리 장치 커맨드 파서(6233), 커맨드 디스패처(6234), DMA 매니저(6235), DMA 유닛(6236), 공통 리스판스 매니저(6237), 복수의 가상화 장치 리스판서들(6238_1~6238_n), 물리 장치 리스판서(6238), 그리고 패치 정보 레지스터(6239)를 포함한다.
도 9의 통합 관리 모듈(5230)과 달리, 도 10의 통합 관리 모듈(6230)은 패칭 동작을 수행하기 위한 주소 정보를 저장하는 패치 정보 래지스터(Fetch Informatgion Register, FI register)(6239)를 더 포함한다. 이 경우, 복수의 가상화 장치 커맨드 패처들(6232_1~6232_n) 및 물리 장치 커맨드 패처(6232)는 각각 패치 정보 레지스터(6239)에 저장된 주소 정보를 참조하여, 패칭 동작을 수행할 수 있다.
좀더 자세히 설명하면, 복수의 가상화 장치 커맨드 패처들(6232_1~6232_n) 및 물리 장치 커맨드 패처(6232)가 호스트 메모리(2140)에 접근하여 패칭 동작을 수행하기 위해서는, 호스트 메모리(2140) 내의 대응하는 저장 영역에 대한 주소 정보를 참조하여야 한다. 예를 들어, 제 1 가상화 장치 커맨드 패처(6232_1)가 제 1 가상화 장치 관리 큐 저장 영역(2141_a)에 접근하여 패칭 동작을 수행하기 위해서는, 제 1 가상화 장치 커맨드 패처(6232_1)는 해당 제 1 가상화 장치 관리 큐 저장 영역(2141_a)에 대한 주소 정보를 참조하여야 한다.
이러한 주소 정보를 가상화 장치 커맨드 패처 내의 메모리에 저장하고 있는 도 4의 스토리지 장치(2210)와 달리, 도 10의 스토리지 장치(6210)는 별도로 패치 정보 레지스터(6229)를 구비하도록 구현될 수 있다.
도 11은 도 10의 패치 정보 레지스터(6239)의 데이터 구조를 보여주는 도면이다. 도 11을 참조하면, 패치 정보 레지스터(6239)는 물리 장치 영역(PF Area)(6239_1) 및 가상화 장치 영역(VF Area)(6239_2)을 포함한다.
물리 장치 영역(6239_1)은 물리 장치 큐 주소 정보 영역(6239_11)을 포함한다. 물리 장치 큐 주소 정보 영역(6239_11)에는 물리 장치 커맨드 패처(6233, 도 10 참조)가 호스트 메모리(2140)의 소정 영역에 접근하기 위한 주소 정보가 저장되어 있다. 예를 들어, 도 11에 도시된 바와 같이, 물리 장치 큐 주소 정보 영역(6239_11)에는 물리 장치의 관리 큐와 관련된 주소 정보들(PF A_SQ PI, PF A_CQ CI) 및 물리 장치의 입출력 큐와 관련된 주소 정보들(PF I/O_SQ PI, PF I/O_CQ CI)이 저장되어 있다.
구체적으로, 물리 장치(2110_a)에 의하여 생성된 커맨드가 호스트 메모리(2140)의 물리 장치 관리 큐 저장 영역(2140_a)의 서브미션 큐에 저장되는 경우, 호스트 장치(2100)는 도어벨(doorbell)을 생성하며, 이를 스토리지 장치(2200)에 전송한다. 이 경우, 도어벨(doorbell)에는 물리 장치(2110_a)에 대응하는 패처(6232)가 해당 커맨드에 접근하기 위한 정보가 포함되어 있다. 구체적으로, 도어벨에는 물리 장치 관리 서브미션 큐 프로듀서 인덱스(PF Administrator submission queue producer index, PF A_SQ PI) 및 물리 장치 관리 컴플리션 큐 프로듀서 인덱스(PF Administrator completion queue consumer index, PF A_CQ CI) 정보가 포함되어 있다. 그리고 해당 도어벨에 포함된 정보는 패치 정보 레지스터(6239)에 저장된다. 따라서, 이후 물리 장치 커맨드 패처(6239)는 패치 정보 레지스터(6239)에 저장된 주소 정보에 기초하여, 호스트 메모리(2140) 내의 대응하는 영역에 접근할 수 있다.
이와 유사하게, 물리 장치(2110_a)에 의하여 생성된 커맨드가 호스트 메모리(2140)의 물리 장치 입출력 큐 저장 영역(2140_b)의 서브미션 큐에 저장되는 경우, 도어벨에는 물리 장치 입출력 서브미션 큐 프로듀서 인덱스(PF I/O submission queue producer index, PF I/O_SQ PI) 및 물리 장치 입출력 컴플리션 큐 프로듀서 인덱스(PF I/O completion queue consumer index, PF I/O_CQ CI) 정보가 포함되어 있다. 그리고 해당 도어벨에 포함된 정보는 패치 정보 레지스터(6239)에 저장된다. 따라서, 이후 물리 장치 커맨드 패처(6239)는 패치 정보 레지스터(6239)에 저장된 주소 정보에 기초하여, 호스트 메모리(2140) 내의 대응하는 영역에 접근할 수 있다.
이와 유사하게, 복수의 가상화 장치들(2111~211n)에 의하여 생성된 커맨드가 가상화 장치 관리 큐 저장 영역들(2141_a~214n_a)의 서브미션 큐에 각각 저장되는 경우, 도어벨에는 가상화 장치 관리 서브미션 큐 프로듀서 인덱스(VF Administrator submission queue producer index, VF A_SQ PI) 및 가상화 장치 관리 컴플리션 큐 프로듀서 인덱스(VF I/O Administrator completion queue consumer index, VF A_CQ CI) 정보가 포함되어 있다. 그리고 해당 도어벨에 포함된 정보는 패치 정보 레지스터(6239)에 저장된다.
이와 유사하게, 복수의 가상화 장치들(2111~211n)에 의하여 의하여 생성된 커맨드가 가상화 장치 입출력 큐 저장 영역들(2141_b~214n_b)의 서브미션 큐에 각각 저장되는 경우, 도어벨에는 가상화 장치 입출력 서브미션 큐 프로듀서 인덱스(VF I/O submission queue producer index, VF A_SQ PI) 및 가상화 장치 입출력 컴플리션 큐 프로듀서 인덱스(VF I/O completion queue consumer index, VF A_CQ CI) 정보가 포함되어 있다. 그리고 해당 도어벨에 포함된 정보는 패치 정보 레지스터(6239)에 저장된다.
따라서, 이후 가상화 장치 커맨드 패처들(6232_1~6232_n)은 각각 패치 정보 레지스터(6239)에 저장된 주소 정보에 기초하여, 호스트 메모리(2140) 내의 대응하는 영역에 접근할 수 있다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템을 적용한 예를 보여주는 블록도이다. 여기에서, 메모리 시스템(11000)은 서버(server), 퍼스널 컴퓨터(PC), 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 연결되어 사용될 수 있다. 설명의 편의상, 플래시 메모리 모듈(11000)은 서버(10000)의 저장 장치로 사용된다고 가정된다. 서버(10000)는, 예를 들어, 엔터프라이즈 장치(enterprise device)라 칭해질 수 있다.
도 12를 참조하면, 서버(10000)는 메모리 시스템(11000), 전원 장치(12000), 보조 전원 장치(12500), 중앙처리장치(13000), 램(14000), 그리고 사용자 인터페이스(15000)를 포함한다. 그리고 메모리 시스템(11000)은 플래시 메모리(11000) 및 메모리 컨트롤러(11200)를 포함한다. 도 12에서 메모리 시스템(11000)은 하나의 플래시 메모리(11000)를 구비한 것과 같이 도시되어 있으나, 본 발명의 기술적 사상은 이에 한정되는 것이 아님이 이해될 것이다. 예를 들어, 도 12의 메모리 시스템(11000)은 복수의 플래시 메모리들, 또는 플래시 메모리와 다른 불휘발성 메모리들, 또는 이들의 조합을 포함할 수 있다. 또한 메모리 시스템(11000)은 메모리 컨트롤러(11200)와 플래시 메모리(11100)가 하나의 패키지 형태로 구현될 수 있다. 도 12에 도시된 메모리 시스템(11000)은 앞에서 설명한 바와 같이, 큐 베이스의 인터페이스 방식은 물론 가상화 기능을 동시에 지원할 수 있다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템이 적용된 휴대용 단말기를 나타내는 블록도이다. 도 13을 참조하여, 휴대용 단말기(20000)는 이미지 처리부(21000), 무선 송수신부(22000), 오디오 처리부(23000), DRAM(24000), 불휘발성 메모리 장치(25000), 사용자 인터페이스(26000), 그리고 컨트롤러(27000)를 포함할 수 있다.
이미지 처리부(21000)는 렌즈(21100), 이미지 센서(21200), 이미지 프로세서(21300), 그리고 디스플레이부(21400)를 포함할 수 있다. 무선 송수신부(22000)는 안테나(22100), RF 부(22200), 모뎀(22300)을 포함할 수 있다. 오디오 처리부(23000)는 오디오 프로세서(23100), 마이크(23200), 그리고 스피커(23300)를 포함할 수 있다. DRAM(24000)은 휴대용 단말기(20000)에서 처리되는 데이터를 임시적으로 저장할 수 있다. 불휘발성 메모리 장치(25000)는 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 제공될 수 있다.
컨트롤러(27000)는 응용 프로그램, 운영 체제 등을 구동하는 시스템 온 칩(SoC)으로 제공될 수 있다. 컨트롤러(27000)는 큐 베이스의 인터페이스 방식 및 가상화 기능을 지원하기 위하여 가상화 장치 관리 모듈을 구비할 수 있다. 시스템 온 칩에서 구동되는 운영 체제의 커널(Kernel)에는 입출력 스케줄러(I/O Scheduler) 및 불휘발성 메모리 장치(25000)를 제어하기 위한 장치 드라이버(Device Driver)가 포함될 수 있다. 장치 드라이버(Device driver)는 입출력 스케줄러에서 관리되는 동기 큐의 수를 참조하여 불휘발성 메모리 장치(25000)의 액세스 성능을 제어하거나, SoC 내부의 CPU 모드, DVFS 레벨 등을 제어할 수 있다.
불휘발성 메모리 장치 및/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 플래시 메모리 장치 및/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장 될 수 있다.
한편, 본 출원의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 출원의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 출원의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 출원의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
CMD: command
SQ: submission queue
CQ: completion queue
AQ: administrator queue
A_SQ: administrator submission queue
A_CQ: administrator completion queue
I/O_SQ:I/O submission queue
I/O_CQ: I/O completion queue
PF: Physical Function
VF: Virtual Function
PF A_Q Area: PF Administrator queue stroage area
PF I/O_Q Area: PF I/O Queue storage area
VF A_Q Area: VF Administrator queue stroage area
VF I/O_Q Area: VF I/O Queue storage area

Claims (10)

  1. 복수의 불휘발성 메모리들; 및
    상기 복수의 불휘발성 메모리들에 연결되며, 상기 복수의 불휘발성 메모리들을 제어하는 스토리지 컨트롤러를 포함하며,
    상기 스토리지 컨트롤러는 호스트와 큐 베이스의 커맨드 교환 방식에 기초하여 인터페이스 동작을 수행하고, 상기 호스트의 복수의 가상화 장치들 각각에 대응하는 복수의 관리 큐 정보에 접근하여 처리하는, 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 스토리지 컨트롤러는
    상기 복수의 가상화 장치들 각각에 대응하며, 대응하는 가상화 장치의 관리 서브미션 큐 정보 또는 입출력 서브미션 큐 정보를 패치하는 복수의 패처들을 포함하는, 스토리지 장치.
  3. 제 2 항에 있어서,
    상기 복수의 패처들은 호스트로부터 수신된 도어벨 신호에 응답하여, 대응하는 가상화 장치의 관리 서브미션 큐 정보 또는 입출력 서브미션 큐 정보가 저장된 상기 호스트의 호스트 메모리에 각각 접근하는, 스토리지 장치.
  4. 제 2 항에 있어서,
    상기 스토리지 컨트롤러는
    상기 복수의 패처들에 각각 연결되며, 상기 복수의 패처들 대응하는 패처에 저장된 관리 서브미션 큐 정보 또는 입출력 서브미션 큐 정보를 분석하는 복수의 파서들을 더 포함하는, 스토리지 장치.
  5. 제 4 항에 있어서,
    상기 스토리지 컨트롤러는
    상기 복수의 파서들에 공통으로 연결된 디스패처; 및
    복수의 코어들을 더 포함하며,
    상기 디스패처는 상기 복수의 파서들로부터 복수의 관리 서브미션 큐 정보 또는 복수의 입출력 서브미션 큐 정보를 수신하고, 상기 복수의 코어들이 병렬적으로 동작할 수 있도록 상기 복수의 관리 서브미션 큐 정보 또는 복수의 입출력 서브미션 큐 정보를 상기 복수의 코어들에 할당하는, 스토리지 장치.
  6. 제 5 항에 있어서,
    상기 스토리지 컨트롤러는
    읽기 및 쓰기 동작을 제어하는 DMA 유닛; 및
    상기 복수의 코어들에 각각 연결된 복수의 캐시 메모리들을 더 포함하며,
    상기 복수의 캐시 메모리들은 대응하는 코어에 할당된 관리 서브미션 큐 정보 또는 입출력 서브미션 큐 정보가 상기 DMA 유닛에 의하여 처리될 수 있도록 하는 명령어 정보를 포함하는, 스토리지 장치.
  7. 제 1 항에 있어서,
    상기 스토리지 컨트롤러는 상기 호스트와 NVMe 방식에 의하여 인터페이스 동작을 수행하는, 스토리지 장치.
  8. 제 1 항에 있어서,
    상기 호스트는 SR-IOV 방식에 의하여 상기 복수의 가상화 장치들을 구현하는, 스토리지 장치.
  9. 제 1 항에 있어서,
    상기 복수의 불휘발성 메모리들 중 적어도 하나는 3차원 구조의 불휘불성 메모리인, 스토리지 장치.
  10. 가상화 기능을 지원하는 사용자 장치에 있어서,
    상기 사용자 장치는
    적어도 하나의 물리 장치 및 적어도 하나의 가상화 장치를 포함하는 호스트 코어; 및
    상기 호스트 코어에 대한 워킹 메모리로 동작하는 호스트 메모리를 포함하며,
    상기 호스트 메모리는
    상기 적어도 하나의 물리 장치에 대응하는 적어도 하나의 물리 장치 관리 큐 및 적어도 하나의 물리 장치 입출력 큐에 대한 정보를 저장하는 물리 장치 큐 영역; 그리고
    상기 적어도 하나의 가상화 장치에 대응하는 상기 적어도 하나의 가상화 장치 관리 큐의 쌍 및 상기 적어도 하나의 가상화 장치에 대응하는 복수의 가상화 장치 입출력 큐에 대한 정보를 저장하는 가상화 장치 큐 영역을 포함하는, 사용자 장치.

KR1020150017512A 2015-02-04 2015-02-04 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치 KR102336443B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150017512A KR102336443B1 (ko) 2015-02-04 2015-02-04 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
US15/003,031 US10467037B2 (en) 2015-02-04 2016-01-21 Storage device and user device supporting virtualization function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150017512A KR102336443B1 (ko) 2015-02-04 2015-02-04 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치

Publications (2)

Publication Number Publication Date
KR20160096279A true KR20160096279A (ko) 2016-08-16
KR102336443B1 KR102336443B1 (ko) 2021-12-08

Family

ID=56553088

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150017512A KR102336443B1 (ko) 2015-02-04 2015-02-04 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치

Country Status (2)

Country Link
US (1) US10467037B2 (ko)
KR (1) KR102336443B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180079168A (ko) * 2016-12-30 2018-07-10 삼성전자주식회사 이더넷 솔리드 스테이트 드라이브에서 데이터 패턴 매칭 및 기계 학습 알고리즘들을 지원하는 장치 및 방법
WO2020227136A1 (en) * 2019-05-06 2020-11-12 Micron Technology, Inc. Class of service for multi-function devices
KR20200141383A (ko) * 2019-06-10 2020-12-18 삼성전자주식회사 큐 페어 기반 NVMeoF 이니시에이터-타겟 시스템에서 I/O 전송을 위한 방법 및 시스템
KR20220059906A (ko) * 2020-11-03 2022-05-10 서울대학교산학협력단 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
KR20230011871A (ko) * 2021-07-14 2023-01-25 서울대학교산학협력단 스토리지 장치 및 연산 장치를 포함하는 가상화 장치, 및 이의 동작하는 방법
KR102619406B1 (ko) * 2023-07-05 2024-01-02 메티스엑스 주식회사 메모리 액세스 장치 및 이를 이용하여 코어를 프로그래밍 엔진에 할당하기 위한 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235102B2 (en) * 2015-11-01 2019-03-19 Sandisk Technologies Llc Methods, systems and computer readable media for submission queue pointer management
WO2017187582A1 (ja) * 2016-04-27 2017-11-02 株式会社日立製作所 計算機システム及びサーバ
US10452279B1 (en) 2016-07-26 2019-10-22 Pavilion Data Systems, Inc. Architecture for flash storage server
CN107818056B (zh) * 2016-09-14 2021-09-07 华为技术有限公司 一种队列管理方法及装置
KR102410671B1 (ko) 2017-11-24 2022-06-17 삼성전자주식회사 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법
US10564872B2 (en) * 2018-06-29 2020-02-18 Western Digital Technologies, Inc. System and method for dynamic allocation to a host of memory device controller memory resources
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11074013B2 (en) * 2018-08-07 2021-07-27 Marvell Asia Pte, Ltd. Apparatus and methods for providing quality of service over a virtual interface for solid-state storage
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
CN111722786A (zh) * 2019-03-21 2020-09-29 阿里巴巴集团控股有限公司 基于NVMe设备的存储系统
US11475167B2 (en) * 2020-01-29 2022-10-18 International Business Machines Corporation Reserving one or more security modules for a secure guest
US11733920B2 (en) 2020-09-10 2023-08-22 Western Digital Technologies, Inc. NVMe simple copy command support using dummy virtual function
KR20220067795A (ko) * 2020-11-18 2022-05-25 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
US11461052B1 (en) * 2021-04-08 2022-10-04 Western Digital Technologies, Inc. Storage system with dual submission queue doorbell registers and method for use in a multi-tenant system
US11556268B2 (en) 2021-04-22 2023-01-17 Western Digital Technologies, Inc. Cache based flow for a simple copy command
US20230057633A1 (en) * 2021-08-20 2023-02-23 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for transferring data between interconnected devices
KR20240073356A (ko) 2022-11-18 2024-05-27 삼성전자주식회사 중앙형 저장 장치, 그것을 갖는 차량 내부 전자 시스템, 및 그것의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100014782A (ko) * 2007-05-22 2010-02-11 인터내셔널 비지네스 머신즈 코포레이션 가상화 스토리지 실행 제어기
KR20110082328A (ko) * 2010-01-11 2011-07-19 주식회사 하이닉스반도체 3차원 구조의 비휘발성 메모리 소자 및 그 제조 방법
KR20130111593A (ko) * 2010-12-23 2013-10-10 인텔 코포레이션 가상화를 통한 스마트 장치의 직접적인 공유
KR20140088834A (ko) * 2013-01-03 2014-07-11 삼성전자주식회사 가변구조형 메모리 디바이스

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009025381A1 (ja) 2007-08-23 2009-02-26 Nec Corporation I/oシステムおよびi/o制御方法
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US7958298B2 (en) 2008-03-26 2011-06-07 Lsi Corporation System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment
US8122225B2 (en) 2008-08-12 2012-02-21 International Business Machines Corporation LUN masking/mapping in a SR-IOV enabled SAS adapter
US8346997B2 (en) 2008-12-11 2013-01-01 International Business Machines Corporation Use of peripheral component interconnect input/output virtualization devices to create redundant configurations
US8239655B2 (en) 2010-01-18 2012-08-07 Vmware, Inc. Virtual target addressing during direct data access via VF of IO storage adapter
US8473947B2 (en) 2010-01-18 2013-06-25 Vmware, Inc. Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8489699B2 (en) 2010-08-13 2013-07-16 Vmware, Inc. Live migration of virtual machine during direct access to storage over SR IOV adapter
US8627136B2 (en) * 2010-12-27 2014-01-07 Netapp Inc. Non-disruptive failover of RDMA connection
US8521941B2 (en) 2010-12-28 2013-08-27 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US8495252B2 (en) 2011-01-17 2013-07-23 International Business Machines Corporation Implementing PCI-express memory domains for single root virtualized devices
US8543754B2 (en) 2011-02-25 2013-09-24 International Business Machines Corporation Low latency precedence ordering in a PCI express multiple root I/O virtualization environment
US8782128B2 (en) * 2011-10-18 2014-07-15 International Business Machines Corporation Global queue pair management in a point-to-point computer network
US9003071B2 (en) 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US9258365B2 (en) * 2013-03-15 2016-02-09 International Business Machines Corporation Remote direct memory access acceleration via hardware context in non-native applciations
US9298648B2 (en) * 2013-05-08 2016-03-29 Avago Technologies General Ip (Singapore) Pte Ltd Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
US9262192B2 (en) * 2013-12-16 2016-02-16 Vmware, Inc. Virtual machine data store queue allocation
US9501245B2 (en) * 2014-05-02 2016-11-22 Cavium, Inc. Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host
KR102255216B1 (ko) 2014-11-20 2021-05-24 삼성전자주식회사 Pci 장치와 이를 포함하는 pci 시스템
US9886405B1 (en) * 2015-03-30 2018-02-06 Amazon Technologies, Inc. Low latency write requests over a network using a pipelined I/O adapter device
US10838852B2 (en) * 2015-04-17 2020-11-17 Samsung Electronics Co., Ltd. System and method to extend NVME queues to user space
US10275160B2 (en) * 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100014782A (ko) * 2007-05-22 2010-02-11 인터내셔널 비지네스 머신즈 코포레이션 가상화 스토리지 실행 제어기
KR20110082328A (ko) * 2010-01-11 2011-07-19 주식회사 하이닉스반도체 3차원 구조의 비휘발성 메모리 소자 및 그 제조 방법
KR20130111593A (ko) * 2010-12-23 2013-10-10 인텔 코포레이션 가상화를 통한 스마트 장치의 직접적인 공유
KR20140088834A (ko) * 2013-01-03 2014-07-11 삼성전자주식회사 가변구조형 메모리 디바이스

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180079168A (ko) * 2016-12-30 2018-07-10 삼성전자주식회사 이더넷 솔리드 스테이트 드라이브에서 데이터 패턴 매칭 및 기계 학습 알고리즘들을 지원하는 장치 및 방법
WO2020227136A1 (en) * 2019-05-06 2020-11-12 Micron Technology, Inc. Class of service for multi-function devices
US11354147B2 (en) 2019-05-06 2022-06-07 Micron Technology, Inc. Class of service for multi-function devices
US11593133B2 (en) 2019-05-06 2023-02-28 Micron Technology, Inc. Class of service for multi-function devices
KR20200141383A (ko) * 2019-06-10 2020-12-18 삼성전자주식회사 큐 페어 기반 NVMeoF 이니시에이터-타겟 시스템에서 I/O 전송을 위한 방법 및 시스템
KR20220059906A (ko) * 2020-11-03 2022-05-10 서울대학교산학협력단 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
KR20230011871A (ko) * 2021-07-14 2023-01-25 서울대학교산학협력단 스토리지 장치 및 연산 장치를 포함하는 가상화 장치, 및 이의 동작하는 방법
KR102619406B1 (ko) * 2023-07-05 2024-01-02 메티스엑스 주식회사 메모리 액세스 장치 및 이를 이용하여 코어를 프로그래밍 엔진에 할당하기 위한 방법

Also Published As

Publication number Publication date
US20160224248A1 (en) 2016-08-04
US10467037B2 (en) 2019-11-05
KR102336443B1 (ko) 2021-12-08

Similar Documents

Publication Publication Date Title
KR102336443B1 (ko) 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
US11755527B2 (en) Techniques for command validation for access to a storage device by a remote client
KR102371916B1 (ko) 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
US10353587B2 (en) Data storage device and method of processing data thereof
US20160232103A1 (en) Block storage apertures to persistent memory
KR102365312B1 (ko) 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
KR20190066466A (ko) 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법
CN109284241A (zh) 存储等待时间信息的存储设备、处理器和计算系统
US20150346795A1 (en) Multi-host power controller (mhpc) of a flash-memory-based storage device
TWI636366B (zh) 資料冗餘的處理方法及其相關電腦系統
US11068283B2 (en) Semiconductor apparatus, operation method thereof, and stacked memory apparatus having the same
US20150347016A1 (en) Input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
US10901733B1 (en) Open channel vector command execution
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
US20170344311A1 (en) Method of operating a memory device
US20210240642A1 (en) Data storage device with an exclusive channel for flag checking of read data, and non-volatile memory control method
US20230333858A1 (en) Methods and apparatus to boot from block devices
EP4148572B1 (en) Computational storage device and storage system including the computational storage device
US20240143498A1 (en) Methods, devices, and systems for allocating memory space
US20230409495A1 (en) Storage device, operation method of the storage device, and electronic system including the storage device

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