KR102473665B1 - 스토리지 디바이스 및 스토리지 가상화 시스템 - Google Patents

스토리지 디바이스 및 스토리지 가상화 시스템 Download PDF

Info

Publication number
KR102473665B1
KR102473665B1 KR1020150106773A KR20150106773A KR102473665B1 KR 102473665 B1 KR102473665 B1 KR 102473665B1 KR 1020150106773 A KR1020150106773 A KR 1020150106773A KR 20150106773 A KR20150106773 A KR 20150106773A KR 102473665 B1 KR102473665 B1 KR 102473665B1
Authority
KR
South Korea
Prior art keywords
virtual
address
function device
physical
virtual function
Prior art date
Application number
KR1020150106773A
Other languages
English (en)
Other versions
KR20170013713A (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 KR1020150106773A priority Critical patent/KR102473665B1/ko
Priority to US15/216,312 priority patent/US20170031832A1/en
Publication of KR20170013713A publication Critical patent/KR20170013713A/ko
Priority to US16/810,500 priority patent/US11397607B2/en
Application granted granted Critical
Publication of KR102473665B1 publication Critical patent/KR102473665B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

스토리지 디바이스 및 스토리지 가상화 시스템에 관하여 개시한다. 스토리지 디바이스는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치의 물리적 저장 영역에 대응되는 하나 이상의 가상 디바이스를 생성하고, 액세스 요구에 따라서 상기 가상 디바이스에 대한 가상 어드레스를 상기 물리적 저장 영역에 대한 물리 어드레스로 변환하는 동작을 수행하는 메모리 컨트롤러를 포함한다.

Description

스토리지 디바이스 및 스토리지 가상화 시스템{Storage device and storage virtualization system}
본 발명은 가상화 시스템 및 그 제어 방법에 관한 것으로서, 자세하게는 스토리지 디바이스 및 스토리지 가상화 시스템에 관한 것이다.
프로세서 기술이 발전함에 따라 가상화 기술(virtualization technology)에 대한 관심이 증가하고 있다. 호스트 가상화 기술은 하나의 물리적인 디바이스에서 다수의 운영체계를 독립적으로 운용할 수 있도록 해주는 기술을 말한다. 그리고, 스토리지 가상화 기술은 호스트의 가상 머신(virtual machine)에 접속되는 스토리지 디바이스를 가상화하는 기술을 말한다. 가상화 기술이 적용된 시스템은 자원 이용의 측면에서 효율이 증가되지만 I/O 성능 하락이 발생된다. 이에 따라서, 가상화 시스템에서 I/O 성능을 개선하기 위한 연구가 필요하게 되었다.
본 발명의 기술적 사상이 해결하려는 과제는 가상화 시스템에서의 소프트웨어 오버헤드를 개선하기 위한 스토리지 디바이스를 제공하는데 있다.
본 발명의 기술적 사상이 해결하려는 다른 과제는 가상화 시스템에서의 소프트웨어 오버헤드를 개선하기 위한 스토리지 가상화 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 스토리지 디바이스는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치의 물리적 저장 영역에 대응되는 하나 이상의 가상 디바이스를 생성하고, 액세스 요구에 따라서 상기 가상 디바이스에 대한 가상 어드레스를 상기 물리적 저장 영역에 대한 물리 어드레스로 변환하는 동작을 수행하는 메모리 컨트롤러를 포함한다.
본 발명의 실시 예에 따르면, 상기 가상 디바이스는 상기 가상 어드레스를 논리 어드레스로 변환하는 리소스 매핑 처리를 수행하고, 상기 리소스 매핑 처리 결과에 따른 논리 어드레스를 물리 어드레스로 변환하는 어드레스 변환 처리를 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 가상 어드레스에 대응되는 논리 어드레스를 검색하기 위한 가상 디바이스 매핑 테이블 정보를 저장하는 랜덤 액세스 메모리를 더 포함하고, 상기 가상 디바이스는 상기 랜덤 액세스 메모리에 저장된 가상 디바이스 매핑 테이블 정보를 이용하여 상기 가상 어드레스를 논리 어드레스로 변환하는 동작을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 스토리지 디바이스가 파워 오프 되기 전에 상기 랜덤 액세스 메모리에 저장된 상기 가상 디바이스 매핑 테이블 정보를 상기 비휘발성 메모리 장치에 라이트하는 동작을 수행하고, 상기 스토리지 디바이스가 파워 온 되고 나서 상기 비휘발성 메모리 장치로부터 상기 가상 디바이스 매핑 테이블 정보를 읽어내어 상기 랜덤 액세스 메모리에 로딩하는 동작을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 호스트로부터의 디바이스 가상화 요구에 따라서 상기 가상 디바이스 각각에 대한 고유한 식별 디바이스 정보를 생성하고, 생성된 가상 디바이스 각각에 대한 고유한 식별 디바이스 정보를 상기 호스트로 전송할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 호스트로부터 수신된 가상화 요구에 기초하여 하나의 물리 기능(physical function) 디바이스와 하나 이상의 가상 기능(virtual function) 디바이스를 생성하며, 상기 물리 기능 디바이스는 호스트의 가상 머신 모니터에게 액세스 권한을 부여하고, 상기 하나 이상의 가상 기능 디바이스는 상기 호스트의 가상 머신에 할당될 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 가상 기능 디바이스에 대한 리소스 매핑 및 액세스 권한을 설정할 수 있는 인터페이스를 상기 호스트에 제공할 수 있다.
본 발명의 실시 예에 따르면, 상기 물리 기능 디바이스는 상기 가상 기능 디바이스에 대한 액세스 제어 설정을 수행하고, 상기 액세스 제어 설정은 상기 호스트로부터 수신되는 가상 기능 디바이스 별로 가상 머신 식별 정보, 가상 어드레스 범위 정보, 논리 어드레스 범위 정보, 허가(permission) 정보, 정책(policy) 정보에 기초하여 수행될 수 있다.
본 발명의 실시 예에 따르면, 상기 가상 기능 디바이스는 카피-온-라이트(copy-on-write) 정책이 설정된 상태에서 리드 동작만 허용되는 저장 영역에 대하여 라이트 요청이 발생되면, 새로운 논리 어드레스를 할당하여 라이트하고자 하는 저장 영역의 데이터를 카피한 후에 가상 어드레스에 대응되는 논리 어드레스의 매핑 정보를 변경할 수 있다.
발명의 기술적 사상의 다른 면에 따른 스토리지 가상화 시스템은 I/O 어댑터를 통하여 접속되는 디바이스들과 통신하며, 가상화 환경에서 데이터를 처리하는 호스트 및, 상기 I/O 어댑터에 접속되는 하나 이상의 스토리지 디바이스를 포함하고, 상기 스토리지 디바이스는 상기 호스트로부터 수신되는 디바이스 가상화 요구에 따라서 하나 이상의 가상 디바이스를 생성하고, 상기 호스트로부터의 액세스 요구에 따라서 상기 가상 어드레스를 논리 어드레스로 변환하는 리소스 매핑 처리 및 상기 변환된 논리 어드레스를 물리 어드레스로 변환하는 어드레스 변환 처리를 수행하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 호스트는 컴퓨팅 환경을 소프트웨어로 구현하는 하나 이상의 가상 머신, 상기 하나 이상의 가상 머신을 관리하는 가상 머신 모니터 및, 상기 하나 이상의 스토리지 디바이스들과 접속하여 데이터 통신을 위한 인터페이스를 수행하는 I/O 어댑터를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 I/O 어댑터는 I/O 가상화를 제공하는 싱글 루트 입출력 가상화(SR-IOV) 기능을 지원할 수 있다.
본 발명의 실시 예에 따르면, 상기 스토리지 디바이스는 호스트로부터 수신된 가상화 요구에 기초하여 하나의 물리 기능(physical function) 디바이스와 하나 이상의 가상 기능(virtual function) 디바이스를 상기 호스트에 제공하며, 상기 물리 기능 디바이스는 상기 가상 머신 모니터에게 액세스 권한을 부여하고, 상기 하나 이상의 가상 기능 디바이스는 상기 가상 머신에 액세스 권한을 부여할 수 있다.
본 발명의 실시 예에 따르면, 상기 가상 머신 모니터는 상기 가상 머신이 생성될 때 상기 가상 머신에 상기 가상 기능 디바이스를 할당하는 매핑 처리를 수행하고, 상기 물리 기능 디바이스를 통해서 상기 가상 기능 디바이스에 대한 액세스 제어 설정을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 가상 기능 디바이스는 카피-온-라이트(copy-on-write) 정책이 설정된 상태에서 리드 동작만 허용되는 저장 영역에 대한 라이트 요청이 수신되면, 새로운 논리 어드레스를 할당하여 라이트하고자 하는 저장 영역의 데이터를 카피한 후에 가상 어드레스에 대응되는 논리 어드레스의 매핑 정보를 변경할 수 있다.
본 발명에 따르면 스토리지 디바이스 자체에서 가상 앱스트랙션(virtual abstraction)을 제공하고, 가상 디바이스 내부에서 어드레스 변환 메커니즘에 기반하여 액세스 제어를 실행함으로써, 가상 디바이스들 간의 독립성을 보장할 수 있는 효과가 발생된다.
그리고, 가상 머신들 간에 공유하는 스토리지 디바이스의 저장 영역 중에서 업데이트(update)가 실제 발생되는 부분 영역에 대해서만 데이터 복사(copy)를 수행함으로써, 스토리지 디바이스의 성능 향상 및 수명을 연장시킬 수 있는 효과가 발생된다.
그리고, 가상화 시스템에서 액세스 제어 정보가 호스트에 저장되지 않고 스토리지 디바이스에 저장되어 있으므로, 바이러스를 통한 변경에 취약하지 않게 된다.
도 1은 본 발명에 따른 컴퓨팅 시스템의 블록 구성의 일 예를 보여준다.
도 2는 본 발명에 따른 컴퓨팅 시스템의 블록 구성의 다른 예를 보여준다.
도 3은 본 발명에 따른 스토리지 가상화 시스템의 주요 블록 구성의 일 예를 보여준다.
도 4는 본 발명에 따른 스토리지 가상화 시스템의 주요 블록 구성의 다른 예를 보여준다.
도 5는 본 발명에 따른 스토리지 가상화 시스템에서의 액세스 제어 동작의 흐름을 예시적으로 보여준다.
도 6은 본 발명에 따른 스토리지 가상화 시스템에서의 액세스 제어 동작에 따른 매핑 테이블 변경 동작을 예시적으로 보여준다.
도 7은 본 발명의 실시 예에 따른 스토리지 디바이스의 블록 구성도이다.
도 8는 도 7에 도시된 메모리 컨트롤러의 세부 구성을 예시적으로 보여준다.
도 9는 도 7에 도시된 메모리 장치를 구성하는 비휘발성 메모리 칩의 세부 구성을 예시적으로 보여준다.
도 10은 도 9에 도시된 메모리 셀 어레이의 일 예를 나타낸다.
도 11은 도 9에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예를 나타내는 회로도이다.
도 12는 본 발명의 실시 예에 따른 스토리지 가상화 시스템에서의 호스트와 디바이스 사이의 OOB 시퀀스 및 디바이스 인식 과정을 개략적으로 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 스토리지 디바이스에서의 디바이스 가상화 처리 방법의 흐름도이다.
도 14는 본 발명의 실시 예에 따른 스토리지 디바이스에서의 디바이스 인식 명령을 처리하는 방법의 흐름도이다.
도 15는 본 발명의 실시 예에 따른 스토리지 가상화 시스템에서의 초기화 및 디바이스 인식 과정을 보여주는 흐름도이다.
도 16은 본 발명의 실시 예에 따른 스토리지 가상화 시스템에서의 가상화 처리 방법의 다른 예를 보여주는 흐름도이다.
도 17은 본 발명의 실시 예에 따른 스토리지 가상화 시스템에서의 액세스 제어 방법을 예시적으로 보여주는 흐름도이다.
도 18은 본 발명의 실시 예에 따른 스토리지 디바이스가 적용되는 전자 장치의 예를 나타내는 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명에 따른 컴퓨팅 시스템의 블록 구성의 일 예(1000A)를 보여준다.
도 1을 참조하면, 컴퓨팅 시스템(1000A)은 호스트(100A) 및 스토리지 디바이스(200)를 포함한다.
예로서, 컴퓨팅 시스템(1000A)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 모뎀(modem), 모바일 장치, 서버(server) 등이 될 수 있다.
호스트(100A)는 프로세서(110), 메모리(120), 입/출력(I/O) 어댑터(130A) 및 버스(140)를 포함한다. 호스트(100A)의 구성 수단들은 버스(140)를 통하여 신호 및 데이터를 주고 받을 수 있다.
프로세서(110)는 데이터의 처리 및 컴퓨팅 시스템(1000A)의 구성 수단들의 동작들의 제어를 수행하기 위한 회로, 인터페이스들 또는 프로그램 코드를 포함할 수 있다. 예로서, 프로세서(110)는 CPU, ARM, 또는 주문형 반도체(ASIC: application specific integrated circuit)를 포함할 수 있다.
메모리(120)는 컴퓨팅 시스템(1000A)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM을 포함할 수 있다. 또한, 비휘발성 메모리를 포함할 수도 있다. 메모리(120)에는 하나 이상의 오퍼레이팅 시스템(operating system)들 및 가상 머신(VM: virtual machine)들을 실행하도록 동작할 수 있는 프로그램 코드들 및 가상 머신들을 관리하기 위한 가상 머신 모니터를 실행하는 프로그램 코드들도 저장될 수 있다. 이와 같은 가상 머신 및 가상 머신 모니터를 실행하는 가상화 프로그램 코드들은 호스트 가상화 소프트웨어(HV SW; 120-1)에 포함될 수 있다.
프로세서(110)는 메모리(120)에 저장된 호스트 가상화 소프트웨어(HV SW; 120-1)를 구동시켜서 하나 이상의 오퍼레이팅 시스템(operating system)들, 가상 머신(VM: virtual machine)들을 실행시킬 수 있다. 또한, 프로세서(110)는 가상 머신들을 관리하기 위한 가상 머신 모니터를 실행시킬 수 있다. 이와 같은 방식으로, 프로세서(110)는 컴퓨팅 시스템(1000A)의 구성 수단들의 동작을 제어하도록 동작할 수 있다.
I/O 어댑터(130A)는 호스트(100A)에 입출력 디바이스들을 접속하는 어댑터이다. 예로서, I/O 어댑터(130A)는 PCI 또는 PCIe 어댑터, SCSI 어댑터, 파이버 채널 어댑터, 시리얼 ATA 어댑터 등을 포함할 수 있다. I/O 어댑터(130A)는 컴퓨팅 시스템(1000A)에 접속되는 디바이스들과의 정보를 통신하도록 동작할 수 있는 회로, 인터페이스들, 또는 코드를 포함할 수 있다. I/O 어댑터(130A)는 하나 이상의 표준화된 버스들 및 하나 이상의 버스 제어기들을 포함할 수 있다. 따라서, I/O 어댑터(130A)는 버스(140)에 접속된 디바이스들을 인식하고, 버스(140)에 접속된 디바이스들을 열거하고, 버스(140)에 접속된 다양한 디바이스들을 위한 자원(resource) 할당 및 할당 해제하는 동작을 수행할 수도 있다. 즉, I/O 어댑터(130A)는 버스(140) 위에서의 통신들을 관리하도록 동작할 수 있다. 예를 들어, I/O 어댑터(130A)는 PCI 또는 PCIe 시스템일 수 있고, PCIe 루트 컴플렉스(root complex), 하나 이상의 PCIe 스위치들 또는 브릿지(bridge)들을 포함할 수 있다. 예로서, I/O 어댑터(130A)는 가상 머신 모니터에 의해 제어될 수도 있다.
PCI(Peripheral Component Interconnect)는 프로세서(110)에 입출력 디바이스들을 연결하는데 사용되는 버스 프로토콜을 정의한다. PCIe(Peripheral Component Interconnect Express)는 PCI 표준에서 정의한 프로그래밍 개념을 가지면서 물리적 통신 레이어(physical communication layer)를 고속 시리얼 인터페이스로 정의한 것이다.
스토리지 디바이스(200)는 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD) 등으로 구현될 수 있다. 예로서, 스토리지 디바이스(200)는 DAS(Directly Attached Storage) 방식으로 호스트(100A)에 접속될 수 있다. 다른 예로서, NAS(Network Attached Storage) 또는 SAN(Storage Area Network)방식으로 접속될 수도 있다.
스토리지 디바이스(200)는 메모리 컨트롤러(210) 및 메모리 장치(220)를 포함한다.
메모리 컨트롤러(210)는 호스트(100A)로부터 수신되는 명령에 기초하여 메모리(220)에 대한 제어 동작을 수행할 수 있다. 메모리 컨트롤러(210)는 메모리 장치(220)로 어드레스, 커맨드 및 제어 신호를 제공함으로써, 메모리 장치(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어할 수 있다.
메모리 컨트롤러(210)에는 디바이스 가상화 소프트웨어(DV SW; 210-1), 액세스 제어 소프트웨어(AC SW; 210-2) 및 가상 디바이스 매핑 테이블 정보(VD MT; 210-3)가 저장되어 있다. 메모리 컨트롤러(210)는 디바이스 가상화 소프트웨어(210-1)를 구동시켜 하나 이상의 가상 디바이스를 생성할 수 있다. 메모리 컨트롤러(210)는 가상화 과정에서 가상 디바이스 별로 고유한 식별 디바이스 정보를 생성시킬 수 있다.
예로서, 메모리 컨트롤러(210)는 메모리 장치(220)의 저장 영역을 복수 개로 분할하고, 분할된 복수의 저장 영역에 각각 대응되는 가상 디바이스 별로 고유한 식별 디바이스 정보를 생성할 수 있다. 식별 디바이스 정보는 호스트(100A)의 I/O 어댑터(130A)에서 디바이스를 식별하는데 이용될 수 있다.
예로서, 메모리 컨트롤러(210)는 메모리 장치(220)의 저장 영역에 대응되는 논리 어드레스 또는 가상 어드레스를 복수개의 영역으로 분할하고, 분할된 논리 어드레스 영역 또는 가상 어드레스 영역에 각각 대응되는 가상 디바이스 별로 고유한 식별 디바이스 정보를 생성할 수도 있다.
예로서, 메모리 컨트롤러(210)는 가상 디바이스의 용량 크기를 실제 가상 디바이스에 할당된 저장 공간보다 크게 설정할 수 있다. 또한, 가상 디바이스들마다 다르게 저장 용량을 설정할 수도 있다.
예로서, 메모리 컨트롤러(210)는 가상 디바이스들마다 독립된 가상 디바이스 앱스트랙션(virtual device abstraction)을 갖도록 가상화 처리를 할 수 있다
가상 디바이스 매핑 테이블 정보(210-3)에는 가상 디바이스들에 대한 가상 어드레스에 대응되는 논리 어드레스를 검색하는데 필요한 정보들이 포함된다. 예로서, 가상 디바이스 매핑 테이블 정보(210-3)에는 저장 영역별로 가상 머신들에 대한 리드 또는 라이트 액세스 권한 설정 정보들이 포함될 수 있다.
예로서, 메모리 컨트롤러(210)는 호스트(210)로부터 디바이스 가상화 소프트웨어(210-1)를 구동시켜서 호스트(210)로부터 수신된 가상화 요구에 기초하여 하나의 물리 기능(physical function) 디바이스와 하나 이상의 가상 기능(virtual function) 디바이스를 생성할 수 있다. 예로서, 물리 기능 디바이스를 호스트(100A)의 가상 머신 모니터에게 액세스 권한이 부여된 가상 디바이스로 설정하고, 가상 기능 디바이스를 호스트(100A)의 가상 머신에 할당되는 가상 디바이스로 설정할 수 있다.
예로서, 메모리 컨트롤러(210)는 액세스 제어 소프트웨어(210-2)를 구동시켜서 호스트(210)로부터 수신된 액세스 요구에 따라서 가상 디바이스에 대한 가상 어드레스를 물리적 저장 영역에 대한 물리 어드레스로 변환하는 동작을 수행할 수 있다. 세부적으로, 메모리 컨트롤러(210)는 가상 디바이스 매핑 테이블 정보(210-3)를 이용하여 상기 가상 어드레스를 논리 어드레스로 변환하는 리소스 매핑 처리를 수행할 수 있다. 그리고 나서, 메모리 컨트롤러(210)는 리소스 매핑 처리 결과에 따른 논리 어드레스를 물리 어드레스로 변환하는 어드레스 변환 처리를 수행할 수 있다.
도 1에는 호스트(100A)에 단일의 스토리지 디바이스(200)가 접속되는 구성의 예를 보여준다. 다른 실시 예로서, 호스트(100A)에 복수 개의 스토리지 디바이스(200)들이 접속될 수도 있다.
도 2는 본 발명에 따른 컴퓨팅 시스템의 블록 구성의 다른 예(1000B)를 보여준다.
도 2를 참조하면, 컴퓨팅 시스템(1000B)은 호스트(100B) 및 스토리지 디바이스(200)를 포함한다.
예로서, 컴퓨팅 시스템(1000B)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 모뎀(modem), 모바일 장치, 서버(server) 등이 될 수 있다.
호스트(100B)는 프로세서(110), 메모리(120), 입/출력(I/O) 어댑터(130B) 및 버스(140)를 포함한다. 호스트(100B)의 구성 수단들은 버스(140)를 통하여 신호 및 데이터를 주고 받을 수 있다.
도 2의 프로세서(110) 및 메모리(120)는 도 1에서 설명한 프로세서(110) 및 메모리(120)와 실질적으로 동일하므로, 중복적인 설명은 피하기로 한다. 그리고, 도 2의 스토리지 디바이스(200)도 도 1에서 설명한 스토리지 디바이스(200)와 실질적으로 동일하므로, 중복적인 설명은 피하기로 한다.
그러면, 도 2의 컴퓨팅 시스템(1000B)의 구성 수단들 중에서 I/O 어댑터(130B)를 중심으로 설명하기로 한다.
I/O 어댑터(130B)는 호스트(100B)에 입출력 디바이스들을 접속하는 어댑터이다. 예로서, I/O 어댑터(130B)는 PCI 또는 PCIe 어댑터, SCSI 어댑터, 파이버 채널 어댑터, 시리얼 ATA 어댑터 등을 포함할 수 있다. I/O 어댑터(130B)는 컴퓨팅 시스템(1000B)에 접속되는 디바이스들과의 정보를 통신하도록 동작할 수 있는 회로, 인터페이스들, 또는 코드를 포함할 수 있다. I/O 어댑터(130B)는 하나 이상의 표준화된 버스들 및 하나 이상의 버스 제어기들을 포함할 수 있다. 따라서, I/O 어댑터(130B)는 버스(140)에 접속된 디바이스들을 인식하고, 버스(140)에 접속된 디바이스들을 열거하고, 버스(140)에 접속된 다양한 디바이스들을 위한 자원(resource) 할당 및 할당 해제하는 동작을 수행할 수 있다. 즉, I/O 어댑터(130B)는 버스(140) 위에서의 통신들을 관리하도록 동작할 수 있다. 예를 들어, I/O 어댑터(130B)는 PCI 또는 PCIe 시스템일 수 있고, PCIe 루트 컴플렉스(root complex), 하나 이상의 PCIe 스위치들 또는 브릿지(bridge)들을 포함할 수 있다. 예로서, I/O 어댑터(130B)는 가상 머신 모니터에 의해 제어될 수도 있다.
I/O 어댑터(130B)는 SR-IOV(Single Root-I/O Virtualization; 130B-1) 기능이 탑재될 수 있다. 예로서, SR-IOV(130B-1) 기능은 가상화 환경에서 스토리지 디바이스의 I/O 성능을 향상시키기 위하여 개발된 것으로, 가상화 시스템의 가상 머신과 스토리지 디바이스를 직접 연결시키는 동작을 수행한다. 이에 따라서, SR-IOV(130B-1) 기능이 탑재된 컴퓨팅 시스템(1000B)에서는 하나의 가상 머신에 최소 하나의 스토리지 디바이스 또는 가상 디바이스가 할당되어야 한다.
참고적으로, SR-IOV(130B-1) 기능은 단일 루트 포트 아래에 단일 PCIe 물리적 디바이스가 가상 머신 모니터 또는 게스트 운영 체계에 여러 개별 물리적 디바이스로 표시되도록 하는 규격을 갖는다. SR-IOV(130B-1) 기능을 지원하는 PCIe 디바이스는 게스트 OS 인스턴스 및 가상 머신 모니터에 자신의 여러 인스턴스를 표시한다. 표시되는 가상 기능 디바이스의 수는 디바이스에 따라 달라질 수 있다.
SR-IOV(130B-1) 기능이 탑재된 I/O 어댑터(130B)가 적용되는 가상화 시스템에서는 I/O 어댑터(130B)가 가상 머신 모니터를 통하지 않고 가상 머신들과 스토리지 디바이스(200)의 가상 디바이스들을 직접 연결시킬 수 있다. 따라서, SR-IOV(130B-1) 기능을 이용함으로써 가상 머신 모니터를 통하지 않고 호스트(100B)의 가상 머신들을 스토리지 디바이스(200)에서 가상화된 가상 기능 디바이스들과 직접 연결시킬 수 있게 된다.
도 3은 본 발명에 따른 스토리지 가상화 시스템의 주요 블록 구성의 일 예(2000A)를 보여준다. 예로서, 도 3의 스토리지 가상화 시스템(2000A)은 도 1의 컴퓨팅 시스템(1000A)에 대한 가상화 시스템이 될 수 있다.
도 3을 참조하면, 스토리지 가상화 시스템(2000A)은 가상 머신 모니터(VMM; 300), I/O 어댑터(130A), 제어 가상 머신(CVM; 400), 복수의 가상 머신들(VM1 ~ VMj; 410-1 ~ 410-j) 및 스토리지 디바이스(200A)를 포함한다.
가상 머신 모니터(300), I/O 어댑터(130A), 제어 가상 머신(400), 복수의 가상 머신들(410-1 ~ 410-j)는 컴퓨팅 시스템의 호스트에 포함되는 소프트웨어 또는 하드웨어들이다.
가상 머신들(410-1 ~ 410-j) 각각은 실제 컴퓨터처럼 작동하기 위하여 운영 체계 및 어플리케이션 프로그램들을 구동시킬 수 있다.
스토리지 디바이스(200A)는 물리 기능 디바이스(PF; 201) 및 복수의 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)을 포함한다. 물리 기능 디바이스(201)는 디바이스 가상화 소프트웨어(DV SW; 201-1), 액세스 제어 소프트웨어(AC SW; 201-2) 및 물리 기능 메타 데이터(PF MD; 201-3)를 구비한다. 가상 기능 디바이스(VF1; 202)는 액세스 제어 소프트웨어(AC SW; 202-1) 및 가상 기능 메타 데이터(VF1 MD; 202-2)를 구비하고, 가상 기능 디바이스(VFj; 203)는 액세스 제어 소프트웨어(AC SW; 203-1) 및 가상 기능 메타 데이터(VFj MD; 203-2)를 구비한다.
물리 기능 디바이스(PF; 201)는 스토리지 디바이스(200A)의 물리적 기능을 제어하고, 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)을 제어하는 동작을 수행한다. 물리 기능 디바이스(PF; 201)는 디바이스 가상화 소프트웨어(DV SW; 201-1)를 구동시켜서 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)을 생성시키거나 삭제할 수 있다.
물리 기능 디바이스(201) 및 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)은 독립된 컨피규레이션 스페이스(configuration space), 메모리 스페이스(memory space) 및 메시지 스페이스(message space)를 가진다.
물리 기능 디바이스(201)는 액세스 제어 소프트웨어(AC SW; 201-2)를 구동시켜서 호스트(210)로부터 수신된 액세스 요구에 따라서 가상 어드레스를 물리적 저장 영역에 대한 물리 어드레스로 변환하는 동작을 수행할 수 있다. 세부적으로, 물리 기능 디바이스(201)는 물리 기능 메타 데이터(PF MD; 201-3)를 이용하여 가상 어드레스를 논리 어드레스로 변환하는 리소스 매핑 처리를 수행할 수 있다. 그리고 나서, 물리 기능 디바이스(201)는 리소스 매핑 처리 결과에 따른 논리 어드레스를 물리 어드레스로 변환하는 어드레스 변환 처리를 수행할 수 있다. 물리 기능 메타 데이터(201-3)에는 가상 어드레스에 대응되는 논리 어드레스를 검색하기 위한 가상 디바이스 매핑 테이블 정보 및 논리 어드레스에 대응되는 물리 어드레스를 검색하기 위한 어드레스 변환 테이블 정보가 포함될 수 있다. 그리고, 물리 기능 메타 데이터(201-3)에는 저장 영역별로 가상 머신들에 대한 리드 또는 라이트 액세스 권한 설정 정보들이 포함될 수 있다.
가상 기능 디바이스(VF1; 202)는 액세스 제어 소프트웨어(AC SW; 202-1)를 구동시켜서 호스트(210)로부터 수신된 액세스 요구에 따라서 가상 어드레스를 물리적 저장 영역에 대한 물리 어드레스로 변환하는 동작을 수행할 수 있다. 세부적으로, 가상 기능 디바이스(VF1; 202)는 가상 기능 메타 데이터(VF1 MD; 202-2)를 이용하여 가상 어드레스를 논리 어드레스로 변환하는 리소스 매핑 처리를 수행할 수 있다. 그리고 나서, 가상 기능 디바이스(VF; 202)는 리소스 매핑 처리 결과에 따른 논리 어드레스를 물리 어드레스로 변환하는 어드레스 변환 처리를 수행할 수 있다. 가상 기능 메타 데이터(VF1 MD; 202-2)에는 가상 기능 디바이스(VF1; 202)에 할당된 가상 어드레스에 대응되는 논리 어드레스를 검색하기 위한 가상 디바이스 매핑 테이블 정보 및 논리 어드레스에 대응되는 물리 어드레스를 검색하기 위한 어드레스 변환 테이블 정보가 포함될 수 있다. 그리고, 가상 기능 메타 데이터(VF1 MD; 201-2)에는 저장 영역별로 가상 머신들에 대한 리드 또는 라이트 액세스 권한 설정 정보들이 포함될 수 있다.
가상 기능 디바이스(VFj; 203)도 가상 기능 디바이스(VF1; 202)와 같은 방식으로 리소스 매핑 처리 및 어드레스 변환 처리를 수행할 수 있다.
I/O 어댑터(130A)는 물리 기능 디바이스(201) 및 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203) 각각에 대한 식별 디바이스 정보, 스페이스(configuration space), 메모리 스페이스(memory space) 및 메시지 스페이스(message space)를 가상 머신 모니터(300) 또는 제어 가상 머신(400)에 전달한다.
제어 가상 머신(400)은 가상 머신 모니터(300)와 가상 머신들(VM1 ~ VMj; 410-1 ~ 410-j)을 관리하는 인터페이스를 갖는다.
예로서, 제어 가상 머신(400)은 가상 머신들(VM1 ~ VMj; 410-1 ~ 410-j)에 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)을 할당하는 동작을 수행할 수 있다. 다른 예로서, 가상 머신 모니터(300)가 가상 머신들(VM1 ~ VMj; 410-1 ~ 410-j)에 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)을 할당하는 동작을 수행할 수도 있다.
그리고, 제어 가상 머신(400) 또는 가상 머신 모니터(300)는 물리 기능 디바이스(PF; 201) 및 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)에 대한 리소스 매핑(resource mapping) 및 액세스 권한 설정을 할 수 있다. 예로서, 물리 기능 디바이스(PF; 201)는 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)에 대한 리소스 매핑(resource mapping) 및 액세스 권한 설정할 수 있는 인터페이스를 제어 가상 머신(400) 또는 가상 머신 모니터(300)에 제공할 수 있다. 예로서, 가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203)에 대한 초기화 동작은 물리 기능 디바이스(201)를 통해서 수행될 수 있다.
물리 기능 디바이스(201)는 가상 머신 모니터(300) 또는 제어 가상 모니터(400)와 같이 Admin/Root 권한을 가진 소프트웨어만이 접근할 수 있도록 호스트에서 관리한다. 그렇지 않을 경우에는 액세스 권한 제어가 제대로 되지 않아서 보안 문제가 발생할 수 있다.
가상 기능 디바이스들(VF1 ~ VFj; 202 ~ 203) 각각은 독립된 가상 디바이스 앱스트랙션(virtual device abstraction)을 갖는다. 가상 디바이스의 용량 크기는 가상 디바이스 초기화 시점에 설정될 수 있다. 가상 디바이스의 용량은 실제 가상 디바이스에 할당된 저장 공간보다 크게 설정할 수 있다. 이러한 기능을 "thin provisioning 기능"이라고 부른다. 이는 실제 라이트가 발생되는 블록만을 라이트가 발생하는 시점에 할당하는 방식이다. 이를 통해서, 스토리지 디바이스가 제공하는 모든 가상 디바이스들의 용량 합계는 실제 스토리지 디바이스의 물리적인 저장 용량보다 클 수 있다. 가상 디바이스의 어드레스 공간은 가상 디바이스의 용량만큼이며, 이는 가상 디바이스들마다 다른 값으로 설정될 수 있다.
스토리지 디바이스(200A)를 가상화하는 과정에서 하나의 가상 블록에 대해서 리드/라이트 액세스 권한을 설정할 수 있다. 리드(read)만 허용하는 블록의 경우에는 카피-온-라이트(copy-on-write) 옵션을 설정할 수 있다. 라이트만 허용하는 블록도 설정할 수 있다. 이는 하나의 블록에 대해서 하나의 가상 머신은 "write-only "로 설정하고, 다른 가상 머신은 "write-only "로 설정함으로써, 2개의 가상 머신들 간의 데이터 전달을 위한 목적으로 사용될 수 있다. 보통의 경우에는 리드/라이트가 모두 허용될 수 있도록 블록 액세스 권한을 설정할 수 있다.
도 4는 본 발명에 따른 스토리지 가상화 시스템의 주요 블록 구성의 다른 예(2000B)를 보여준다. 예로서, 도 3의 스토리지 가상화 시스템(2000B)은 도 2의 컴퓨팅 시스템(1000B)에 대한 가상화 시스템이 될 수 있다.
도 4를 참조하면, 스토리지 가상화 시스템(2000B)은 가상 머신 모니터(VMM; 300), I/O 어댑터(130B), 제어 가상 머신(CVM; 400), 복수의 가상 머신들(VM1 ~ VMj; 410-1 ~ 410-j) 및 스토리지 디바이스(200A)를 포함한다.
도 4에 도시된 스토리지 가상화 시스템(2000B)에 포함된 가상 머신 모니터(300), 제어 가상 머신(CVM; 400), 복수의 가상 머신들(VM1 ~ VMj; 410-1 ~ 410-j) 및 스토리지 디바이스(200A)는 도 3에 도시된 스토리지 가상화 시스템(2000A)에 포함된 가상 머신 모니터(300), 제어 가상 머신(400), 복수의 가상 머신들(VM1 ~ VMj; 410-1 ~ 410-j) 및 스토리지 디바이스(200A)와 실질적으로 동일하므로, 중복적인 설명은 피하기로 한다.
스토리지 가상화 시스템(2000B)에는 SR-IOV(130B-1) 기능이 탑재된 I/O 어댑터(130B)가 적용된다. 도 2에서 설명한 바와 같이, SR-IOV(130B-1) 기능이 탑재된 I/O 어댑터(130B)가 적용되는 스토리지 가상화 시스템(2000B)에서는 가상 머신 모니터(300)를 통하지 않고 제어 가상 머신(400) 및 가상 머신들(410-1 ~ 410-j)과 스토리지 디바이스(200A)의 가상 디바이스들(201 ~ 203)을 직접 연결시킬 수 있다. 즉, 가상 머신 모니터(300)를 통하지 않고 호스트의 제어 가상 머신(400) 및 가상 머신들(410-1 ~ 410-j)과 스토리지 디바이스(200A)의 물리 기능 디바이스(201) 및 가상 기능 디바이스들(202 ~ 203)을 직접 연결시킬 수 있다.
도 5는 본 발명에 따른 스토리지 가상화 시스템에서의 액세스 제어 동작의 흐름을 예시적으로 보여준다.
예로서, 도 5는 도 4에 도시된 스토리지 가상화 시스템(2000B)에서의 액세스 제어 동작을 설명하기 위하여 주요 구성을 보여준다.
우선, 가상 기능 디바이스(VF1; 202)에 할당된 어드레스 영역 중에서 가상 블록 어드레스 V1은 "read-only(RO)"로 액세스 권한이 설정되고, 가상 블록 어드레스 V2는 "read/write(RW)"로 액세스 권한이 설정되는 것으로 가정하자. 같은 방식으로, 가상 기능 디바이스(VFj; 203)에 할당된 어드레스 영역 중에서 가상 블록 어드레스 V3은 "read-only(RO)"로 액세스 권한이 설정되고, 가상 블록 어드레스 V4는 "read/write(RW)"로 액세스 권한이 설정되는 것으로 가정하자.
위에서 언급된 "가상 어드레스(Virtual Address)"는 "가상 블록 어드레스(Virtual Logical Block Address)", "가상 논리 블록 어드레스(Virtual Logical Block Address)" 또는 "의사 논리 블록 어드레스(Pseudo Logical Block Address)"가 될 수 있다. 그리고, "논리 어드레스(Logical Address)"는 "논리 블록 어드레스(Logical Block Address)"가 될 수 있다.
"read-only(RO)"로 액세스 권한이 설정된 가상 블록 어드레스 V1 및 V3에서는 리드 동작만 허용되고 라이트 동작은 허용되지 않는다. "read/write(RW)"로 액세스 권한이 설정된 가상 블록 어드레스 V2 및 V4에서는 리드 동작 및 라이트 동작이 모두 허용된다.
예로서, 스토리지 디바이스(200A)에서 데이터가 실제 저장되는 물리적 레이아웃에서 저장 영역 L0는 "read-only(RO)"로 액세스 권한이 설정된 가상 어드레스 영역들에 대응되는 논리 어드레스 영역들을 나타낸다. LO 이외의 나머지 저장 영역은 "read/write(RW)"로 액세스 권한이 설정된 가상 어드레스 영역들에 대응되는 논리 어드레스 영역을 나타낸다. 따라서, 논리 블록 어드레스 L1 및 L2는 "read-only(RO)"로 액세스 권한이 설정된 가상 어드레스 영역들에 대응되는 논리 어드레스 영역을 나타내고, 논리 블록 어드레스 L3 및 L4는 "read/write(RW)"로 액세스 권한이 설정된 가상 어드레스 영역들에 대응되는 논리 어드레스 영역을 나타낸다.
도 5를 참조하면, 가상 기능 디바이스(VF1; 202)에 대한 가상 기능 메타 데이터(VF1 MD; 202-2)의 가상 디바이스 매핑 테이블 정보에서 매핑 정보 M1 및 M2는 가상 블록 어드레스 V1 및 V3에 각각 논리 블록 어드레스 L1이 매핑되는 것을 보여준다. 그리고, 매핑 정보 M3 및 M4는 가상 블록 어드레스 V2 및 V4에 각각 논리 블록 어드레스 L2가 매핑되는 것을 보여준다.
만일, 카피-온- 라이트 옵션이 설정된 상태에서 "read-only(RO)"로 액세스 권한이 설정된 논리 블록 어드레스에 대한 라이트 요청이 발생되는 경우에, 신규 블록을 할당하고 신규 블록에 대응되는 저장 영역에 데이터를 복사한 후에 신규 블록을 매핑 테이블에 추가한다.
예로서, 가상 기능 디바이스(VF1; 202)로 논리 블록 어드레스 L2에 대응되는 가상 블록 어드레스 V2에 라이트 요청이 수신되는 경우에, 카피-온- 라이트 옵션이 설정되어 있으면 다음과 같이 동작한다.
논리 블록 어드레스 L2는 "read-only(RO)"로 액세스 권한이 설정되어 있으므로, 논리 블록 어드레스 L2에서는 라이트 동작을 할 수 없다. 따라서, "read-only(RO)"로 액세스 권한이 설정된 가상 어드레스 영역(LO) 이외의 새로운 논리 블록 어드레스 L3을 할당한다. 그리고, 논리 블록 어드레스 L2에 저장된 데이터를 논리 블록 어드레스 L3에 복사한 후에 논리 블록 어드레스 L3을 매핑 테이블에 추가한다. 즉, 가상 블록 어드레스 V2에 논리 블록 어드레스 L2가 매핑되는 매핑 정보 M3를 가상 블록 어드레스 V2에 논리 블록 어드레스 L3가 매핑되는 매핑 정보 M3'로 변경한다.
같은 방식으로, 가상 기능 디바이스(VFj; 203)로 논리 블록 어드레스 L2에 대응되는 가상 블록 어드레스 V4에 라이트 요청이 수신되는 경우에, 카피-온- 라이트 옵션이 설정되어 있으면 다음과 같이 동작한다.
논리 블록 어드레스 L2는 "read-only(RO)"로 액세스 권한이 설정되어 있으므로, 논리 블록 어드레스 L2에서는 라이트 동작을 할 수 없다. 따라서, "read-only(RO)"로 액세스 권한이 설정된 가상 어드레스 영역(LO) 이외의 새로운 논리 블록 어드레스 L4를 할당한다. 그리고, 논리 블록 어드레스 L2에 저장된 데이터를 논리 블록 어드레스 L4에 복사한 후에 논리 블록 어드레스 L4를 매핑 테이블에 추가한다. 즉, 가상 블록 어드레스 V4에 논리 블록 어드레스 L2가 매핑되는 매핑 정보 M4를 가상 블록 어드레스 V4에 논리 블록 어드레스 L4가 매핑되는 매핑 정보 M4'로 변경한다.
도 6은 본 발명에 따른 스토리지 가상화 시스템에서의 액세스 제어 동작에 따른 매핑 테이블 변경 동작을 예시적으로 보여준다.
도 6은 도 5와 같이 액세스 권한이 설정된 경우의 액세스 제어 동작에 따라서 매핑 테이블이 변경되는 과정을 보여준다.
도 6을 참조하면, 가상 논리 블록 어드레스 V2 및 V4에 대한 라이트 요청이 발생되기 전의 가상 기능 디바이스 VF1 및 VFj에 대한 가상 논리 블록 어드레스(Virtual LBA), 논리 블록 어드레스(LBA), 물리 블록 어드레스(PBA)의 매핑 정보는 다음과 같다.
가상 논리 블록 어드레스 V1, V2, V3 및 V4에 대한 매핑 정보는 (V1, L1, P2), (V2, L2, P1), (V3, L1, P2), (V4, L2, P1)가 된다. 다른 예로서, 매핑 정보는 가상 논리 블록 어드레스(Virtual LBA)와 논리 블록 어드레스(LBA)에 대한 하나의 매핑 테이블 정보와, 논리 블록 어드레스(LBA)와 물리 블록 어드레스(PBA)의 매핑에 대한 다른 하나의 매핑 테이블 정보로 분리할 수도 있다.
이와 같이 매핑 정보가 설정되어 있는 상태에서 가상 논리 블록 어드레스 V2에 대한 라이트 요청이 발생되면, 가상 논리 블록 어드레스 V2에 할당된 논리 블록 어드레스 L2에 "read-only(RO)"로 액세스 권한이 설정되어 있으므로 논리 블록 어드레스 L2에서는 라이트 동작이 허용되지 않는다.
이에 따라서, 가상 기능 디바이스 VF1은 리드/라이트 액세스 권한이 설정된 새로운 논리 블록 어드레스 L3와 물리 블록 어드레스 P3를 할당한 후에, 물리 블록 어드레스 P1에 저장된 데이터를 물리 블록 어드레스 P3에 복사한다. 그리고 나서, 매핑 정보 (V2, L2, P1)를 (V2, L3, P3)로 변경한다.
다음으로, 가상 논리 블록 어드레스 V4에 대한 라이트 요청이 발생되면, 가상 논리 블록 어드레스 V4에 할당된 논리 블록 어드레스 L2에 "read-only(RO)"로 액세스 권한이 설정되어 있으므로 논리 블록 어드레스 L2에서는 라이트 동작이 허용되지 않는다.
이에 따라서, 가상 기능 디바이스 VFj는 리드/라이트 액세스 권한이 설정된 새로운 논리 블록 어드레스 L4와 물리 블록 어드레스 P4를 할당한 후에, 물리 블록 어드레스 P1에 저장된 데이터를 물리 블록 어드레스 P4에 복사한다. 그리고 나서, 매핑 정보 (V4, L2, P1)를 (V4, L4, P4)로 변경한다.
이와 같은 카피-온- 라이트 기능을 이용하여 가상 머신들 간에 공유하는 메모리 디바이스의 저장 영역 중에서 업데이트(update)가 실제 발생되는 부분 영역에 대해서만 데이터 복사(copy)를 수행함으로써, 메모리 디바이스의 성능 향상 및 수명을 연장시킬 수 있는 효과가 발생된다. 즉, 가상화 시스템에서의 불필요한 데이터 쓰기/복사를 줄일 수 있게 된다. 또한, 액세스 제어 정보가 호스트에 저장되지 않고 스토리지 디바이스에 저장되어 있으므로, 바이러스를 통한 변경에 취약하지 않게 된다.
도 7은 본 발명의 실시 예에 따른 스토리지 디바이스의 블록 구성도이다.
예로서, 도 7에 도시된 스토리지 디바이스(200B)로 도 1 및 도 2의 컴퓨팅 시스템(1000A)의 스토리지 디바이스(200) 또는 도 3 및 도 4의 스토리지 가상화 시스템의 스토리지 디바이스(200A)를 구현할 수 있다.
도 7을 참조하면, 스토리지 디바이스(200B)는 메모리 컨트롤러(210) 및 메모리 장치(220B)를 포함한다. 예로서, 스토리지 디바이스(200B)는 솔리드 스테이트 드라이브(SSD)로 구현될 수 있다.
메모리 컨트롤러(210)는 호스트로부터 수신되는 명령에 기초하여 메모리 장치(220B)에 대한 제어 동작을 수행할 수 있다. 구체적으로, 메모리 컨트롤러(210)는 복수의 채널들(CH1 ~CHM)을 통하여 어드레스, 커맨드 및 제어 신호를 제공함으로써, 메모리 장치(220B)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어할 수 있다.
메모리 컨트롤러(210)에는 디바이스 가상화 소프트웨어(DV SW; 210-1), 액세스 제어 소프트웨어(AC SW; 210-2) 및 가상 디바이스 매핑 테이블 정보(VD MT; 210-3)가 저장되어 있다.
메모리 컨트롤러(210)의 디바이스 가상화 소프트웨어(DV SW; 210-1)를 구동시켜서 하나의 물리적 스토리지 디바이스를 복수개의 가상 스토리지 디바이스로 설정하는 동작을 수행할 수 있다. 세부적으로, 메모리 컨트롤러(210)는 하나의 물리적 스토리지 디바이스를 복수개의 가상 디바이스들로 인식하도록 가상 디바이스들 각각에 대한 식별 디바이스(ID) 정보를 생성시키는 동작을 수행할 수 있다.
예로서, 메모리 컨트롤러(210)는 메모리 장치(220B)의 저장 영역을 초기 설정된 복수 개로 분할하고, 분할된 저장 영역 각각에 대응되는 가상 디바이스에 대한 고유의 식별 디바이스(ID) 정보를 생성할 수 있다. 그리고, 메모리 컨트롤러(210)는 저장 영역별로 생성된 복수개의 식별 디바이스(ID) 정보를 메모리 장치(220B)에 쓰기 위한 어드레스, 커맨드 및 제어 신호를 생성한다. 또한, 메모리 컨트롤러(210)는 가상 디바이스 별 저장 용량 및 물리적 어드레스 영역에 대한 정보를 메모리 장치(220B)에 쓰기 위한 어드레스, 커맨드 및 제어 신호를 생성한다.
예로서, 메모리 컨트롤러(210)는 초기 설정된 디바이스 가상화 명령에 기초하여 하나의 물리적 스토리지 디바이스를 복수개의 가상 디바이스로 인식되도록 복수개의 식별 디바이스 정보를 생성할 수 있다. 그리고, 메모리 컨트롤러(210)는 이와 같이 생성된 복수개의 식별 디바이스 정보를 메모리 장치(220B)에 쓰는 동작을 수행하도록 제어할 수 있다.
예로서, 디바이스 가상화 명령은 스토리지 디바이스 제조 공정에서 생산자 관리 툴을 통하여 메모리 컨트롤러(210)에 제공될 수 있다. 다른 예로서, 사용자 조건에서 스토리지 디바이스를 호스트에 접속한 상태에서 호스트를 통하여 디바이스 가상화 명령을 메모리 컨트롤러(210)에 제공할 수 있다.
예로서, 식별 디바이스 정보는 SATA(Serial Advanced Technology Attachment) 표준에 기초하여 모델명(Model Name), 펌웨어 리비전(Firmware Revision), 시리얼 번호(Serial Number), 월드 와이드 네임(World Wide Name; WWN), 물리적 논리적 섹터 사이즈(Physical Logical Sector Size), 기능(Feature) 등에 대한 정보를 포함할 수 있다.
하나의 물리적 스토리지 디바이스에 대응되는 복수개의 가상 디바이스에 대한 복수개의 식별 디바이스 데이터 각각에 포함되는 정보들 중에서 적어도 시리얼 번호 및 월드 와이드 네임 정보는 다르게 설정될 수 있다.
예로서, 하나의 물리적 스토리지 디바이스를 N(N은 2 이상의 정수)개의 가상 디바이스로 분할한 경우에, 각 가상 디바이스의 저장 용량은 물리적 스토리지 디바이스의 최대 논리 블록 어드레스(Max LBA)를 N으로 나눈 용량으로 설정될 수 있다.
다른 예로서, 가상 디바이스의 용량은 실제 가상 디바이스에 할당된 저장 공간보다 크게 설정할 수 있다. 이는 실제 라이트가 발생되는 블록만을 라이트가 발생하는 시점에 할당하는 방식이다. 이를 통해서, 스토리지 디바이스가 제공하는 모든 가상 디바이스들의 용량 합계는 실제 스토리지 디바이스의 물리적인 저장 용량보다 클 수 있다. 가상 디바이스의 어드레스 공간은 가상 디바이스의 용량만큼이며, 이는 가상 디바이스들마다 다른 값으로 설정될 수 있다. 가상 디바이스의 블록의 크기는 논리 디바이스의 블록의 크기와 같을 필요는 없으나, 그 보다 작지 않아야 한다. 즉, 가상 논리 블록 어드레스의 사이즈는 논리 블록 어드레스의 사이즈보다 같거나 크게 설정한다.
메모리 컨트롤러(210) 스토리지 디바이스(200B)를 가상화하는 과정에서 가상 블록에 대해서 리드/라이트 액세스 권한을 설정할 수 있다. 리드(read)만 허용하는 블록의 경우에는 카피-온-라이트(copy-on-write) 옵션을 설정할 수 있다. 라이트만 허용하는 블록도 설정할 수 있다. 이와 같은 액세스 권한에 대한 설정 정보는 가상 디바이스 매핑 테이블 정보에 포함될 수 있다.
이와 같이, 복수개의 식별 디바이스 데이터를 설정한 후에 호스트로부터 메모리 컨트롤러(210)로 식별 디바이스 명령이 수신되면, 메모리 컨트롤러(210)는 식별 디바이스 정보를 호스트로 전송한다. 세부적으로, 메모리 컨트롤러(210)는 메모리 장치(220B)로부터 복수개의 식별 디바이스 정보를 읽어내고, 읽어낸 복수개의 식별 디바이스 데이터를 호스트로 전송할 수 있다.
메모리 컨트롤러(210)는 액세스 제어 소프트웨어(AC SW; 210-2) 및 가상 디바이스 매핑 테이블 정보(VD MT; 210-3)를 이용하여 도 5 및 도 6에서 설명한 바와 같은 액세스 제어 동작을 수행할 수 있다.
메모리 장치(220B)는 하나 이상의 비휘발성 메모리 칩(NVM; 220-1)로 구성될 수 있다. 예로서, 메모리 장치(220B)에 적용되는 비휘발성 메모리 칩(220-1)은 플래시 메모리 칩뿐만 아니라 PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 칩 등으로 구성될 수 있다. 다른 예로서, 메모리 장치(220B)는 적어도 하나 이상의 비휘발성 메모리 칩(들)와 적어도 하나 이상의 휘발성 메모리 칩(들)가 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 칩들이 혼합된 형태로 구성될 수도 있다.
도 8는 도 7에 도시된 메모리 컨트롤러(210)의 세부 구성을 예시적으로 보여준다.
도 8에 도시된 바와 같이, 메모리 컨트롤러(210)는 프로세서(211), RAM(Random Access Memory; 212), 호스트 인터페이스(213), 메모리 인터페이스(214) 및 버스(215)를 구비한다.
메모리 컨트롤러(210)의 구성요소들은 버스(215)를 통하여 전기적으로 연결된다.
프로세서(211)는 RAM(212)에 저장된 프로그램 코드 및 데이터들을 이용하여 스토리지 디바이스(200B)의 동작을 전반적으로 제어할 수 있다. 스토리지 디바이스(200B)가 초기화될 때 프로세서(211)는 메모리 장치(220B)로부터 스토리지 디바이스(200B)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(212)에 로딩시킬 수 있다.
예로서, 프로세서(211)는 메모리 장치(220B)로부터 디바이스 가상화 소프트웨어(DV SW; 210-1), 액세스 제어 소프트웨어(AC SW; 210-2) 및 가상 디바이스 매핑 테이블 정보(VD MT; 210-3)를 읽어내어 RAM(212)에 로딩시킬 수 있다.
예로서, 프로세서(211)에서 디바이스 가상화 소프트웨어(DV SW; 210-1)를 실행시키기 전에는 단일의 식별 디바이스 정보가 RAM(212)에 로딩된다. 만일, 프로세서(211)에서 디바이스 가상화 소프트웨어(DV SW; 210-1)를 실행시킨 후에는 복수개의 식별 디바이스 정보가 RAM(212)에 로딩된다.
프로세서(211)는 호스트 인터페이스(213)를 통하여 디바이스 가상화 명령을 수신하면, 하나의 물리적 스토리지 디바이스를 복수개의 가상 디바이스로 설정하는 동작을 수행한다. 이에 따라서, 프로세서(211)는 하나의 물리적 스토리지 디바이스에 대하여 복수개의 식별 디바이스 정보를 설정하는 동작을 수행할 수 있다.
예로서, 프로세서(211)는 식별 디바이스 명령을 수신하면, RAM(212)으로부터 복수개의 식별 디바이스 정보를 읽어내어 호스트 인터페이스(213)를 통하여 호스트로 전송하는 동작을 수행한다.
RAM(212)에는 호스트 인터페이스(213)를 통하여 수신되는 데이터 또는 메모리 인터페이스(214)를 통하여 메모리 장치(220B)로부터 수신되는 데이터가 저장된다. 또한, 프로세서(211)에서 처리된 데이터가 저장될 수도 있다. 예로서, RAM(212)에는 디바이스 가상화 명령에 의하여 설정된 복수개의 식별 디바이스 정보가 저장될 수 있다.
호스트 인터페이스(213)는 메모리 컨트롤러(210)에 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 컨트롤러(210)와 호스트 사이의 인터페이스를 수행한다. 호스트 인터페이스(213)는 예로서 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), PCI(Peripheral Component Interconnect) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, eMMC(embedded Multi Media Card) 인터페이스, UFS(Universal Flash Storage) 인터페이스 등으로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 호스트 인터페이스(213)는 프로세서(211)의 제어에 따라서 호스트 장치로부터 커맨드, 어드레스 및 데이터를 수신하거나, 호스트로 데이터를 전송할 수 있다.
메모리 인터페이스(214)는 메모리 장치(220B)와 전기적으로 연결되어 있다. 메모리 인터페이스(214)는 프로세서(211)의 제어에 따라서 메모리 장치(220B)로 커맨드, 어드레스 및 데이터를 전송하거나, 메모리 장치(220B)로부터 데이터를 수신할 수 있다. 메모리 인터페이스(214)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(214)는 복수 개의 채널들을 통하여 소프트웨어 또는 하드웨어 인터리브 동작들이 수행되도록 구성될 수도 있다.
도 9는 도 7에 도시된 메모리 장치(220B)를 구성하는 비휘발성 메모리 칩(220-1)의 세부 구성을 예시적으로 보여준다. 예로서, 비휘발성 메모리 칩(220-1)은 플래시 메모리 칩이 될 수 있다.
도 9를 참조하면, 비휘발성 메모리 칩(220-1)은 메모리 셀 어레이(11), 제어 로직(control logic; 12), 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)를 포함할 수 있다. 이하에서는, 비휘발성 메모리 칩(220-1)에 포함된 구성 요소들에 대하여 상술하기로 한다.
메모리 셀 어레이(11)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 하나 이상의 접지 선택 라인(GSL)에 연결될 수 있으며, 또한 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(11)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(도 11의 MC)을 포함할 수 있다.
메모리 셀 어레이(11)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(11)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압에 따라 구분되는 소거 상태 및 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있다.
여기서, n은 2 이상의 자연수일 수 있다. 예를 들어, 메모리 셀(MC)이 2 비트 레벨 셀인 경우 n은 3일 수 있다. 다른 예에서, 메모리 셀(MC)이 3 비트 레벨 셀인 경우 n은 7일 수 있다. 또 다른 예에서, 메모리 셀(MC)이 4 비트 레벨 셀인 경우 n은 15일 수 있다. 이와 같이, 복수의 메모리 셀들(MC)은 멀티 레벨 셀들을 포함할 수 있다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않고, 복수의 메모리 셀들(MC)은 싱글 레벨 셀들을 포함할 수도 있다.
제어 로직(12)은 메모리 컨트롤러(210)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(11)에 데이터를 기입하거나 메모리 셀 어레이(11)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이로써, 제어 로직(12)은 비휘발성 메모리 칩(220-1) 내의 각종 동작을 전반적으로 제어할 수 있다.
제어 로직(12)에서 출력된 각종 제어 신호는 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)에 제공될 수 있다. 구체적으로, 제어 로직(12)은 전압 생성부(13)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(14)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼(15)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다.
전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(11)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(13)는 복수의 워드 라인들(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 라운드 선택 라인들(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다.
이때, 제1 구동 전압(VWL)은 프로그램 전압(또는 기입 전압), 독출 전압, 소거 전압, 패스 전압 또는 프로그램 검증 전압일 수 있다. 또한, 제2 구동 전압(VSSL)은 스트링 선택 전압, 즉, 온(on) 전압 또는 오프(off) 전압일 수 있다. 나아가, 제3 구동 전압(VGSL)은 그라운드 선택 전압, 즉, 온 전압 또는 오프 전압일 수 있다.
로우 디코더(14)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(11)에 연결되고, 제어 로직(12)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(14)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
한편, 프로그램 동작 시에 로우 디코더(14)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 본 실시예에서, 프로그램 루프들 중 적어도 하나에서 로우 디코더(14)는 선택된 워드 라인 및 추가 선택된 워드 라인에 프로그램 전압을 인가할 수 있다.
페이지 버퍼(15)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(11)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(15)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(11)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(15)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(11)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다.
도 10은 도 9에 도시된 메모리 셀 어레이(11)의 일 예를 나타낸다.
도 10을 참조하면, 메모리 셀 어레이(11)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(11)는 a(a는 2 이상의 정수)개의 메모리 블록들(BLK1 내지 BLKa)을 포함하고, 각 메모리 블록(BLK1 내지 BLKa)은 b(b는 2이상의 정수)개의 페이지들(PAGE1 내지 PAGEb)을 포함하며, 각 페이지들(PAGE1 내지 PAGEb)은 c(c는 2 이상의 정수)개의 섹터들(SEC1 내지 SECc)을 포함할 수 있다. 도 15에서는 도시의 편의를 위해, 메모리 블록 BLK1에 대하여만 페이지들(PAGE0 내지 PAGEb) 및 섹터들(SEC1 내지 SECc)을 도시하였으나, 다른 메모리 블록들(BLK2 내지 BLKa)도 블록 BLK1과 동일한 구조를 가질 수 있다.
도 11은 도 9에 도시된 메모리 셀 어레이(11)에 포함된 제1메모리 블록의 일 예(BLK1a)를 나타내는 회로도이다.
도 11을 참조하면, 제1 메모리 블록(BLK1a)은 수직 구조의 낸드 플래시 메모리일 수 있다. 도 11에서, 제1 방향은 x 방향으로, 제2 방향은 y 방향으로, 제3 방향은 z 방향으로 지칭하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 제1 내지 제3 방향은 변경될 수도 있다.
제1 메모리 블록(BLK1a)은 복수의 셀 스트링들(CST), 복수의 워드 라인들(WL), 복수의 비트 라인들(BL), 복수의 그라운드 선택 라인들(GSL1, GSL2), 복수의 스트링 선택 라인들(SSL1, SSL2) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 셀 스트링들(CST)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수, 그라운드 선택 라인들(GSL1, GSL2)의 개수 및 스트링 선택 라인들(SSL1, SSL2)의 개수는 실시 예에 따라 다양하게 변경될 수 있다.
셀 스트링(CST)은 대응되는 비트 라인(BL)과 공통 소스 라인(CSL) 사이에 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시 예에서, 셀 스트링(CST)은 적어도 하나의 더미 셀을 더 포함할 수 있다. 또 다른 실시 예에서, 셀 스트링(CST)은 적어도 두 개의 스트링 선택 트랜지스터들 또는 적어도 두 개의 그라운드 선택 트랜지스터들을 포함할 수도 있다.
또한, 셀 스트링(CST)은 제3 방향(z 방향)으로 신장될 수 있는데, 구체적으로, 기판 상에 수직 방향(z 방향)으로 신장될 수 있다. 따라서, 셀 스트링(CST)을 포함하는 메모리 블록(BLK1a)을 수직 방향의 낸드 플래시 메모리라고 지칭할 수 있다. 이와 같이, 셀 스트링(CST)을 기판 상에 수직 방향(z)으로 신장시킴으로써, 메모리 셀 어레이(11)의 집적도를 향상시킬 수 있다.
복수의 워드 라인들(WL)은 제1 방향(x) 및 제2 방향(y)으로 연장되고, 각 워드 라인(WL)은 대응되는 메모리 셀들(MC)과 연결될 수 있다. 이에 따라, 동일 층에서 제1 방향(x) 및 제2 방향(y)을 따라 이웃하게 배열된 복수의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결될 수 있다. 구체적으로, 각 워드 라인(WL)은 메모리 셀(MC)의 게이트에 연결되어 메모리 셀(MC)을 제어할 수 있다. 이때, 복수의 메모리 셀들(MC)은 데이터를 저장할 수 있으며, 연결된 워드 라인(WL)의 제어에 따라 프로그램, 독출 또는 소거될 수 있다.
복수의 비트 라인들(BL)은 제1 방향(x)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제1 방향(x)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 비트 라인(BL)에 연결될 수 있다. 구체적으로, 각 비트 라인(BL)은 스트링 선택 트랜지스터(SST)의 드레인에 연결될 수 있다.
복수의 스트링 선택 라인들(SSL1, SSL2)은 제2 방향(y)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 연결될 수 있다. 구체적으로, 각 스트링 선택 라인(SSL1 또는 SSL2)은 스트링 선택 트랜지스터(SST)의 게이트에 연결되어 스트링 선택 트랜지스터(SST)를 제어할 수 있다.
복수의 그라운드 선택 라인들(GSL1, GSL2)은 제2 방향(y)으로 연장되고, 그라운드 선택 트랜지스터(GST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 그라운드 선택 트랜지스터들(GST)은 동일한 그라운드 선택 라인(GSL1 또는 GSL2)에 연결될 수 있다. 구체적으로, 각 그라운드 선택 라인(GSL1 또는 GSL2)은 그라운드 선택 트랜지스터(GST)의 게이트에 연결되어 그라운드 선택 트랜지스터(GST)를 제어할 수 있다.
또한, 각 셀 스트링(CST)에 포함된 그라운드 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 구체적으로, 공통 소스 라인(CSL)은 그라운드 선택 트랜지스터(GST)의 소스에 연결될 수 있다.
여기서, 동일한 워드 라인(WL) 및 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 공통으로 연결되고, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 페이지(PAGE)라고 지칭할 수 있다. 예를 들어, 제1 워드 라인(WL1)에 공통으로 연결되고, 제1 스트링 선택 라인(SSL1)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제1 페이지(PAGE1)라고 지칭할 수 있다. 또한, 제1 워드 라인(WL1)에 공통으로 연결되고, 제2 스트링 선택 라인(SSL2)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제2 페이지(PAGE2)라고 지칭할 수 있다.
메모리 셀(MC)에 대한 프로그램 동작을 수행하기 위해서는, 비트 라인(BL)에 0V를 인가하고, 스트링 선택 라인(SSL)에 온(on) 전압을 인가하고, 그라운드 선택 라인(GSL)에 오프(off) 전압을 인가할 수 있다. 온 전압은 스트링 선택 트랜지스터(SST)를 턴-온(turn-on) 시키도록 그 문턱 전압보다 크거나 같을 수 있고, 오프 전압은 그라운드 선택 트랜지스터들(GST)을 턴-오프(turn-off) 시키도록 그 문턱 전압보다 작을 수 있다. 또한, 메모리 셀들(MC) 중 선택 메모리 셀에는 프로그램 전압을 인가하고, 나머지 메모리 셀들에는 패스 전압을 인가할 수 있다. 프로그램 전압이 인가되면, F-N 터널링에 의해 메모리 셀들(MC) 내로 전하가 주입될 수 있다. 패스 전압은 메모리 셀들(MC)의 문턱 전압보다 클 수 있다.
메모리 셀(MC)에 대한 소거 동작을 수행하기 위해서는, 메모리 셀들(MC)의 바디(body)에 소거 전압을 인가하고, 워드 라인들(WL)에 0V를 인가할 수 있다. 이에 따라, 메모리 셀들(MC)의 데이터가 일시에 소거될 수 있다.
도 12는 본 발명의 실시 예에 따른 스토리지 가상화 시스템에서의 호스트와 디바이스 사이의 OOB 시퀀스 및 디바이스 인식 과정을 개략적으로 보여주는 도면이다.
예로서, 호스트(2100)는 도 1 또는 도 2에 도시된 호스트(100A 또는 100B)가 될 수 있고, 디바이스(2200)는 도 1 또는 도 2에 도시된 스토리지 디바이스(200)이 될 수 있다.
우선, SATA(Serial Advanced Technology Attachment) 표준에 따른 OOB 시퀀스에 따른 초기화 과정을 설명하기로 한다.
호스트(2100)는 아날로그 신호인 COMRESET 신호를 디바이스(2200)로 전송한다(S1). 디바이스(2200)는 COMRESET 신호의 수신을 확인한 후에 아날로그 신호인 COMINIT 신호를 호스트(2100)로 전송한다(S2). 호스트(2100)는 COMRESET 신호의 수신을 확인한 후에 아날로그 신호인 COMWAKE 신호를 디바이스(2200)로 전송한다(S3). 디바이스(2200)는 COMWAKE 신호의 수신을 확인한 후에 아날로그 신호인 COMWAKE 신호를 호스트(2100)로 전송한다(S4). 그리고 나서, 호스트(2100)와 디바이스(2200)는 얼라인 프리미티 신호(ALIGN)를 주고 받으면서 통신 속도를 맞춘다(S5, S6). 이와 같은 동작에 의하여 초기화 과정을 마친다.
다음으로, 초기화 과정을 마친 후에 수행되는 디바이스 인식 과정에 대하여 설명하기로 한다.
호스트(2100)는 식별 디바이스 명령(ID CMD)을 디바이스(2200)로 전송한다(S7).
디바이스(2200)는 식별 디바이스 명령(ID CMD)을 수신하면, 디바이스(2200)에 설정된 식별 디바이스 정보(ID DATA)를 호스트(2100)로 전송한다(S8). 만일, 디바이스(2200)가 디바이스 가상화 처리된 경우에는 디바이스(2200)는 가상 디바이스들에 대한 복수개의 식별 디바이스 정보를 호스트(2100)로 전송한다. 이에 따라서, 호스트(2100)는 하나의 물리적 디바이스(2200)를 복수개의 가상 디바이스들로 인식하게 된다.
다음으로, 본 발명의 실시 예에 따른 컴퓨팅 시스템에서의 디바이스 가상화 처리 방법 및 스토리지 가상화 시스템에서의 디바이스 인식 방법을 설명하기로 한다.
본 발명의 실시 예에 따른 방법들이 도시된 도 13 및 도 14의 흐름도들은 도 7의 메모리 컨트롤러(210)에 의하여 수행될 수 있다. 세부적으로, 도 8에 도시된 메모리 컨트롤러(210)의 프로세서(211)의 제어에 의하여 수행될 수 있다.
도 13은 본 발명의 실시 예에 따른 스토리지 디바이스에서의 디바이스 가상화 처리 방법의 흐름도이다.
스토리지 디바이스의 메모리 컨트롤러(210)는 디바이스 가상화 명령이 수신되는지를 판단한다(S110). 예로서, 디바이스 가상화 명령은 도 1 및 도 2에 도시된 호스트(100A 또는 100B)로부터 수신될 수 있다. 다른 예로서, 디바이스 가상화 명령은 제조 공정에서 생산자 관리 툴을 통하여 수신될 수도 있다.
디바이스 가상화 명령이 수신되면, 스토리지 디바이스의 메모리 컨트롤러(210)는 하나의 물리적 스토리지 디바이스가 복수개의 스토리지 디바이스로 인식되도록 복수개의 식별 디바이스(ID) 정보를 생성한다(S120).
예로서, 메모리 컨트롤러(210)는 저장 영역을 분할하고, 각 저장 영역별로 상이한 식별 디바이스 정보를 생성한다. 다른 예로서, 가상 디바이스의 용량은 실제 가상 디바이스에 할당된 저장 공간보다 크게 설정할 수 있다. 이는 실제 라이트가 발생되는 블록만을 라이트가 발생하는 시점에 할당하는 방식이다. 이를 통해서, 스토리지 디바이스가 제공하는 모든 가상 디바이스들의 용량 합계는 실제 스토리지 디바이스의 물리적인 저장 용량보다 클 수 있다. 가상 디바이스의 어드레스 공간은 가상 디바이스의 용량만큼이며, 이는 가상 디바이스들마다 다른 값으로 설정될 수 있다.
예로서, 메모리 컨트롤러(210)는 디바이스 가상화 명령에서 지시하는 개수로 저장 영역을 분할하고, 각 저장 영역별로 상이한 식별 디바이스 정보를 생성할 수 있다. 다른 예로서, 메모리 컨트롤러(210)는 디폴트 값으로 설정된 개수로 저장 영역을 분할하고, 각 저장 영역별로 상이한 식별 디바이스 정보를 생성할 수도 있다.
예로서, 메모리 컨트롤러(210) 가상 디바이스에 할당되는 가상 블록에 대해서 리드/라이트 액세스 권한을 설정할 수 있다. 리드(read)만 허용하는 블록의 경우에는 카피-온-라이트(copy-on-write) 옵션을 설정할 수 있다. 라이트만 허용하는 블록도 설정할 수 있다. 예로서, 가상 디바이스에 할당되는 가상 블록에 대해서 리드/라이트 액세스 권한 정보도 저장 영역 정보에 포함될 수 있다.
다음으로, 메모리 컨트롤러(210)는 분할된 저장 영역 정보 및 복수의 식별 디바이스 정보를 메모리 장치(220B)에 저장하는 동작을 수행한다(S130).
도 14는 본 발명의 실시 예에 따른 스토리지 디바이스에서의 디바이스 인식 명령을 처리하는 방법의 흐름도이다.
스토리지 디바이스의 메모리 컨트롤러(210)는 식별 디바이스 명령(ID CMD)가 수신되는지를 판단한다(S210). 예로서, 식별 디바이스 명령(ID CMD)는 도 1 및 도 2에 도시된 호스트(100A 또는 100B)로부터 수신될 수 있다.
식별 디바이스 명령(ID CMD)이 수신되면, 스토리지 디바이스의 메모리 컨트롤러(210)는 메모리 장치(220B)로부터 읽어낸 가상 디바이스에 대한 식별 디바이스(ID) 정보를 호스트로 전송한다(S220). 여기에서, 가상 디바이스에 대한 식별 디바이스(ID) 정보는 도 13의 디바이스 가상화 처리에 의하여 생성된 하나의 물리적 스토리지 디바이스에서 파생되는 가상 디바이스들에 각각에 대한 식별 디바이스 정보이다.
도 15는 본 발명의 실시 예에 따른 스토리지 가상화 시스템에서의 초기화 및 디바이스 인식 과정을 보여주는 흐름도이다.
예로서, 도 15의 흐름도는 도 1 또는 도 2의 컴퓨팅 시스템(1000A 또는 1000B)의 호스트(100A 또는 100B)에서 수행될 수 있다.
우선, 호스트(100A 또는 100B)는 호스트(100A 또는 100B)에 접속된 스토리지 디바이스(200)와 송수신 초기화 동작을 수행한다(S310). 예로서, 스토리지 디바이스가 호스트(100A 또는 100B)에 접속될 때, 호스트(100A 또는 100B)는 SATA 표준에 따른 OOB 시퀀스에 의해 송수신 초기화 동작을 수행할 수 있다. 세부적으로, 도 12에 도시된 오퍼레이션 S1 ~ S6에 기초하여 송수신 초기화 동작을 수행할 수 있다.
호스트(100A 또는 100B)는 송수신 초기 동작을 성공적으로 완료되었는지를 판단한다(S320). 예로서, 예로서, 도 21에 도시된 오퍼레이션 S1 ~ S6을 성공적으로 완료하였는지를 판단한다.
송수신 초기 동작을 성공적으로 완료된 것으로 판단되면, 호스트(100A 또는 100B) 는 식별 디바이스 명령(ID CMD)을 스토리지 디바이스로 전송한다(S330).
디바이스 가상화 처리되어 하나 이상의 식별 디바이스 정보가 설정된 스토리지 디바이스로부터 식별 디바이스 명령(ID CMD)에 기초하여 호스트(100A 또는 100B)는 가상 디바이스에 대한 식별 디바이스(ID) 정보를 수신한다(S340).
호스트(100A 또는 100B)는 수신된 식별 디바이스 정보에 기초하여 가상 디바이스들을 가상 머신들에 할당한다(S350).
도 16은 본 발명의 실시 예에 따른 스토리지 가상화 시스템에서의 가상화 처리 방법의 다른 예를 보여주는 흐름도이다.
예로서, 도 16의 흐름도는 도 3 또는 도 4의 스토리지 가상화 시스템(2000A 또는 2000B)에서 수행될 수 있다.
우선, 가상 머신 모니터(300) 또는 제어 가상 머신(400)으로부터 수신되는 가상화 요구에 따라서 스토리지 디바이스(200A)는 물리 기능 디바이스와 하나 이상의 가상 기능 디바이스를 생성한 후에 물리 기능 디바이스와 하나 이상의 가상 기능 디바이스 정보를 가상 머신 모니터(300) 또는 제어 가상 머신(400)에 제공한다(S410).
가상 머신 모니터(300) 또는 제어 가상 머신(400)는 스토리지 디바이스(200A)로부터 수신되는 가상 기능 디바이스 정보에 기초하여 가상 머신(VM)에 가상 기능 디바이스(VF)를 할당한다(S420).
그리고 나서, 가상 머신 모니터(300) 또는 제어 가상 머신(400)는 가상 기능 디바이스에 대한 액세스 제어 설정 동작을 수행한다(S430). 예로서, 스토리지 디바이스(200A)에 제공되는 인터페이스를 통하여 가상 머신 모니터(300) 또는 제어 가상 머신(400)는 가상 기능 디바이스에 대한 리소스 매핑 및 액세스 권한을 설정할 수 있다.
도 17은 본 발명의 실시 예에 따른 스토리지 가상화 시스템에서의 액세스 제어 방법을 예시적으로 보여주는 흐름도이다.
예로서, 도 17의 흐름도는 도 3 또는 도 4의 스토리지 가상화 시스템(2000A 또는 2000B)의 가상 기능 디바이스(VF1 또는 VFj)에서 수행될 수 있다.
가상 기능 디바이스(VF1 또는 VFj)는 가상 머신으로부터 라이트 요구(write request)가 수신되는 지를 판단한다(S510).
가상 머신으로부터 라이트 요구가 수신되는 경우에, 가상 기능 디바이스(VF1 또는 VFj)는 라이트 요구를 발생시킨 가상 머신이 액세스 권한이 있는지를 판단한다(S520). 예로서, 라이트 요구를 발생시킨 가상 머신의 식별 정보가 가상 기능 디바이스(VF1 또는 VFj)에 할당된 가상 머신의 식별 정보와 일치하는지를 판단한다.
오퍼레이션 S520의 판단 결과 액세스 권한이 없는 가상 머신으로부터의 라이트 요구가 수신된 경우에, 라이트 요구를 받은 가상 기능 디바이스(VF1 또는 VFj)는 에러 메시지를 가상 머신으로 전송한다(S530).
오퍼레이션 S520의 판단 결과 액세스 권한이 없는 가상 머신으로부터의 라이트 요구가 수신된 경우에, 라이트 요구를 받은 가상 기능 디바이스(VF1 또는 VFj)는 라이트 허가 없는 저장 영역에 대한 라이트 요구인지를 판단한다(S540). 예로서, "read-only(RO)"로 액세스 권한이 설정되어 있는 논리 블록 어드레스에 대한 라이트 요구인지를 판단한다.
오퍼레이션 S540의 판단 결과 라이트 허가 없는 저장 영역에 대한 라이트 요구인 경우에, 라이트 요구를 받은 가상 기능 디바이스(VF1 또는 VFj)는 새로운 물리 블록 어드레스(PBA) 및 논리 블록 어드레스(LBA)를 할당한 후에 복사하는 동작을 수행한다(S550). 즉, 가상 기능 디바이스(VF1 또는 VFj)는 라이트 요구를 받은 논리 블록 어드레스에 대응되는 물리 블록 어드레스에 저장된 데이터를 새로 할당된 물리 블록 어드레스에 복사하는 동작을 수행한다.
그리고 나서, 복사 동작에 따른 가상 기능 디바이스의 매핑 정보를 변경한다(S560). 즉, 도 6에서 설명한 바와 같이, 복사 동작 이전에 할당된 가상 기능 디바이스에 대한 매핑 정보를 복사 동작에 따라서 새로 할당된 물리 블록 어드레스 및 논리 블록 어드레스로 변경한다.
이와 같은 카피-온-라이트(copy-on-write) 동작을 마친 후에, 가상 기능 디바이스(VF1 또는 VFj)는 새로 할당된 물리 블록 어드레스 및 논리 블록 어드레스에서의 라이트 요구에 따른 라이트 동작을 수행한다(S570). 이에 따라서, 가상 머신들 간에 공유하는 저장 영역들 중에서 업데이트가 실제로 발생된 저장 영역에서만 데이터 카피가 이루어질 수 있다. 즉, 가상화 시스템에서의 불필요한 데이터 쓰기/복사를 줄일 수 있어서 성능 향상 및 수명을 증대시킬 수 있게 된다.
도 18은 본 발명의 실시 예에 따른 스토리지 디바이스가 적용되는 전자 장치(3000)의 예를 나타내는 도면이다.
도 18에 도시된 바와 같이, 전자 장치(3000)은 프로세서(3010), RAM(3020), 스토리지 장치(3040), 입출력 장치(3040) 및 버스(3050)를 포함한다.
도 18에는 도시되지 않았지만, 전자 장치(3000)는 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 전자 장치(3000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 모바일 기기, PDA(personal digital assistant) 및 카메라 등으로 구현될 수 있다.
버스(3050)는 전자 장치(3000)의 구성 수단들 간의 데이터, 커맨드, 어드레스 및 제어 신호들을 전송하는 전송로를 의미한다.
프로세서(3010)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 예로서, 프로세서(3010)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(3010)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(3050)를 통하여 RAM(3020), 스토리지 디바이스(3030) 및 입출력 장치(3040)와 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(3010)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(3020)에는 프로세서(3010)에서 생성된 프로세스 수행에 필요한 데이터들이 로딩된다. RAM(3020)은 메인 메모리로서 동작하고, DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)로 구현할 수 있다.
스토리지 디바이스(3030)는 메모리 컨트롤러(3031) 및 메모리 장치(3032)를 포함한다. 스토리지 디바이스(3030)는 도 7에 도시된 스토리지 디바이스(200B)가 적용될 수 있다. 즉, 메모리 컨트롤러(3031) 및 메모리 장치(3032)는 도 7에 도시된 메모리 컨트롤러(210) 및 메모리 장치(220B)가 적용될 수 있다.
입출력 장치(3040)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다.
프로세서(3010)는 입출력 장치(3040)를 통하여 입력되는 유저 명령에 대응하는 연산 또는 데이터 처리를 수행할 수 있다. 프로세서(3010)는 유저 명령에 대응하는 연산 또는 데이터 처리를 위하여 스토리지 디바이스(3030)로부터 데이터를 읽어내는 동작 또는 스토리지 장치(3030)에 데이터를 쓰는 동작을 수행하기 위한 요청을 스토리지 장치(3030)로 전송할 수 있다.
스토리지 디바이스(3030)는 프로세서(3010)로부터 전송된 요청에 따른 리드 오퍼레이션 또는 라이트 오퍼레이션을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000A, 1000B : 컴퓨팅 시스템 110, 211 : 프로세서
120 : 메모리 130A, 130B : I/O 어댑터
130B-1 : SR-IOV 140, 215, 3050 : 버스
200, 200A, 200B: 스토리지 디바이스
201 : 물리 기능 디바이스 202, 203 : 가상 기능 디바이스
210 : 메모리 컨트롤러 220, 220B : 메모리 장치
212 : RAM 213 : 호스트 인터페이스
214 : 메모리 인터페이스 300 : 가상 머신 모니터
400 : 제어 가상 모니터 410-1 ~ 410-j : 가상 머신
11 : 메모리 셀 어레이 12 : 제어 로직
13 : 전압 생성부 14 : 로우 디코더
15 : 페이지 버퍼
3000 : 전자 장치 3010 : 프로세서
3020 : RAM 3030 : 스토리지 디바이스
3031 : 메모리 컨트롤러 3032 : 메모리 장치
3040 : 입출력 장치

Claims (10)

  1. 스토리지 디바이스에 있어서,
    비휘발성 메모리 장치; 및
    물리 기능 디바이스 및 적어도 하나의 가상 기능 디바이스를 생성하는 메모리 컨트롤러;를 포함하고,
    상기 적어도 하나의 가상 기능 디바이스는, 호스트의 가상 머신에 할당되고,
    상기 메모리 컨트롤러는,
    액세스 요청에 응답하여 상기 적어도 하나의 가상 기능 디바이스의 가상 어드레스를 논리 어드레스로 변환하고,
    상기 메모리 컨트롤러는,
    상기 적어도 하나의 가상 기능 디바이스에 대응하는 액세스 권한을 설정하고,
    상기 물리 기능 디바이스는,
    상기 적어도 하나의 가상 기능 디바이스에 대응하는 액세스 제어 설정을 설정하고, 상기 액세스 제어 설정은 가상 어드레스 범위 정보, 논리 어드레스 범위 정보, 권한 정보 및 정책 정보에 기초하고,
    상기 적어도 하나의 가상 기능 디바이스는,
    리드-온리(read-only) 권한을 가지며 카피-온-라이트(copy-on-write) 정책이 설정된 논리 어드레스에 대한 기입 요청이 생성되면, 새로운 논리 어드레스를 할당하는 스토리지 디바이스.
  2. 제1항에 있어서,
    상기 액세스 제어 설정에 대응하는 상기 권한 정보는,
    상기 적어도 하나의 가상 기능 디바이스 각각에 대응하는 상기 비휘발성 메모리 장치의 적어도 하나의 물리적 저장 영역 각각의 리드-온리(read-only) 권한, 리드-라이트(read-write) 권한 및 라이트-온리(write-only) 권한 중 하나를 포함하는 것을 특징으로 하는 스토리지 디바이스.
  3. 제2항에 있어서,
    상기 적어도 하나의 가상 기능 디바이스의 상기 가상 어드레스 범위에 대응하는 상기 정책 정보는,
    카피-온-라이트(copy-on-write) 정책을 포함하는 것을 특징으로 하는 스토리지 디바이스.
  4. 제3항에 있어서,
    상기 물리 기능 디바이스는,
    상기 적어도 하나의 가상 기능 디바이스의 상기 가상 어드레스 범위에 대응하는 제1 물리적 저장 영역에 대한 상기 카피-온-라이트(copy-on-write) 정책을 설정하고,
    상기 적어도 하나의 가상 기능 디바이스는,
    상기 제1 물리적 저장 영역에 대한 리드-온리(read-only) 권한을 갖는 것을 특징으로 하는 스토리지 디바이스.
  5. 제4항에 있어서,
    상기 적어도 하나의 가상 기능 디바이스는,
    상기 적어도 하나의 가상 기능 디바이스의 상기 가상 어드레스 범위에서 제1 가상 어드레스에 데이터를 기입하기 위한 기입 요청이 생성되면, 제2 물리적 저장 영역 및 상기 제2 물리적 저장 영역에 대한 제2 논리 어드레스를 할당하고,
    상기 제1 가상 어드레스를 상기 제2 논리 어드레스에 매핑하고, 상기 제2 논리 어드레스를 상기 제2 물리적 저장 영역의 제2 물리 어드레스에 매핑하는 매핑 정보를 생성하고,
    상기 적어도 하나의 가상 기능 디바이스는,
    상기 제2 물리적 저장 영역에 대한 리드-라이트(read-write) 권한 또는 라이트-온리(write-only) 권한을 갖는 것을 특징으로 하는 스토리지 디바이스.
  6. 제5항에 있어서,
    상기 적어도 하나의 가상 기능 디바이스는,
    상기 제1 가상 어드레스에 대응하는 상기 제1 물리적 저장 영역에 저장된 데이터를 상기 제2 물리적 저장 영역에 복사하는 것을 특징으로 하는 스토리지 디바이스.
  7. 제1항에 있어서,
    상기 메모리 컨트롤러는,
    상기 가상 어드레스에 대응하는 상기 논리 어드레스를 검색하기 위한 가상 기능 디바이스 매핑 테이블 정보를 저장하는 RAM(random access memory)를 포함하고,
    상기 적어도 하나의 가상 기능 디바이스 각각은, 상기 RAM에 저장된 상기 가상 기능 디바이스 매핑 테이블 정보를 이용하여 가상 어드레스를 논리 어드레스로 변환하는 것을 특징으로 하는 스토리지 디바이스.
  8. 제7항에 있어서,
    상기 메모리 컨트롤러는,
    상기 스토리지 디바이스의 전원이 오프(off) 되기 전에 상기 RAM에 저장된 상기 가상 기능 디바이스 매핑 테이블 정보를 상기 비휘발성 메모리 장치에 기입하고,
    상기 스토리지 디바이스의 전원이 온(on) 된 후에 상기 비휘발성 메모리 장치로부터 독출한 상기 가상 기능 디바이스 매핑 테이블 정보를 상기 RAM에 로드(load)하는 것을 특징으로 하는 스토리지 디바이스.
  9. 제1항에 있어서,
    상기 메모리 컨트롤러는,
    상기 호스트로부터 디바이스 가상화 요청에 응답하여 상기 적어도 하나의 가상 기능 디바이스에 대응하는 특정 식별 디바이스(ID) 데이터를 생성하고, 상기 적어도 하나의 가상 기능 디바이스에 대응하는 상기 생성한 특정 식별 디바이스 데이터를 상기 호스트에 전송하는 것을 특징으로 하는 스토리지 디바이스.
  10. 스토리지 디바이스에 있어서,
    비휘발성 메모리 장치;
    입출력 어댑터; 및
    메모리 컨트롤러;를 포함하고,
    상기 메모리 컨트롤러는,
    상기 입출력 어댑터를 통해 연결된 호스트와 통신하여 데이터를 송수신하고, 상기 호스트에 물리 기능 디바이스 및 적어도 하나의 가상 기능 디바이스를 제공하고, 가상 어드레스를 논리 어드레스로 변환하고, 상기 논리 어드레스를 물리 어드레스로 변환하는 주소 변환 처리를 수행하고,
    상기 적어도 하나의 가상 기능 디바이스는,
    상기 호스트의 가상 머신에 할당되고,
    상기 물리 기능 디바이스는,
    상기 적어도 하나의 가상 기능 디바이스에 대응하는 액세스 제어 설정을 설정하고, 상기 액세스 제어 설정은, 가상 어드레스 범위 정보, 논리 어드레스 범위 정보, 권한 정보 및 정책 정보에 기초하고,
    상기 적어도 하나의 가상 기능 디바이스는,
    리드-온리(read-only) 권한을 가지며 카피-온-라이트(copy-on-write) 정책이 설정된 논리 어드레스에 대한 기입 요청이 생성되면, 새로운 논리 어드레스를 할당하는 스토리지 디바이스.
KR1020150106773A 2015-07-28 2015-07-28 스토리지 디바이스 및 스토리지 가상화 시스템 KR102473665B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150106773A KR102473665B1 (ko) 2015-07-28 2015-07-28 스토리지 디바이스 및 스토리지 가상화 시스템
US15/216,312 US20170031832A1 (en) 2015-07-28 2016-07-21 Storage device and storage virtualization system
US16/810,500 US11397607B2 (en) 2015-07-28 2020-03-05 Storage device and storage virtualization system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150106773A KR102473665B1 (ko) 2015-07-28 2015-07-28 스토리지 디바이스 및 스토리지 가상화 시스템

Publications (2)

Publication Number Publication Date
KR20170013713A KR20170013713A (ko) 2017-02-07
KR102473665B1 true KR102473665B1 (ko) 2022-12-02

Family

ID=57883442

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150106773A KR102473665B1 (ko) 2015-07-28 2015-07-28 스토리지 디바이스 및 스토리지 가상화 시스템

Country Status (2)

Country Link
US (2) US20170031832A1 (ko)
KR (1) KR102473665B1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032965B (zh) * 2017-06-12 2021-01-12 华为技术有限公司 一种数据读取方法、主机及存储设备
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10565126B2 (en) * 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US11087207B2 (en) * 2018-03-14 2021-08-10 Silicon Storage Technology, Inc. Decoders for analog neural memory in deep learning artificial neural network
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
US11068203B2 (en) * 2018-08-01 2021-07-20 Micron Technology, Inc. NVMe direct virtualization with configurable storage
CN110346295B (zh) * 2019-07-15 2022-03-04 北京神州同正科技有限公司 缺陷复合定位方法及装置、设备和存储介质
US11928070B2 (en) 2021-04-13 2024-03-12 SK Hynix Inc. PCIe device
CN114625484A (zh) * 2022-03-31 2022-06-14 苏州浪潮智能科技有限公司 虚拟化实现方法、装置、电子设备、介质及arm平台
CN117369734B (zh) * 2023-12-08 2024-03-08 浪潮电子信息产业股份有限公司 一种存储资源管理系统、方法及存储虚拟化系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097377A1 (en) * 2011-10-18 2013-04-18 Hitachi, Ltd. Method for assigning storage area and computer system using the same

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4574315B2 (ja) 2004-10-07 2010-11-04 株式会社日立製作所 ストレージ装置およびストレージ装置における構成管理方法
US8650342B2 (en) 2006-10-23 2014-02-11 Dell Products L.P. System and method for distributed address translation in virtualized information handling systems
JP5056845B2 (ja) 2007-03-28 2012-10-24 富士通株式会社 スイッチおよび情報処理装置
US8010763B2 (en) * 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8141094B2 (en) * 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
KR101555022B1 (ko) * 2008-12-02 2015-09-23 삼성전자주식회사 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 맵핑정보 복원 방법
US8443156B2 (en) 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
WO2011081935A2 (en) 2009-12-14 2011-07-07 Citrix Systems, Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
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
GB2478727B (en) 2010-03-15 2013-07-17 Advanced Risc Mach Ltd Translation table control
US8386749B2 (en) 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US9372812B2 (en) 2011-12-22 2016-06-21 Intel Corporation Determining policy actions for the handling of data read/write extended page table violations
CN104285206A (zh) * 2012-04-26 2015-01-14 株式会社日立制作所 信息存储系统和控制信息存储系统的方法
TWI514140B (zh) * 2013-02-05 2015-12-21 Via Tech Inc 非揮發性記憶裝置及其操作方法
US9471485B2 (en) * 2013-03-12 2016-10-18 Macronix International Co., Ltd. Difference L2P method
US9003071B2 (en) * 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US9639476B2 (en) 2013-09-26 2017-05-02 Cavium, Inc. Merged TLB structure for multiple sequential address translations
KR101564293B1 (ko) 2013-10-02 2015-10-29 포항공과대학교 산학협력단 장치 가상화 방법 및 장치
WO2015130837A1 (en) * 2014-02-25 2015-09-03 Dynavisor, Inc. Dynamic information virtualization
GB201415796D0 (en) * 2014-09-07 2014-10-22 Technion Res & Dev Foundation Logical-to-physical block mapping inside the disk controller: accessing data objects without operating system intervention
US9626108B2 (en) * 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
US10503405B2 (en) * 2015-02-10 2019-12-10 Red Hat Israel, Ltd. Zero copy memory reclaim using copy-on-write

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097377A1 (en) * 2011-10-18 2013-04-18 Hitachi, Ltd. Method for assigning storage area and computer system using the same

Also Published As

Publication number Publication date
US20170031832A1 (en) 2017-02-02
US11397607B2 (en) 2022-07-26
KR20170013713A (ko) 2017-02-07
US20200201669A1 (en) 2020-06-25

Similar Documents

Publication Publication Date Title
KR102473665B1 (ko) 스토리지 디바이스 및 스토리지 가상화 시스템
US11150837B2 (en) Method, device and system for processing sequential groups of buffered write data
US20210382864A1 (en) Key-value storage device and operating method thereof
KR102410671B1 (ko) 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법
KR102565895B1 (ko) 메모리 시스템 및 그것의 동작 방법
KR102308782B1 (ko) 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
US11573742B2 (en) Dynamic data placement for collision avoidance among concurrent write streams
US11531492B2 (en) Device and method of operating the same
US10296233B2 (en) Method of managing message transmission flow and storage device using the method
CN112201292A (zh) 控制器及其操作方法
US20220261171A1 (en) Storage devices, data storage systems and methods of operating storage devices
US8433847B2 (en) Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
KR20190083148A (ko) 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
US11263148B2 (en) Mapping host logical address to target address that is selected from combination of first memory's physical addresses and second memory's virtual addresses
KR20210090439A (ko) 메모리 컨트롤러 및 그 동작 방법
US20170171106A1 (en) Quality of service management method in fabric network and fabric network system using the same
CN113806240A (zh) 存储装置及其操作方法
KR20220077691A (ko) 호스트, 메모리 컨트롤러 및 메모리 장치를 포함하는 전자 시스템 및 이의 동작 방법
KR20220023598A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20220028332A (ko) 저장 장치 및 그 동작 방법
US11586379B2 (en) Memory system and method of operating the same
CN116027965A (zh) 存储装置和电子系统
US11366725B2 (en) Storage device and method of operating the same
CN115708042A (zh) 储存装置、存储器装置及其操作方法
KR20220066688A (ko) 스토리지 장치 및 그 동작 방법

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