KR20220003757A - 메모리 시스템 및 메모리 시스템의 동작방법 - Google Patents

메모리 시스템 및 메모리 시스템의 동작방법 Download PDF

Info

Publication number
KR20220003757A
KR20220003757A KR1020200081367A KR20200081367A KR20220003757A KR 20220003757 A KR20220003757 A KR 20220003757A KR 1020200081367 A KR1020200081367 A KR 1020200081367A KR 20200081367 A KR20200081367 A KR 20200081367A KR 20220003757 A KR20220003757 A KR 20220003757A
Authority
KR
South Korea
Prior art keywords
virtual function
function controller
memory
virtual
controller
Prior art date
Application number
KR1020200081367A
Other languages
English (en)
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 KR1020200081367A priority Critical patent/KR20220003757A/ko
Priority to US17/148,301 priority patent/US11782746B2/en
Priority to CN202110249073.4A priority patent/CN113885783B/zh
Publication of KR20220003757A publication Critical patent/KR20220003757A/ko
Priority to US18/363,324 priority patent/US20230376340A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

메모리 시스템은, 호스트의 제1 및 제2 가상 머신에 각각 대응하는 제1 및 제2 가상 기능 컨트롤러; 버퍼 메모리; 상기 제1 및 제2 가상 기능 컨트롤러에 의해 공유된 네임스페이스; 및 상기 공유된 네임스페이스를 제어하는 메모리 컨트롤러를 포함하고, 상기 제1 가상 기능 컨트롤러는 상기 제1 가상 머신으로부터 수신한 상기 공유된 네임스페이스에 대응하는 커맨드를 상기 제2 가상 기능 컨트롤러로 제공하고, 상기 제2 가상 기능 컨트롤러는 상기 제공된 커맨드에 응답하여 상기 커맨드에 대응하는 데이터가 상기 공유된 네임스페이스로부터 상기 버퍼 메모리에 로드되도록 상기 메모리 컨트롤러를 제어하고, 상기 제1 가상 기능 컨트롤러는 상기 버퍼 메모리에 로드된 상기 데이터를 상기 제1 가상 머신으로 제공한다.

Description

메모리 시스템 및 메모리 시스템의 동작방법 {MEMORY SYSTEM AND OPERATION METHOD THEREOF}
본 발명은 복수의 가상 기능(virtual function)들을 지원하는 메모리 시스템에 관한 발명이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 복수의 가상 기능(virtual function)들을 지원하는 메모리 시스템의 액세스 성능이 향상될 수 있는 메모리 시스템 및 그의 동작 방법을 제공하고자 한다.
본 발명의 실시 예에 따른 메모리 시스템은, 호스트의 제1 및 제2 가상 머신에 각각 대응하는 제1 및 제2 가상 기능 컨트롤러; 버퍼 메모리; 상기 제1 및 제2 가상 기능 컨트롤러에 의해 공유된 네임스페이스; 및 상기 공유된 네임스페이스를 제어하는 메모리 컨트롤러를 포함하고, 상기 제1 가상 기능 컨트롤러는 상기 제1 가상 머신으로부터 수신한 상기 공유된 네임스페이스에 대응하는 커맨드를 상기 제2 가상 기능 컨트롤러로 제공하고, 상기 제2 가상 기능 컨트롤러는 상기 제공된 커맨드에 응답하여 상기 커맨드에 대응하는 데이터가 상기 공유된 네임스페이스로부터 상기 버퍼 메모리에 로드되도록 상기 메모리 컨트롤러를 제어하고, 상기 제1 가상 기능 컨트롤러는 상기 버퍼 메모리에 로드된 상기 데이터를 상기 제1 가상 머신으로 제공한다.
본 발명의 실시 예에 따르면, 호스트의 제1 및 제2 가상 머신에 각각 대응하는 제1 및 제2 가상 기능 컨트롤러 및 상기 제1 및 제2 가상 기능 컨트롤러에 의해 공유된 네임스페이스를 포함하는 메모리 시스템의 동작 방법은, 상기 제1 가상 기능 컨트롤러가, 상기 제1 가상 머신으로부터 수신한 상기 공유된 네임스페이스에 대응하는 커맨드를 상기 제2 가상 기능 컨트롤러로 제공하는 단계; 상기 제2 가상 기능 컨트롤러가, 상기 제공된 커맨드에 응답하여 상기 커맨드에 대응하는 데이터를 상기 공유된 네임스페이스로부터 상기 메모리 시스템에 포함된 버퍼 메모리에 로드하는 단계; 및 상기 제1 가상 기능 컨트롤러가, 상기 버퍼 메모리에 로드된 상기 데이터를 상기 제1 가상 머신으로 제공한다.
본 발명은 복수의 가상 기능(virtual function)들을 지원하는 메모리 시스템의 액세스 성능이 향상될 수 있는 메모리 시스템 및 그의 동작 방법을 제공할 수 있다.
도 1 및 도 2는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 도시한 도면이다.
도 3은 하나의 가상 기능이 복수의 커맨드 동작을 수행하는 경우의 동작을 설명하기 위한 도면이다.
도 4 내지 도 6은 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 7 내지 도 9는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1 및 도 2는 본 발명의 실시 예에 따른 메모리 시스템(300)을 포함하는 데이터 처리 시스템(100)을 도시한 도면이다.
먼저 도 1을 참조하면, 데이터 처리 시스템(100)은 서로 연결된 호스트 시스템(200)과 메모리 시스템(300)을 포함할 수 있다.
호스트 시스템(200)은 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
호스트 시스템(200)은 적어도 하나의 운영 체제(OS: operating system)를 포함할 수 있다. 운영 체제는 호스트 시스템(200)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(300)을 사용하는 사용자와 호스트 시스템(200) 간에 상호 동작을 제공한다. 운영 시스템은 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 호스트 시스템(200)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있다.
메모리 시스템(300)은 호스트 시스템(200)의 요청에 응하여 호스트 시스템(200)의 데이터를 저장하기 위해 동작할 수 있다. 예를 들어, 메모리 시스템(300)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
메모리 시스템(300)은 다양한 종류의 저장 장치에 의해 구현될 수 있다. 예를 들어, 상기 저장 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
호스트 시스템(200)은 호스트 컴퓨터(210), 호스트 메모리(270) 및 인터페이스 포트(250)를 포함할 수 있다.
호스트 컴퓨터(210)는 호스트 시스템(200)의 운영 체제를 구동하고, 프로그램들의 명령어들을 실행할 수 있다. 호스트 컴퓨터(210)는 단일 코어 또는 멀티 코어로 구현될 수 있다.
호스트 시스템(200)은 복수의 가상 머신들(212, 214, 216)을 구동할 수 있다. 복수의 가상 머신들(212, 214, 216) 호스트 컴퓨터(210)와 같은 물리적 머신에서 소프트웨어로 구현될 수 있다. 각각의 가상 머신은 게스트 운영 체제로서 작용할 수 있다. 복수의 가상 머신들(212, 214, 216)은 호스트 시스템(200)에 연결된 장치 간 통신을 위한 가상 기능 드라이버(VF driver)를 포함할 수 있다. 도 1에서 복수의 가상 머신들(212, 214, 216) 및 가상 기능 드라이버(VF driver)들은 파선으로 도시된다.
호스트 메모리(270)는 호스트 시스템(200)에서 구동되는 운영 체제와 관련된 데이터를 저장하는 휘발성 메모리일 수 있다. 예를 들어, 호스트 메모리(270)는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리로 구현될 수 있다.
인터페이스 포트(250)는 호스트 시스템(200)과 연결되는 장치와의 데이터 통신을 지원할 수 있다. 예를 들어, 인터페이스 포트(250)는 호스트 시스템(200)과 메모리 시스템(300)의 데이터 통신을 지원할 수 있다.
호스트 시스템(200)은 복수의 가상 머신들(212, 214, 216)을 관리하기 위한 가상 머신 관리자(230)를 더 포함할 수 있다. 가상 머신 관리자(230)는 하이퍼바이저로 지칭될 수도 있다. 가상 머신 관리자(230)는 각 가상 머신에 하드웨어 리소스를 할당하고, 각 가상 머신이 할당된 리소스에 액세스하도록 허용할 수 있다.
만약 복수의 가상 머신들(212, 214, 216)과 다른 장치 간의 데이터 입출력이 가상 머신 관리자(230)의 중계 하에 수행되면 상기 데이터 입출력의 병목 현상이 발생할 수 있다. 상기 병목 현상을 방지하기 위해, 인터페이스 포트(250)는 단일 루트 입출력 가상화(SR-IOV: Single root I/O virtualization)와 같은 서버 가상화 기술을 지원할 수 있다.
메모리 시스템(300)은 복수의 메모리 장치들(352, 354, 356, 358), 메모리 컨트롤러(330), 버퍼 메모리(370) 및 물리 기능 컨트롤러(310)를 포함할 수 있다. 메모리 시스템(300)은 SR-IOV를 지원할 수 있다.
물리 기능 컨트롤러(310)는 메모리 시스템(300)과 메모리 시스템(300)에 연결된 호스트 시스템(200) 간의 데이터 통신을 지원할 수 있다. 예를 들어, 물리 기능 컨트롤러(310)는 인터페이스 포트(250) 를 통해 호스트 컴퓨터(210)와의 통신을 지원할 수 있다. 그리고, 물리 기능 컨트롤러(310)는 PCIe 기능을 제어할 수 있다.
PCIe 기능은 PCIe 버스에 의해 액세스가 제어되는 장치 또는 모듈을 지칭한다. PCIe 기능은 물리 기능(physical function) 및 가상 기능(virtual function)을 포함할 수 있다.
물리 기능은 SR-IOV 확장 기능을 지원하는 풀(full) PCIe 기능일 수 있다.
가상 기능은 데이터 이동에 필요한 리소스를 포함하는 경량(lightweight) 기능일 수 있다. 예를 들어, 가상 기능은 복수의 메모리 장치들(352, 354, 356, 358)의 저장 공간 중 적어도 일부를 포함할 수 있고, 가상 머신과의 데이터 이동을 가능하게 하는 가상 기능 컨트롤러를 포함할 수 있다.
호스트 시스템(200)에서 구동되는 가상 머신은 대응하는 가상 기능 컨트롤러를 통해 메모리 시스템(300)에 액세스할 수 있다. 도 1의 예에서, 제1 가상 머신(212)은 제1 가상 기능 컨트롤러(312)에 대응하고, 제2 가상 머신(214)은 제2 가상 기능 컨트롤러(314)에 대응하고, 제3 가상 머신(216)은 제3 가상 기능 컨트롤러(316)에 대응할 수 있다. 각 가상 머신은 가상 기능 드라이버를 사용하여 대응하는 가상 기능 컨트롤러와 통신을 수행할 수 있다. 도 1에서 복수의 가상 기능 컨트롤러들(312, 314, 326)은 파선으로 도시된다.
SR-IOV를 사용하는 경우, 가상 머신 관리자(230)를 거치지 않고 가상 머신 및 상기 가상 머신과 대응하는 가상 기능 컨트롤러 간에 데이터가 이동할 수 있다. 예를 들어, 제1 가상 머신(212)은 메모리에 대한 액세스 커맨드를 호스트 메모리(270)에 저장할 수 있다. 제1 가상 머신(212)은 가상 머신 관리자(230)를 거치지 않고 상기 액세스 커맨드가 저장된 호스트 메모리(270) 위치를 가리키는 포인터를 제1 가상 기능 컨트롤러(312)로 제공할 수 있다. 제1 가상 기능 컨트롤러(312)는 상기 포인터를 사용하여 호스트 메모리(270)에 액세스함으로써 상기 액세스 커맨드를 획득할 수 있다. 도 1에서 복수의 가상 머신들(212, 214, 216)과 가상 기능 컨트롤러들(312, 314, 316) 간 가상화된 연결은 파선 화살표로 도시된다. 그리고, 도 1에서 상기 가상화된 연결을 지원하기 위해 호스트 컴퓨터(210), 호스트 메모리(270), 인터페이스 포트(250) 및 물리 기능 컨트롤러(310) 간 물리적 연결관계는 실선 화살표로 도시된다.
복수의 메모리 장치들(352, 354, 356, 358)은 비휘발성 메모리 장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 복수의 메모리 장치들(352, 354, 356, 358)은 프로그램 동작을 통해 호스트 시스템(200)으로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트 시스템(200)으로로 복수의 메모리 장치들(352, 354, 356, 358)에 저장된 데이터를 제공할 수 있다. 복수의 메모리 장치들(352, 354, 356, 358)은 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 복수의 메모리 장치들(352, 354, 356, 358)은 플래시 메모리, 예를 들어 NAND 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
복수의 메모리 장치들(352, 354, 356, 358)이 플래시 메모리 장치인 경우, 플래시 메모리 장치는 메모리 셀 트랜지스터들로 구성된 메모리 셀 어레이에 데이터를 저장할 수 있다. 복수의 메모리 장치들(352, 354, 356, 358)은 메모리 다이, 플레인, 메모리 블록 및 페이지의 계층 구조를 가질 수 있다. 예를 들어, 복수의 메모리 장치들(352, 354, 356, 358) 각각이 하나의 메모리 다이에 해당할 수 있다. 하나의 메모리 다이는 복수의 플레인을 포함할 수 있으며, 상기 복수의 플레인은 상기 메모리 다이가 수신한 커맨드를 병렬로 처리할 수 있다. 각 플레인은 복수의 메모리 블록을 포함할 수 있다. 메모리 블록은 이레이즈 동작의 최소 단위일 수 있다. 하나의 메모리 블록은 복수의 페이지를 포함할 수 있다. 페이지는 라이트 동작의 최소 단위일 수 있다.
메모리 컨트롤러(330)는 마이크로프로세서 또는 중앙 처리 장치(CPU)의 프로세서로 구현될 수 있다. 메모리 컨트롤러(330)는 호스트 시스템(200)으로부터의 요청에 응하여 복수의 메모리 장치들(352, 354, 356, 358)을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(330)는 복수의 메모리 장치들(352, 354, 356, 358)로부터 리드된 데이터를 호스트 시스템(200)으로 제공하고, 호스트 시스템(200)으로부터 제공된 데이터를 복수의 메모리 장치들(352, 354, 356, 358)에 저장할 수 있다. 이러한 동작을 위해, 메모리 컨트롤러(330)는 복수의 메모리 장치들(352, 354, 356, 358)의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다.
또한, 메모리 컨트롤러(330)는 복수의 메모리 장치들(352, 354, 356, 358)에 대한 백그라운드 동작(background operation)을 수행할 수도 있다. 예를 들어, 복수의 메모리 장치들(352, 354, 356, 358)에 대한 백그라운드 동작은 가비지 컬렉션(GC: Garbage Collection) 동작, 웨어 레벨링(WL: Wear Leveling) 동작, 맵 플러시(map flush) 동작, 배드 블록 관리(bad block management) 동작 등을 포함할 수 있다.
버퍼 메모리(370)는 메모리 시스템(300)의 라이트 동작 및 리드 동작에 관련된 데이터를 저장할 수 있다. 예를 들어, 버퍼 메모리(370)는 호스트 시스템(200)으로부터의 라이트 커맨드에 응하여 메모리 장치에 저장할 데이터를 버퍼링할 수 있다. 그리고, 버퍼 메모리(370)는 호스트 시스템(200)으로부터의 리드 커맨드에 응하여 메모리 컨트롤러(330)가 메모리 장치로부터 로드한 데이터를 버퍼링할 수 있다.
버퍼 메모리(370)는 휘발성 메모리로 구현될 수 있다. 예를 들어, 버퍼 메모리(370)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 버퍼 메모리(370)는 메모리 컨트롤러(330) 내부 또는 외부에 배치될 수 있다. 도 1은 메모리 컨트롤러(330) 외부에 배치된 버퍼 메모리(370)를 예시한다.
메모리 시스템(300)에 포함된 구성요소들은 하나의 반도체 장치로 집적될 수 있다. 일 예로, 물리 기능 컨트롤러(310), 메모리 컨트롤러(330), 복수의 메모리 장치들(352, 354, 356, 358) 및 버퍼 메모리(370)가 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(300)이 SSD로 사용되면, 메모리 시스템(300)에 연결된 호스트 시스템(200)의 동작 속도는 향상될 수 있다. 게다가, 물리 기능 컨트롤러(310), 메모리 컨트롤러(330), 복수의 메모리 장치들(352, 354, 356, 358) 및 버퍼 메모리(370)는 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예를 들어, 물리 기능 컨트롤러(310), 메모리 컨트롤러(330), 복수의 메모리 장치들(352, 354, 356, 358) 및 버퍼 메모리(370)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 2는 가상 머신이 가상 기능 컨트롤러를 통해 메모리 시스템에 접근하는 방법을 설명하기 위한 도면이다.
도 2는 호스트 시스템(200) 및 메모리 시스템(300)을 포함하는 데이터 처리 시스템(100)을 도시한다. 도 2의 호스트 시스템(200) 및 메모리 시스템(300)은 도 1을 참조하여 설명된 호스트 시스템(200) 및 메모리 시스템(300)과 대응한다.
메모리 시스템(300)은 복수의 네임스페이스들(NS_A, NS_B, NS_C, NS_D)을 포함할 수 있다. 메모리 컨트롤러(330)는 도 1에 도시된 4개의 메모리 장치들(352, 354, 356, 358)의 저장 공간을 4개의 네임스페이스들(NS_A, NS_B, NS_C, NS_D)에 논리적으로 할당할 수 있다. 예를 들어, 메모리 컨트롤러(330)는 4개의 네임스페이스들(NS_A, NS_B, NS_C, NS_D) 각각에 정해진 범위의 논리 어드레스들을 할당할 수 있다. 각 네임스페이스는 구현에 따라 서로 동일하거나, 다른 저장 용량을 가질 수 있다.
메모리 컨트롤러(330)는 각 가상 기능에 하나 이상의 네임스페이스를 제공할 수 있다. 각 네임스페이스는 하나 이상의 가상 기능에 제공될 수 있다. 하나의 가상 기능에만 제공된 네임스페이스는 전용 네임스페이스(private namespace)로 지칭되고, 복수의 가상 기능에 제공된 네임스페이스는 공유 네임스페이스(shared namespace)로 지칭될 수 있다.
각 네임스페이스는 고유의 네임스페이스 식별자(NSID)를 가질 수 있다. 도 2의 예에서, 복수의 네임스페이스들(NS_A, NS_B, NS_C, NS_D)은 각각 NSID1, NSID2, NSID3, NSID4로 식별될 수 있다. 호스트 시스템(200)은 NSID 및 논리 주소를 지정하여 네임스페이스의 저장 공간에 액세스할 수 있다.
가상 기능 컨트롤러는 하나 이상의 네임스페이스에 액세스할 수 있다. 가상 머신은 상기 가상 기능 컨트롤러를 통해 상기 하나 이상의 네임스페이스에 액세스할 수 있다. 도 2의 예에서, 제1 가상 머신(212)은 제1 가상 기능 컨트롤러(312)를 통해 네임스페이스 A 및 D(NS_A, NS_D)에 액세스할 수 있다. 제2 가상 머신(214)은 제2 가상 기능 컨트롤러(314)를 통해 네임스페이스 B 및 D(NS_B, NS_D)에 액세스할 수 있다. 제3 가상 머신(216)은 제3 가상 기능 컨트롤러(316)를 통해 네임스페이스 C 및 D(NS_C, NS_D)에 액세스할 수 있다.
네임스페이스 A, B 및 C(NS_A, NS_B, NS_C)는 하나의 가상 기능 컨트롤러에 의해서만 액세스될 수 있는 네임스페이스로서 전용 네임스페이스(private namespace)일 수 있다. 네임스페이스 D(NS_D)는 복수의 가상 기능 컨트롤러에 의해서 액세스될 수 있는 네임스페이스로서 공유 네임스페이스일 수 있다.
한편, 각 가상 머신은 메모리 시스템(300)으로 커맨드를 제공하고, 메모리 시스템(300)으로부터 커맨드에 대한 응답을 받기 위해 하나 이상의 커맨드 큐를 사용할 수 있다. 예를 들어, 각 가상 머신은 제출 큐(SQ: submission queue) 및 완료 큐(CQ: complete queue)를 사용할 수 있다. 제출 큐(SQ) 및 완료 큐(CQ)는 호스트 메모리(270)에 포함될 수 있다. 예를 들어, 가상 머신은 제출 큐(SQ)에 커맨드를 큐잉하고 제출 큐 도어벨 레지스터를 사용하여 상기 커맨드가 대응하는 가상 기능 컨트롤러에 상기 큐잉된 커맨드의 위치를 알릴 수 있다. 가상 기능 컨트롤러는 상기 위치에 액세스하여 상기 커맨드를 획득하고, 내부 커맨드 큐(CMDQ)에 큐잉할 수 있다. 가상 기능 컨트롤러는 커맨드 큐(CMDQ)에 큐잉된 커맨드 처리를 완료하면 완료 큐 도어벨 레지스터를 사용하여 응답을 제공할 수 있다. 제출 큐 도어벨 레지스터와 완료 큐 도어벨 레지스터는 호스트 메모리(270)에 포함될 수 있다.
SR-IOV를 사용하면 각 가상 머신이 대응하는 가상 기능 컨트롤러를 사용함으로써 가상 머신 관리자(230)를 우회하여 메모리 시스템(300)과 커맨드 및 데이터를 주고받을 수 있다. 따라서 복수의 가상 머신들과 복수의 가상 기능 컨트롤러들 간 데이터 입출력의 병목 현상이 감소할 수 있다.
그러나, 호스트 시스템(200)이 하나의 가상 기능 컨트롤러로 다수의 액세스 커맨드들을 집중적으로 제공하는 경우, 상기 가상 기능 컨트롤러를 통한 응답이 지연될 수 있다.
도 3은 하나의 가상 기능이 복수의 커맨드 동작을 수행하는 경우의 동작을 설명하기 위한 도면이다.
도 3은 제1 가상 기능 컨트롤러(312)가 제1 및 제2 리드 커맨드를 수신하는 경우의 동작 타이밍을 나타낸다.
단계 S302에서, 제1 가상 기능 컨트롤러(312)는 제1 가상 머신(212)으로부터 제1 리드 커맨드를 수신할 수 있다.
예를 들어, 제1 가상 기능 컨트롤러(312)는 제출 큐 도어벨 레지스터를 사용하여 제1 가상 머신(212)으로부터 제1 리드 커맨드가 저장된 호스트 메모리(270)의 주소를 수신할 수 있다. 제1 가상 기능 컨트롤러(312)는 상기 주소를 사용하여 상기 제1 리드 커맨드를 호스트 메모리(270)로부터 페치(fetch)할 수 있다.
단계 S304에서, 제1 가상 기능 컨트롤러(312)는 상기 제1 리드 커맨드에 대응하는 제1 리드 데이터를 버퍼 메모리(370)에 로드할 수 있다.
예를 들어, 제1 가상 기능 컨트롤러(312)는 버퍼 메모리(370)에 상기 제1 리드 데이터를 로드할 버퍼 공간을 할당할 수 있다. 제1 가상 기능 컨트롤러(312)는 상기 제1 리드 커맨드를 메모리 컨트롤러(330)로 제공할 수 있다. 메모리 컨트롤러(330)는 상기 제1 리드 커맨드에 포함되는 NSID 및 논리 주소에 기초하여 상기 제1 리드 데이터가 저장된 메모리 장치로부터 상기 제1 리드 데이터를 상기 할당된 버퍼 공간에 로드할 수 있다.
단계 S306에서, 제1 가상 기능 컨트롤러(312)는 버퍼 메모리(370)에 로드된 제1 리드 데이터를 제1 가상 머신(212)으로 제공할 수 있다.
예를 들어, 제1 가상 기능 컨트롤러(312)는 상기 제1 리드 데이터를 호스트 메모리(270)로 제공하고, 완료 큐 도어벨 레지스터를 사용하여 제1 가상 머신(212)으로 응답을 제공할 수 있다.
제1 가상 기능 컨트롤러(312)의 제어에 응하여 메모리 컨트롤러(330)가 제1 가상 머신(212)으로부터 수신한 커맨드를 처리하고, 제1 가상 머신(212)으로 응답을 제공하는 동안 제1 가상 기능 컨트롤러(312)는 비지(busy) 상태일 수 있다. 도 3에서 단계 S304 및 단계 S306이 수행되는 동안 제1 가상 기능 컨트롤러(312)가 비지 상태인 것으로 도시된다. 가상 기능 컨트롤러들은 가상 기능의 원자성(atomicity)을 보장하기 위해, 비지 상태일 때는 커맨드를 수신하더라도 해당 커맨드를 처리하지 않을 수 있다.
예를 들어, 제1 가상 기능 컨트롤러(312)가 제1 리드 커맨드에 응하여 제1 리드 데이터를 로드하는 중 단계 S308에서 제1 가상 머신(212)으로부터 제2 리드 커맨드를 수신할 수 있다. 제1 가상 기능 컨트롤러(312)는 상기 제1 리드 데이터를 로드하고, 호스트로 상기 제1 리드 데이터를 제공할 때까지 상기 제2 리드 커맨드를 처리할 수 없다.
제1 가상 기능 컨트롤러(312)는 제1 리드 커맨드에 의한 비지 상태가 종료되면 상기 제2 리드 커맨드를 처리하고, 제1 가상 머신(212)으로 제2 리드 커맨드에 대한 응답을 제공할 수 있다.
예를 들어, 단계 S310에서 메모리 컨트롤러(330)으로 제2 리드 커맨드를 제공하여 버퍼 메모리(370)로 제2 리드 커맨드에 대응하는 제2 리드 데이터를 로드하도록 할 수 있다.
그리고, 단계 S312에서 제1 가상 기능 컨트롤러(312)는 제1 가상 머신(212)으로 상기 제2 리드 데이터를 제공할 수 있다.
제1 가상 기능 컨트롤러(312)가 단계 S306을 수행할 때 메모리 컨트롤러(330) 및 복수의 메모리 장치들(352, 354, 356, 358)이 호스트 커맨드에 대한 동작을 수행하지 않는 경우가 있다. 예를 들어, 제1 가상 기능 컨트롤러(312)는 비지 상태이지만 다른 가상 기능 컨트롤러들은 유휴(idle) 상태인 경우가 있다. 메모리 컨트롤러(330) 및 복수의 메모리 장치들(352, 354, 356, 358)이 호스트 커맨드에 대한 동작을 수행하지 않는 경우에도 제2 리드 커맨드를 처리할 수 없다면, 메모리 시스템(300)의 액세스 효율이 감소할 수 있다.
본 발명의 실시 예들에 따르면, 어떤 가상 머신이 대응하는 가상 기능 컨트롤러를 통해 공유 네임스페이스에 대한 커맨드를 제공하는 경우, 조건에 따라 상기 대응하는 가상 기능 컨트롤러가 아닌 다른 가상 기능 컨트롤러가 상기 커맨드를 처리할 수 있다.
예를 들어, 제1 리드 커맨드로 인해 비지 상태인 제1 가상 기능 컨트롤러(312)에 공유 네임스페이스에 대한 제2 리드 커맨드가 제공된 경우, 제1 가상 기능 컨트롤러(312)는 상기 공유 네임스페이스를 공유하는 유휴 상태의 제2 가상 기능 컨트롤러(314)가 상기 제2 리드 커맨드를 처리하도록 할 수 있다. 제2 가상 기능 컨트롤러(314)가 상기 제2 리드 커맨드에 대한 리드 데이터를 버퍼 메모리(370)에 로드하고, 상기 리드 데이터가 로드된 버퍼 메모리(370) 공간에 대한 액세스 정보를 제1 가상 기능 컨트롤러(312)로 제공함으로써 제1 가상 기능 컨트롤러(312)가 상기 리드 데이터를 제1 가상 머신(212)으로 제공하도록 할 수 있다. 이러한 본 발명의 실시 예들에 따르면, 공유 네임스페이스에 대한 액세스 성능이 향상될 수 있다.
본 발명의 실시 예들에 따르면, 메모리 시스템(300)은 각 가상 머신 컨트롤러가 비지 상태인지 혹은 유휴 상태인지를 나타내는 상태 레지스터(318)를 더 포함할 수 있다. 도 1을 참조하면, 상태 레지스터(318)는 복수의 가상 기능 컨트롤러들(312, 314, 316)을 제어하는 물리 기능 컨트롤러(310)에 연결될 수 있다. 물리 기능 컨트롤러(310)는 가상 기능 컨트롤러로 신호를 제공하고, 정해진 시간 이내에 응답을 받지 못하면 상태 레지스터(318)에 상기 가상 기능 컨트롤러를 비지 상태로 표시할 수 있다.
이하에서, 도 4 내지 도 9를 참조하여 본 발명의 실시 예들이 자세히 설명된다.
도 4 내지 도 6은 본 발명의 제1 실시 예에 따른 메모리 시스템(300)의 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 제1 실시 예에 따른 가상 기능 컨트롤러의 동작을 나타내는 흐름도이다. 도 4에서는 예시적으로 제1 가상 기능 컨트롤러(312)가 단계 S402 내지 단계 S416의 동작을 수행하는 것으로 설명된다.
단계 S402에서, 제1 가상 기능 컨트롤러(312)는 호스트 시스템(200)으로부터 네임스페이스에 액세스하기 위한 리드 커맨드를 수신할 수 있다. 상기 리드 커맨드는 NSID를 포함할 수 있다.
단계 S404에서, 제1 가상 기능 컨트롤러(312)는 상기 리드 커맨드에 포함된 NSID에 기초하여 상기 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 리드 커맨드인지 판단할 수 있다.
상기 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 리드 커맨드가 아니라면(단계 S404에서, "NO"), 단계 S406에서 제1 가상 기능 컨트롤러(312)는 상기 리드 커맨드를 직접 처리할 수 있다.
예를 들어, 제1 가상 기능 컨트롤러(312)는 상기 리드 커맨드에 대응하는 리드 데이터를 로드하기 위한 버퍼 메모리(370) 공간을 할당하고, 메모리 컨트롤러(330)로 상기 리드 커맨드를 제공할 수 있다. 메모리 컨트롤러(330)는 상기 리드 커맨드에 대응하는 데이터를 상기 할당된 버퍼 공간으로 로드할 수 있다.
단계 S416에서, 제1 가상 기능 컨트롤러(312)는 리드 커맨드에 대한 응답으로서 상기 할당된 버퍼 메모리(370) 공간에 로드된 리드 데이터를 호스트 시스템(200)으로 제공할 수 있다.
상기 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 리드 커맨드라면(단계 S404에서, "YES"), 단계 S408에서 제1 가상 기능 컨트롤러(312)는 자신이 비지 상태인지 판단할 수 있다.
자신이 비지 상태가 아니라면(단계 S408에서, "NO"), 제1 가상 기능 컨트롤러(312)는 단계 S406 및 단계 S416을 수행할 수 있다.
자신이 비지 상태라면(단계 S408에서, "YES"), 제1 가상 기능 컨트롤러(312)는 단계 S410에서 상기 공유 네임스페이스를 공유하는 가상 기능들 중 유휴 상태인 가상 기능이 있는지 판단할 수 있다.
도 2의 예에서, 제1 내지 제3 가상 기능 컨트롤러(312, 314, 136)가 네임스페이스 D(NS_D)에 연결된다. 즉, 제1 내지 제3 가상 기능 컨트롤러(312, 314, 136)가 네임스페이스 D(NS_D)를 공유하는 것을 나타낸다. 제1 가상 기능 컨트롤러(312)는 제2 및 제3 가상 기능 컨트롤러(314, 316)이 유휴 상태인지 판단할 수 있다.
물리 기능 컨트롤러(310)에 연결된 상태 레지스터(318)는 가상 기능 컨트롤러가 비지 상태인지 혹은 유휴 상태인지를 표시할 수 있다. 제1 가상 기능 컨트롤러(312)는 물리 기능 컨트롤러(310)에 연결된 상태 레지스터(318)에 액세스하여 제2 및 제3 가상 기능이 유휴 상태인지 판단할 수 있다.
제2 및 제3 가상 기능 컨트롤러(314, 316)가 모두 비지 상태인 경우(단계 S410에서, "NO"), 제1 가상 기능 컨트롤러(312)는 제1 내지 제3 가상 기능 컨트롤러(312, 314, 316) 중 어느 하나가 유휴 상태가 될 때까지 단계 S408 내지 단계 S410을 반복할 수 있다.
제2 및 제3 가상 기능 컨트롤러(314, 316) 중 적어도 어느 하나가 유휴 상태인 경우(단계 S410에서, "YES"), 단계 S412에서 제1 가상 기능 컨트롤러(312)는 유휴 상태인 가상 기능 컨트롤러 하나를 선택하고, 선택된 가상 기능 컨트롤러로 상기 리드 커맨드를 제공할 수 있다. 상기 제1 가상 기능 컨트롤러(312)가 선택된 가상 기능 컨트롤러로 상기 리드 커맨드를 제공하는 동작은 물리 기능 컨트롤러(310)에 의해 제어될 수 있다.
상기 선택된 가상 기능 컨트롤러는 상기 리드 커맨드를 처리할 수 있다. 예를 들어, 상기 선택된 가상 기능 컨트롤러는 상기 리드 커맨드를 위한 버퍼 메모리(370) 공간을 할당하고, 상기 리드 커맨드를 수신하여 메모리 컨트롤러(330)로 전달할 수 있다. 상기 리드 커맨드에 대응하는 리드 데이터가 상기 할당된 버퍼 메모리(370) 공간으로 로드될 수 있다.
단계 S414에서, 제1 가상 기능 컨트롤러(312)는 상기 선택된 가상 기능 컨트롤러로부터 상기 할당된 버퍼 메모리(370) 공간에 대한 액세스 정보를 획득하고, 단계 S416을 수행할 수 있다. 예를 들어, 상기 선택된 가상 기능 컨트롤러가 상기 할당된 버퍼 메모리(370) 공간을 가리키는 주소를 상기 제1 가상 기능 컨트롤러(312)로 제공할 수 있다.
본 발명의 제1 실시 예에 따르면, 가상 기능 컨트롤러는 공유 네임스페이스에 액세스하기 위한 리드 커맨드 수신 시 자신이 비지 상태일 때 유휴 상태의 가상 기능을 제어하는 가상 기능 컨트롤러가 상기 리드 커맨드를 처리하도록 할 수 있다. 따라서, 가상 기능 컨트롤러들 간 처리량이 분산되고 메모리 시스템(300)의 액세스 성능이 향상될 수 있다.
도 5는 본 발명의 제1 실시 예에 따른, 메모리 시스템(300)의 구성요소들 간 트랜잭션을 나타낸다.
구체적으로, 도 5는 제1 및 제2 가상 기능 컨트롤러(312, 314), 상태 레지스터(318) 및 메모리 컨트롤러(330)의 트랜잭션을 나타내며, 도 4를 참조하여 이미 설명된 내용은 생략되거나 간략히 설명된다.
단계 S502에서, 제1 가상 기능 컨트롤러(312)는 호스트 시스템(200)으로부터 제1 리드 커맨드를 수신할 수 있다. 제1 가상 기능 컨트롤러(312)는 단계 S404 내지 단계 S410에서 설명된 바와 같이 제1 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 커맨드인지 확인하고, 자신이 비지 상태인지 확인할 수 있다. 도 5는 제1 가상 기능 컨트롤러(312)가 단계 S406에서 설명된 바와 같이 직접 커맨드를 처리하는 경우를 예로 들어 본 발명의 제1 실시 예를 설명한다.
단계 S504 내지 단계 S508에서, 제1 가상 기능 컨트롤러(312)는 제1 리드 커맨드를 처리할 수 있다.
단계 S504에서, 제1 가상 기능 컨트롤러(312)는 메모리 컨트롤러(330)로 제1 리드 커맨드를 제공할 수 있다. 제1 가상 기능 컨트롤러(312)는 버퍼 메모리(370)에 상기 제1 리드 커맨드에 대응하는 제1 리드 데이터가 로드될 메모리 공간을 할당할 수 있다.
단계 S506에서, 메모리 컨트롤러(330)는 상기 제1 리드 커맨드에 응하여 메모리 장치로부터 상기 제1 리드 데이터를 로드할 수 있다.
메모리 컨트롤러(330)가 제1 리드 데이터를 모두 로드하면, 단계 S508에서 메모리 컨트롤러(330)는 제1 가상 기능 컨트롤러(312)로 응답을 제공할 수 있다.
단계 S510에서, 제1 가상 기능 컨트롤러(312)는 호스트 시스템(200)으로 제1 리드 데이터를 제공할 수 있다.
단계 S504 내지 단계 S510의 수행 중 제1 가상 기능 컨트롤러(312)는 비지 상태일 수 있다. 제1 가상 기능 컨트롤러(312)가 비지 상태일 때 호스트 시스템(200)으로부터 제1 가상 기능 컨트롤러(312)로 커맨드가 수신될 수 있다.
예를 들어 단계 S506이 수행되는 도중의 단계 S512에서, 제1 가상 기능 컨트롤러(312)는 호스트 시스템(200)으로부터 제2 리드 커맨드를 수신할 수 있다.
단계 S514에서, 제1 가상 기능 컨트롤러(312)는 상기 제2 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 커맨드인지 판단할 수 있다. 도 5의 예에서 상기 제2 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 커맨드인 것으로 가정한다.
단계 S516에서, 제1 가상 기능 컨트롤러(312)는 제1 가상 기능 컨트롤러(312)의 상태를 판단할 수 있다. 도 5의 예에서 제1 가상 기능 컨트롤러(312)가 제1 리드 커맨드를 처리하는 중이므로 제1 가상 기능 컨트롤러(312)는 비지 상태로 판단될 수 있다.
단계 S518에서, 제1 가상 기능 컨트롤러(312)는 상기 공유 네임스페이스를 공유하는 가상 기능 컨트롤러들의 상태를 판단하기 위해 상태 레지스터(318)로 액세스할 수 있다.
단계 S520에서, 상태 레지스터(318)는 제1 가상 기능 컨트롤러(312)의 액세스에 대한 응답으로 각 가상 기능 컨트롤러의 상태 정보를 제공할 수 있다.
단계 S522에서, 제1 가상 기능 컨트롤러(312)는 상기 제2 리드 커맨드를 대신 처리하도록 하기 위해 유휴 상태의 가상 기능 컨트롤러 하나를 선택할 수 있다. 도 5의 예에서 제2 가상 기능 컨트롤러(314)가 유휴 상태이고, 제1 가상 기능 컨트롤러(312)에 의해 제2 가상 기능 컨트롤러(314)가 선택된 것으로 가정한다.
단계 S524에서, 제1 가상 기능 컨트롤러(312)는 제2 가상 기능 컨트롤러(314)로 상기 제2 리드 커맨드를 제공할 수 있다.
단계 S526 내지 단계 S530에서 제2 가상 기능 컨트롤러(314)는 상기 제2 리드 커맨드를 처리할 수 있다
단계 S526에서, 제2 가상 기능 컨트롤러(314)는 메모리 컨트롤러(330)로 제2 리드 커맨드를 제공할 수 있다. 제2 가상 기능 컨트롤러(314)는 버퍼 메모리(370)에 상기 제2 리드 커맨드에 대응하는 제2 리드 데이터가 로드될 메모리 공간을 할당할 수 있다.
단계 S528에서, 메모리 컨트롤러(330)는 상기 제2 리드 커맨드에 응하여 메모리 장치의 상기 공유 네임스페이스로부터 상기 제2 리드 데이터를 로드할 수 있다.
도 5는 단계 S506의 제1 리드 데이터를 로드하는 동작이 완료된 이후 단계 S528이 수행되는 경우를 도시한다. 그러나 경우에 따라 제1 리드 데이터와 제2 리드 데이터는 동시에 로드될 수도 있다. 도 1을 참조하여 설명된 바와 같이, 메모리 시스템(300)에 포함된 복수의 메모리 장치들(352, 354, 356, 358) 각각은 병렬로 동작할 수 있다. 제1 및 제2 리드 데이터가 동시에 리드될지, 순차적으로 리드될지는 제1 및 제2 리드 데이터가 각각 어느 메모리 장치에 저장되었는지 및 메모리 컨트롤러(330)의 커맨드 스케줄링에 따라 결정될 수 있다. 예를 들어, 제1 및 제2 리드 데이터가 서로 다른 메모리 장치에 저장된 경우 제1 및 제2 리드 데이터는 서로 동시에 로드될 수 있다. 제1 및 제2 리드 데이터가 동일한 메모리 장치에 저장되는 경우 제1 리드 데이터가 모두 로드된 이후에 제2 리드 데이터가 로드될 수 있다.
실시 예에 따라, 메모리 컨트롤러(330)는 공유 네임스페이스와 전용 네임스페이스가 서로 다른 메모리 장치의 저장 공간을 포함하도록 네임스페이스들에 저장 공간을 할당할 수 있다. 제1 리드 커맨드가 전용 네임스페이스에 액세스하기 위한 커맨드이고, 제2 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 커맨드라면 제1 및 제2 데이터는 복수의 메모리 장치들(352, 354, 356, 358)로부터 동시에 로드될 수 있다.
상기 제2 데이터의 로드가 완료되면, 단계 S530에서 메모리 컨트롤러(330)는 제2 가상 기능 컨트롤러(314)로 응답을 제공할 수 있다.
단계 S532에서, 제2 가상 기능 컨트롤러(314)는 제1 가상 기능 컨트롤러(312)로 제2 리드 데이터가 로드된 버퍼 메모리(370) 공간에 대한 액세스 정보를 제공할 수 있다.
단계 S534에서, 제1 가상 기능 컨트롤러(312)는 상기 액세스 정보에 기초하여 버퍼 메모리(370) 공간에 액세스하여 상기 제2 리드 데이터를 호스트 시스템(200)으로 제공할 수 있다.
도 6은 도 5를 참조하여 설명된 본 발명의 제1 실시 예에 따른 동작 타이밍을 개략적으로 나타낸다.
도 6은 동일한 시간축에 제1 가상 기능(VF1) 및 제2 가상 기능(VF2)의 동작 타이밍을 도시한다. 도 6은 도 5를 참조하여 설명된 단계들 중 일부 단계의 동작 타이밍을 나타낸다.
도 6을 참조하면, 단계 S502에서 제1 가상 기능 컨트롤러(312)가 호스트 시스템(200)으로부터 제1 리드 커맨드를 수신하고, 단계 S506에서 메모리 컨트롤러(330)가 제1 리드 데이터를 로드하고, 단계 S510에서 제1 가상 기능 컨트롤러(312)가 호스트 시스템(200)으로 제1 리드 데이터를 제공할 수 있다. 단계 S506 및 단계 S510에서 제1 가상 기능 컨트롤러(312)는 비지 상태이다. 비지 상태일 때 제1 가상 기능 컨트롤러(312)는 새로운 커맨드를 처리할 수 없다.
단계 S512에서, 제1 가상 기능 컨트롤러(312)는 자신이 비지 상태일 때 제2 리드 커맨드를 수신할 수 있다. 제1 가상 기능 컨트롤러(312)는 상기 제2 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 커맨드인 경우, 유휴 상태인 제2 가상 기능 컨트롤러(314)가 상기 제2 리드 커맨드를 처리하도록 할 수 있다.
단계 S528에서 메모리 컨트롤러(330)는 제2 리드 데이터를 로드할 수 있다. 제1 가상 기능 컨트롤러(312)가 단계 S510에서 제1 리드 데이터를 호스트 시스템(200)으로 제공하는 동시에 단계 S528에서 제2 가상 기능 컨트롤러(314)의 제어 하에 메모리 컨트롤러(330)가 제2 리드 데이터를 로드할 수 있다.
단계 S534에서 제2 가상 기능 컨트롤러(314)가 호스트 시스템(200)으로 제2 리드 데이터를 제공할 수 있다.
본 발명의 제1 실시 예에 따르면, 어떤 가상 기능 컨트롤러에 집중되는 데이터 처리량이 다른 가상 기능 컨트롤러로 분산될 수 있다. 도 3과 도 6을 비교하면, 하나의 가상 기능 컨트롤러로 복수의 커맨드들이 수신될 때 상기 하나의 가상 기능 컨트롤러가 복수의 커맨드들을 처리하는 경우보다 복수의 가상 기능 컨트롤러가 복수의 커맨드들을 분산 처리하는 경우 전체 커맨드 처리 시간이 단축될 수 있다.
도 7 내지 도 9는 본 발명의 제2 실시 예에 따른 메모리 시스템(300)의 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 제2 실시 예에 따른 가상 기능 컨트롤러의 동작을 나타내는 흐름도이다. 도 7에서는 예시적으로 제1 가상 기능 컨트롤러(312)가 단계 S702 내지 단계 S718의 동작을 수행하는 것으로 설명된다.
단계 S702에서, 제1 가상 기능 컨트롤러(312)는 호스트 시스템(200)으로부터 네임스페이스에 액세스하기 위한 리드 커맨드를 수신할 수 있다. 상기 리드 커맨드는 NSID 및 논리 주소를 포함할 수 있다.
단계 S704에서, 제1 가상 기능 컨트롤러(312)는 상기 리드 커맨드에 포함된 NSID에 기초하여 상기 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 리드 커맨드인지 판단할 수 있다.
상기 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 리드 커맨드가 아니라면(단계 S704에서, "NO"), 단계 S706에서 제1 가상 기능 컨트롤러(312)는 상기 리드 커맨드를 직접 처리할 수 있다. 제1 가상 기능 컨트롤러(312)가 메모리 컨트롤러(330)로 상기 리드 커맨드를 전달하면, 상기 리드 커맨드에 대응하는 리드 데이터가 버퍼 메모리(370)의 할당된 공간으로 로드될 수 있다.
단계 S718에서, 제1 가상 기능 컨트롤러(312)는 리드 커맨드에 대한 응답으로서 상기 로드된 리드 데이터를 호스트 시스템(200)으로 제공할 수 있다.
상기 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 리드 커맨드라면(단계 S704에서, "YES"), 단계 S708에서 제1 가상 기능 컨트롤러(312)는 상기 NSID 및 논리 주소에 기초하여 다른 가상 기능 컨트롤러들 중 동일 데이터를 리드하려는 가상 기능 컨트롤러가 있는지 판단할 수 있다.
예를 들어, 제1 가상 기능 컨트롤러(312)는 단계 S702에서 수신된 리드 커맨드의 NSID 및 논리 주소와, 각 가상 기능 컨트롤러가 수신하여 아직 처리되지 않은 리드 커맨드들의 NSID 및 논리 주소를 비교하여 동일 데이터를 리드하려는 가상 기능 컨트롤러가 있는지 판단할 수 있다.
동일 데이터를 리드하려는 가상 기능 컨트롤러가 없는 경우(단계 S708에서, "NO"), 제1 가상 기능 컨트롤러(312)는 단계 S706 및 단계 S718을 수행할 수 있다.
동일 데이터를 리드하려는 가상 기능 컨트롤러가 있는 경우(단계 S708에서, "YES"), 단계 S710에서 제1 가상 기능 컨트롤러(312)는 현재 자신이 유휴 상태인지 판단할 수 있다.
도 7에서는 동일 데이터를 리드하려는 가상 기능 컨트롤러가 제2 가상 기능 컨트롤러(314)인 경우를 예로 들어 본 발명의 제2 실시 예가 설명된다.
자신이 유휴 상태인 경우(단계 S710에서, "YES"), 제1 가상 기능 컨트롤러(312)는 단계 S714 내지 단계 S718을 수행할 수 있다.
단계 S714에서, 제1 가상 기능 컨트롤러(312)는 상기 커맨드를 직접 처리하기 위해 리드 데이터가 저장될 버퍼 메모리(370) 공간을 할당하고, 메모리 컨트롤러(330)로 상기 리드 커맨드를 제공할 수 있다. 메모리 컨트롤러(330)는 메모리 장치로부터 상기 할당된 버퍼 메모리(370) 공간으로 상기 리드 데이터를 로드할 수 있다.
단계 S716에서, 제1 가상 기능 컨트롤러(312)는 제2 가상 기능 컨트롤러(314)로 상기 할당된 버퍼 메모리(370) 공간에 대한 액세스 정보를 제공할 수 있다. 제1 및 제2 가상 기능 컨트롤러(312, 314)는 상기 할당된 버퍼 메모리(370) 공간에 액세스할 수 있다.
단계 S718에서, 제1 가상 기능 컨트롤러(312)는 상기 리드 데이터에 대한 응답으로서 상기 할당된 버퍼 메모리(370) 공간에 액세스하여 상기 리드 데이터를 호스트 시스템(200)으로 제공할 수 있다. 액세스 정보를 획득한 제2 가상 기능 컨트롤러(314)도 마찬가지로, 동일 메모리 위치를 액세스하고자 하는 리드 커맨드에 대한 응답으로서 상기 할당된 버퍼 메모리(370) 공간에 액세스하여 상기 리드 데이터를 호스트 시스템(200)으로 제공할 수 있다.
자신이 비지 상태인 경우(단계 S710에서, "NO"), 단계 S712에서 제1 가상 기능 컨트롤러(312)는 제2 가상 기능 컨트롤러(314)가 유휴 상태인지 판단할 수 있다. 제1 가상 기능 컨트롤러(312)는 물리 기능 컨트롤러(310)에 연결된 상태 레지스터(318)를 통해 제2 가상 기능 컨트롤러(314)가 유휴 상태인지 판단할 수 있다.
제2 가상 기능 컨트롤러(314)가 유휴 상태인 경우(단계 S712에서, "YES"), 제1 가상 기능 컨트롤러(312)는 단계 S720, 단계 S722 및 단계 S718을 수행할 수 있다.
단계 S720에서, 제1 가상 기능 컨트롤러(312)는 제2 가상 기능 컨트롤러(314)로 상기 리드 커맨드를 제공할 수 있다.
제2 가상 기능 컨트롤러(314)는 상기 리드 데이터를 로드하기 위한 버퍼 메모리(370) 공간을 할당하고, 메모리 컨트롤러(330)로 상기 리드 커맨드를 제공할 수 있다. 메모리 컨트롤러(330)는 메모리 장치로부터 상기 할당된 버퍼 메모리(370) 공간으로 상기 리드 데이터를 로드할 수 있다. 제2 가상 기능 컨트롤러(314)는 제1 가상 기능 컨트롤러(312)가 상기 할당된 버퍼 메모리(370) 공간에 액세스할 수 있도록 제1 가상 기능 컨트롤러(312)로 액세스 정보를 제공할 수 있다.
단계 S722에서, 제1 가상 기능 컨트롤러(312)는 제2 가상 기능 컨트롤러(314)로부터 상기 액세스 정보를 획득할 수 있다.
단계 S718에서, 제1 가상 기능 컨트롤러(312)는 리드 커맨드에 대한 응답으로서 상기 로드된 리드 데이터를 호스트 시스템(200)으로 제공할 수 있다. 한편, 제2 가상 기능 컨트롤러(314)가 동일한 메모리 위치에 액세스하기 위한 리드 커맨드를 수행하고자 할 때는 상기 할당된 버퍼 메모리(370) 공간에 로드된 리드 데이터를 호스트 시스템(200)으로 제공할 수 있다.
제2 가상 기능 컨트롤러(314)가 비지 상태인 경우(단계 S712에서, "NO"), 제1 가상 기능 컨트롤러(312)는 제1 및 제2 가상 기능 컨트롤러(314) 중 어느 하나가 유휴 상태가 될 때까지 단계 S710 및 단계 S712를 반복할 수 있다.
본 발명의 제2 실시 예에 따르면, 둘 이상의 가상 기능 컨트롤러가 공유 네임스페이스의 동일 메모리 위치에 액세스하기 위한 리드 커맨드를 수신 시 유휴 상태인 가상 기능 컨트롤러 하나만이 상기 리드 커맨드를 처리하고, 상기 가상 기능 컨트롤러가 다른 가상 기능 컨트롤러로 리드 데이터가 로드된 버퍼 메모리(370) 공간에 대한 액세스 정보를 제공할 수 있다. 둘 이상의 가상 머신이 동일 메모리 위치의 데이터를 리드하고자 하는 경우 리드 커맨드를 먼저 처리할 수 있는 가상 머신 컨트롤러가 메모리 장치로부터 리드 데이터를 한 번만 로드하더라도 둘 이상의 가상 머신에 상기 리드 데이터를 제공할 수 있다. 따라서, 메모리 시스템(300)의 액세스 성능이 향상될 수 있다.
도 8은 본 발명의 제2 실시 예에 따른, 메모리 시스템(300)의 구성요소들 간 트랜잭션을 나타낸다.
구체적으로, 도 8은 제1 및 제2 가상 기능 컨트롤러(312, 314), 상태 레지스터(318) 및 메모리 컨트롤러(330)의 트랜잭션을 나타내며, 도 7을 참조하여 이미 설명된 내용은 생략되거나 간략히 설명된다.
단계 S802에서, 제1 가상 기능 컨트롤러(312)는 호스트 시스템(200)으로부터 리드 커맨드를 수신할 수 있다.
단계 S804에서, 제1 가상 기능 컨트롤러(312)는 상기 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 커맨드인지 판단할 수 있다. 도 8의 예에서 상기 리드 커맨드가 공유 네임스페이스에 액세스하기 위한 커맨드인 것으로 가정한다.
단계 S806에서, 제1 가상 기능 컨트롤러(312)는 다른 가상 기능 컨트롤러에 상기 리드 커맨드와 동일 데이터를 리드하기 위한 리드 커맨드가 수신되어 있는지 판단할 수 있다.
예를 들어, 제1 가상 기능 컨트롤러(312)는 다른 가상 기능 컨트롤러들의 커맨드 큐에 액세스하여 동일 어드레스에 액세스하기 위한 리드 커맨드가 수신되어 있는지를 판단할 수 있다. 도 8에서는 제1 가상 기능 컨트롤러(312)가 제2 가상 기능 컨트롤러(314)의 커맨드 큐를 확인하는 것만이 도시되었으나, 제1 가상 기능 컨트롤러(312)는 공유 네임스페이스를 공유하는 제3 가상 기능 컨트롤러(316)의 커맨드 큐도 확인할 수 있다.
단계 S808에서, 제2 가상 기능 컨트롤러(314)는 상기 리드 커맨드와 동일 데이터를 리드하기 위한 커맨드가 있는지 여부에 대한 응답을 제공할 수 있다.
도 8의 예에서 제2 가상 기능 컨트롤러(314)의 커맨드 큐에 동일 데이터를 리드하기 위한 리드 커맨드가 큐잉된 것으로 가정한다.
이하에서, 제1 가상 기능 컨트롤러(312)가 수신한 리드 커맨드를 제2 리드 커맨드로 지칭한다. 그리고, 제2 가상 기능 컨트롤러(314)가 상기 제2 리드 커맨드보다 먼저 수신하여 커맨드 큐에 큐잉한, 동일 데이터를 리드하기 위한 리드 커맨드를 제1 리드 커맨드로 지칭한다.
단계 S810에서, 제1 가상 기능 컨트롤러(312)는 자신이 비지 상태인지 유휴 상태인지 판단할 수 있다. 도 8의 예에서, 제1 가상 기능 컨트롤러(312)의 상태가 유휴 상태인 경우를 가정한다. 한편, 제2 가상 기능 컨트롤러(314)에는 제1 리드 커맨드가 큐잉되어 있는 상태이므로, 제2 가상 기능 컨트롤러(314)는 현재 비지 상태일 수 있다.
단계 S812 내지 단계 S816에서 제1 가상 기능 컨트롤러(312)가 제2 리드 커맨드를 처리할 수 있다. 제1 및 제2 리드 커맨드가 동일 메모리 위치에 대한 커맨드이므로, 제1 가상 기능 컨트롤러(312)가 제2 리드 커맨드를 처리하면, 제2 가상 기능 컨트롤러(314)의 제1 리드 커맨드에 대해서도 동일한 처리 결과를 호스트 시스템(200)으로 제공할 수 있다.
단계 S812에서, 제1 가상 기능 컨트롤러(312)는 버퍼 메모리(370) 공간을 할당하고, 메모리 컨트롤러(330)로 상기 동일 메모리 위치에 대한 리드 커맨드를 제공할 수 있다.
단계 S814에서, 메모리 컨트롤러(330)는 메모리 장치로부터 상기 리드 커맨드에 대응하는 리드 데이터를 상기 할당된 버퍼 메모리(370) 공간에 로드할 수 있다.
단계 S816에서, 메모리 컨트롤러(330)는 제1 가상 기능 컨트롤러(312)로 응답을 제공할 수 있다.
단계 S818에서, 제1 가상 기능 컨트롤러(312)는 제2 가상 기능 컨트롤러(314)로 상기 할당된 버퍼 메모리(370) 공간에 대한 액세스 권한을 제공할 수 있다. 제1 및 제2 가상 기능 컨트롤러(312, 314)는 상기 할당된 버퍼 메모리(370) 공간에 대한 권한을 갖는다.
단계 S820에서, 제1 가상 기능 컨트롤러(312)는 상기 할당된 버퍼 메모리 (370) 공간에 액세스하여 호스트 시스템(200)으로 상기 리드 데이터를 제공할 수 있다.
단계 S822에서, 제2 가상 기능 컨트롤러(314)는 상기 할당된 버퍼 메모리 (370) 공간에 액세스하여 호스트 시스템(200)으로 상기 리드 데이터를 제공할 수 있다.
도 9는 도 8을 참조하여 설명된 본 발명의 제2 실시 예에 따른 동작 타이밍을 개략적으로 나타낸다.
도 9는 동일한 시간축에 제1 가상 기능(VF1) 및 제2 가상 기능(VF2)의 동작 타이밍을 도시한다. 도 9는 도 8을 참조하여 설명된 단계들 중 일부 단계의 동작 타이밍을 나타낸다.
도 9를 참조하면, 제2 가상 기능 컨트롤러(314)는 호스트 시스템(200)으로부터 공유 네임스페이스에 대한 제1 리드 커맨드를 수신하여 커맨드 큐(CMDQ)에 큐잉할 수 있다. 이때, 제2 가상 기능 컨트롤러(314)가 현재 비지 상태로서 제1 리드 커맨드를 처리하지 못하고 있을 수 있다.
단계 S802에서, 제1 가상 기능 컨트롤러(312)는 호스트 시스템(200)으로부터 상기 제1 리드 커맨드와 동일한 메모리 위치에 액세스하기 위한 제2 리드 커맨드를 수신하여 커맨드 큐(CMDQ)에 큐잉할 수 있다. 제1 가상 기능 컨트롤러(312)는 단계 S804 내지 단계 S810를 수행하여 제2 가상 기능 컨트롤러(314)에 큐잉된 제1 리드 커맨드를 확인할 수 있다.
단계 S814에서, 메모리 컨트롤러(330)는 상기 제2 리드 커맨드를 처리하여 상기 메모리 위치의 데이터를 버퍼 메모리(370)의 할당된 공간으로 로드할 수 있다. 단계 S818에서 제1 가상 기능 컨트롤러(312)는 제2 가상 기능 컨트롤러(314)로 상기 할당된 버퍼 메모리(370) 공간의 액세스 권한을 제공할 수 있다.
단계 S820에서, 제1 가상 기능 컨트롤러(312)는 제2 리드 커맨드에 대한 응답으로서 호스트 시스템(200)으로 상기 데이터를 제공할 수 있다.
단계 S822에서, 제2 가상 기능 컨트롤러(314)는 제1 리드 커맨드에 대한 응답으로서 호스트 시스템(200)으로 상기 데이터를 제공할 수 있다.
본 발명의 제2 실시 예에 따르면, 복수의 가상 머신 컨트롤러들이 공유 네임스페이스의 동일 데이터를 리드하기 위해 각각 리드 커맨드를 처리하는 경우, 하나의 가상 기능컨트롤러가 하나의 리드 커맨드를 처리하고 다른 가상 기능 컨트롤러로 버퍼 메모리(370)의 액세스 정보를 제공하면, 복수의 가상 기능 컨트롤러들이 각각의 리드 커맨드에 대한 응답을 상기 복수의 가상 머신들로 제공할 수 있다. 따라서, 적어도 한 번의 메모리 장치의 리드 동작이 생략되므로, 메모리 시스템(300)의 액세스 성능이 향상될 수 있다.
본 발명의 실시 예들에 따르면, 제1 가상 머신 컨트롤러(312)는 공유 네임스페이스에 액세스하기 위한 리드 커맨드를 수신한 경우, 상기 공유 네임스페이스를 공유하는 가상 머신 컨트롤러들이 비지 상태인지 혹은 유휴 상태인지 판단할 수 있다. 상기 제1 가상 머신 컨트롤러(312)가 비지 상태이고 제2 가상 머신 컨트롤러(314)가 유휴 상태인 경우 상기 제1 가상 머신 컨트롤러(312)는 상기 리드 커맨드를 제2 가상 머신 컨트롤러(314)가 처리하도록 제어할 수 있다. 제2 가상 머신 컨트롤러(314)가 상기 공유 네임스페이스의 데이터를 버퍼 메모리(370)의 할당된 공간에 로드하면, 상기 제2 가상 머신 컨트롤러(314)가 상기 제1 가상 머신 컨트롤러(312)로 상기 할당된 공간에 대한 액세스 권한을 제공할 수 있다. 상기 제1 가상 머신 컨트롤러(312)는 상기 액세스 권한에 기초하여 상기 할당된 공간에 로드된 상기 데이터를 호스트 시스템(200)으로 제공할 수 있다.
본 발명의 실시 예들에 따르면, 어떤 가상 기능 컨트롤러가 비지 상태인 경우 다른 가상 기능 컨트롤러를 사용하여 상기 공유 네임스페이스에 액세스함으로써 가상 기능 컨트롤러들의 데이터 처리량을 분산하고 메모리 시스템(300)의 액세스 성능을 향상시킬 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 처리 시스템
200: 호스트 시스템
300: 메모리 시스템

Claims (16)

  1. 메모리 시스템에 있어서,
    호스트의 제1 및 제2 가상 머신에 각각 대응하는 제1 및 제2 가상 기능 컨트롤러;
    버퍼 메모리;
    상기 제1 및 제2 가상 기능 컨트롤러에 의해 공유된 네임스페이스; 및
    상기 공유된 네임스페이스를 제어하는 메모리 컨트롤러를 포함하고,
    상기 제1 가상 기능 컨트롤러는 상기 제1 가상 머신으로부터 수신한 상기 공유된 네임스페이스에 대응하는 커맨드를 상기 제2 가상 기능 컨트롤러로 제공하고,
    상기 제2 가상 기능 컨트롤러는 상기 제공된 커맨드에 응답하여 상기 커맨드에 대응하는 데이터가 상기 공유된 네임스페이스로부터 상기 버퍼 메모리에 로드되도록 상기 메모리 컨트롤러를 제어하고,
    상기 제1 가상 기능 컨트롤러는 상기 버퍼 메모리에 로드된 상기 데이터를 상기 제1 가상 머신으로 제공하는
    메모리 시스템.
  2. 제1항에 있어서,
    상기 제1 가상 기능 컨트롤러는
    상기 제1 가상 기능 컨트롤러가 비지 상태이고, 상기 제2 가상 기능 컨트롤러가 유휴 상태인 경우에 상기 수신한 커맨드를 상기 제2 가상 기능 컨트롤러로 제공하는
    메모리 시스템.
  3. 제2항에 있어서,
    상기 메모리 시스템은
    상기 제1 및 제2 가상 기능이 비지 상태인지 또는 유휴 상태인지 나타내는 상태 레지스터를 더 포함하는
    메모리 시스템.
  4. 제2항에 있어서,
    상기 제2 가상 기능 컨트롤러는
    상기 제1 가상 기능 컨트롤러로 상기 버퍼 메모리의 상기 데이터가 로드된 공간에 대한 액세스 정보를 제공하는
    메모리 시스템.
  5. 제2항에 있어서,
    상기 제1 가상 기능 컨트롤러는
    상기 제1 가상 머신으로부터 수신한 커맨드에 응하여 상기 수신한 커맨드에 대응하는 데이터가 상기 버퍼 메모리에 로드되도록 상기 메모리 컨트롤러를 제어하고, 상기 제2 가상 기능 컨트롤러로 상기 버퍼 메모리의 상기 데이터가 로드된 공간에 대한 액세스 정보를 제공하는
    메모리 시스템.
  6. 제5항에 있어서,
    상기 제1 가상 기능 컨트롤러는
    상기 제1 가상 기능 컨트롤러가 유휴 상태이고, 상기 제2 가상 기능 컨트롤러가 비지 상태이고, 상기 제2 가상 기능 컨트롤러가 상기 수신한 커맨드와 동일한 데이터에 대한 커맨드를 큐잉한 상태에 상기 수신한 커맨드에 응하여 상기 수신한 커맨드에 대응하는 데이터가 상기 버퍼 메모리에 로드되도록 상기 메모리 컨트롤러를 제어하는
    메모리 시스템.
  7. 제6항에 있어서,
    상기 제1 및 제2 가상 기능 컨트롤러는 각각 상기 버퍼 메모리의 상기 데이터가 버퍼링된 공간에 액세스하여 상기 제1 및 제2 가상 머신으로 상기 데이터를 제공하는
    메모리 시스템.
  8. 제1항에 있어서,
    상기 제1 가상 기능 컨트롤러는
    상기 제1 가상 기능 컨트롤러가 비지 상태이고, 상기 제2 가상 기능 컨트롤러가 유휴 상태이고, 상기 제2 가상 기능 컨트롤러가 상기 수신한 커맨드와 동일한 데이터에 대한 커맨드를 큐잉한 상태에 상기 수신한 커맨드를 상기 제2 가상 기능 컨트롤러로 제공하고,
    상기 제2 가상 기능 컨트롤러는
    상기 버퍼 메모리에 로드된 상기 데이터를 상기 제2 가상 머신으로 제공하는
    메모리 시스템.
  9. 제1항에 있어서,
    상기 메모리 시스템은
    상기 제1 가상 기능 컨트롤러를 통해서만 액세스 가능한 제1 전용 네임스페이스 및 상기 제2 가상 기능 컨트롤러를 통해서만 액세스 가능한 제2 전용 네임스페이스를 더 포함하는
    메모리 시스템.
  10. 호스트의 제1 및 제2 가상 머신에 각각 대응하는 제1 및 제2 가상 기능 컨트롤러 및 상기 제1 및 제2 가상 기능 컨트롤러에 의해 공유된 네임스페이스를 포함하는 메모리 시스템의 동작 방법에 있어서,
    상기 제1 가상 기능 컨트롤러가, 상기 제1 가상 머신으로부터 수신한 상기 공유된 네임스페이스에 대응하는 커맨드를 상기 제2 가상 기능 컨트롤러로 제공하는 단계;
    상기 제2 가상 기능 컨트롤러가, 상기 제공된 커맨드에 응답하여 상기 커맨드에 대응하는 데이터를 상기 공유된 네임스페이스로부터 상기 메모리 시스템에 포함된 버퍼 메모리에 로드하는 단계; 및
    상기 제1 가상 기능 컨트롤러가, 상기 버퍼 메모리에 로드된 상기 데이터를 상기 제1 가상 머신으로 제공하는
    동작 방법.
  11. 제10항에 있어서,
    상기 제1 가상 기능 컨트롤러가 비지 상태이고, 상기 제2 가상 기능 컨트롤러가 유휴 상태인 경우의 검출에 응답하여 상기 커맨드를 상기 제2 가상 기능 컨트롤러로 제공하는 단계를 수행하는
    동작 방법.
  12. 제11항에 있어서,
    상기 제2 가상 기능 컨트롤러가, 상기 데이터가 상기 버퍼 메모리에 로드된 이후 상기 버퍼 메모리의 상기 데이터가 로드된 공간에 대한 액세스 정보를 제공하는 단계
    를 더 포함하는 동작 방법.
  13. 제11항에 있어서,
    상기 제1 가상 기능 컨트롤러가, 상기 제1 가상 머신으로부터 수신한 커맨드에 대응하는 데이터를 상기 버퍼 메모리에 로드하는 단계; 및
    상기 제1 가상 기능 컨트롤러가, 상기 제2 가상 기능 컨트롤러로 상기 버퍼 메모리의 상기 데이터가 로드된 공간에 대한 액세스 정보를 제공하는 단계
    를 더 포함하는 동작 방법.
  14. 제13항에 있어서,
    상기 제1 가상 기능 컨트롤러가, 상기 제1 가상 기능 컨트롤러가 유휴 상태이고, 상기 제2 가상 기능 컨트롤러가 비지 상태이고, 상기 제2 가상 기능 컨트롤러가 상기 수신한 커맨드와 동일한 데이터에 대한 커맨드를 큐잉한 상태인 경우의 검출에 응답하여 상기 제1 가상 머신으로부터 수신한 커맨드에 대응하는 데이터를 상기 버퍼 메모리에 로드하는 단계를 수행하는
    동작 방법.
  15. 제14항에 있어서,
    상기 제1 및 제2 가상 기능 컨트롤러가, 각각 상기 버퍼 메모리의 상기 데이터가 버퍼링된 공간에 액세스하여 상기 제1 및 제2 가상 머신으로 상기 데이터를 제공하는 단계
    를 더 포함하는 동작 방법.
  16. 제10항에 있어서,
    상기 제2 가상 기능 컨트롤러가, 상기 제1 가상 기능 컨트롤러가 비지 상태이고, 상기 제2 가상 기능 컨트롤러가 유휴 상태이고, 상기 제2 가상 기능 컨트롤러가 상기 수신한 커맨드와 동일한 데이터에 대한 커맨드를 큐잉한 상태의 검출에 응하여
    상기 제2 가상 기능 컨트롤러가, 상기 버퍼 메모리에 로드된 상기 데이터를 상기 제2 가상 머신으로 제공하는 단계를 더 포함하는
    동작 방법.

KR1020200081367A 2020-07-02 2020-07-02 메모리 시스템 및 메모리 시스템의 동작방법 KR20220003757A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200081367A KR20220003757A (ko) 2020-07-02 2020-07-02 메모리 시스템 및 메모리 시스템의 동작방법
US17/148,301 US11782746B2 (en) 2020-07-02 2021-01-13 Memory system and operating method thereof
CN202110249073.4A CN113885783B (zh) 2020-07-02 2021-03-08 存储器系统及其操作方法
US18/363,324 US20230376340A1 (en) 2020-07-02 2023-08-01 Memory system and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200081367A KR20220003757A (ko) 2020-07-02 2020-07-02 메모리 시스템 및 메모리 시스템의 동작방법

Publications (1)

Publication Number Publication Date
KR20220003757A true KR20220003757A (ko) 2022-01-11

Family

ID=79013073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200081367A KR20220003757A (ko) 2020-07-02 2020-07-02 메모리 시스템 및 메모리 시스템의 동작방법

Country Status (3)

Country Link
US (2) US11782746B2 (ko)
KR (1) KR20220003757A (ko)
CN (1) CN113885783B (ko)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US8756598B1 (en) * 2010-03-31 2014-06-17 Netapp, Inc. Diskless virtual machine cloning by separately cloning a virtual drive and configuration data of a source virtual machine for combination into a cloned virtual machine
WO2012176277A1 (ja) * 2011-06-21 2012-12-27 富士通株式会社 情報処理装置、仮想マシン管理方法および仮想マシン管理プログラム
US8601473B1 (en) * 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9237195B2 (en) 2012-04-27 2016-01-12 Netapp, Inc. Virtual storage appliance gateway
US9772866B1 (en) * 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
US9003071B2 (en) 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US11243707B2 (en) * 2014-03-12 2022-02-08 Nutanix, Inc. Method and system for implementing virtual machine images
US20170228173A9 (en) * 2014-05-02 2017-08-10 Cavium, Inc. Systems and methods for enabling local caching for remote storage devices over a network via nvme controller
US9430268B2 (en) 2014-05-02 2016-08-30 Cavium, Inc. Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers
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
US9294567B2 (en) * 2014-05-02 2016-03-22 Cavium, Inc. Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller
US11036533B2 (en) * 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
US20170180325A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Technologies for enforcing network access control of virtual machines
US10809998B2 (en) * 2016-02-12 2020-10-20 Nutanix, Inc. Virtualized file server splitting and merging
US10228874B2 (en) * 2016-12-29 2019-03-12 Intel Corporation Persistent storage device with a virtual function controller
US10733112B2 (en) * 2017-06-16 2020-08-04 Alibaba Group Holding Limited Method and apparatus for hardware virtualization
JP2019008730A (ja) * 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステム
US11288180B2 (en) * 2018-01-19 2022-03-29 Micron Technology, Inc. Management of storage resources allocated from non-volatile memory devices to users
US10917438B2 (en) * 2018-01-25 2021-02-09 Cisco Technology, Inc. Secure publishing for policy updates
US11068203B2 (en) * 2018-08-01 2021-07-20 Micron Technology, Inc. NVMe direct virtualization with configurable storage

Also Published As

Publication number Publication date
CN113885783B (zh) 2024-03-01
US20230376340A1 (en) 2023-11-23
CN113885783A (zh) 2022-01-04
US11782746B2 (en) 2023-10-10
US20220004418A1 (en) 2022-01-06

Similar Documents

Publication Publication Date Title
US11954370B2 (en) Command queuing
US10467037B2 (en) Storage device and user device supporting virtualization function
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
CN115495389B (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
US20160062659A1 (en) Virtual memory module
KR102653373B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
US11494318B2 (en) Controller and operation method thereof
US11762590B2 (en) Memory system and data processing system including multi-core controller for classified commands
KR20190010335A (ko) 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템
CN112445423A (zh) 存储器系统、计算机系统及其数据管理方法
US20190042415A1 (en) Storage model for a computer system having persistent system memory
US11922062B2 (en) Controller and operating method thereof
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
CN113885783B (zh) 存储器系统及其操作方法
US11099762B2 (en) Multi host controller and semiconductor device including the same
US11106559B2 (en) Memory controller and memory system including the memory controller
KR102549540B1 (ko) 스토리지 장치 및 그 동작 방법
KR102254101B1 (ko) 데이터 처리 시스템 및 이의 동작 방법
US11656996B2 (en) Controller for managing order information of data, operation method thereof, and memory system including the same
US11662947B2 (en) Memory system and data processing system performing operation on commands before fetching of commands
US20230359578A1 (en) Computing system including cxl switch, memory device and storage device and operating method thereof
CN114610527A (zh) 存储装置、计算机系统、启动方法及存储介质