KR20230068260A - 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법 장치 - Google Patents

가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법 장치 Download PDF

Info

Publication number
KR20230068260A
KR20230068260A KR1020220048791A KR20220048791A KR20230068260A KR 20230068260 A KR20230068260 A KR 20230068260A KR 1020220048791 A KR1020220048791 A KR 1020220048791A KR 20220048791 A KR20220048791 A KR 20220048791A KR 20230068260 A KR20230068260 A KR 20230068260A
Authority
KR
South Korea
Prior art keywords
virtual
unit
memory device
volatile memory
block address
Prior art date
Application number
KR1020220048791A
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 EP22197701.0A priority Critical patent/EP4180936B1/en
Priority to US17/953,685 priority patent/US20230147952A1/en
Priority to CN202211384003.0A priority patent/CN116107931A/zh
Publication of KR20230068260A publication Critical patent/KR20230068260A/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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/12Replacement control
    • 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/152Virtualized environment, e.g. logically partitioned system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

가상화 시스템은, 비휘발성 메모리 장치, 가상화 환경을 제공하는 프로세서, 복수의 버츄얼 유닛들 및 버츄얼 유닛 매니저를 포함한다. 상기 복수의 버츄얼 유닛들은 상기 가상화 환경에서 각각 독립적으로 동작하고, 상기 비휘발성 메모리 장치에 대한 스토리지 액세스 동작과 연관된 논리 블록 어드레스를 상기 비휘발성 메모리 장치의 물리 블록 어드레스로 변환하는 플래시 트랜슬레이션 레이어 동작을 버츄얼 유닛의 내부에서 수행한다.

Description

가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법 장치{Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법에 관한 것이다.
컴퓨팅 자원의 가상화(virtualization) 기술은, 물리 자원을 효율적으로 사용하고 보안성을 높이기 위한 목적으로 물리 자원과 애플리케이션 사이에 추상화된 계층을 제공하는 기술을 말한다. 이러한 가상화 기술을 이용하여 가상화 환경(virtualization environment)을 제공하는 가상화 시스템(virtualized system)은, 하드웨어 자원을 가상화하는 하이퍼바이저 기반으로 가상 머신(virtual machine)들을 제공하는 가상화 시스템과, 컨테이너 엔진 또는 도커(docker)를 기반으로 운영체제를 가상화하는 컨테이너(container)들을 제공하는 가상화 시스템을 포함한다. 가상화 기술은 격리(isolation), 높은 가용성(high availability), 워크로드 밸런싱(workload balancing), 샌드박싱(sandboxing)과 같은 장점들을 제공할 수 있다. 가상화 시스템에서 비휘발성 메모리 장치 등과 같은 다양한 하드웨어를 효율적으로 이용할 수 있는 방안이 요구된다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 비휘발성 메모리 장치에 대한 액세스를 효율적으로 제어할 수 있는 가상화 시스템을 제공하는 것이다.
또한 본 발명의 일 목적은, 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스를 효율적으로 수행할 수 있는 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 가상화 시스템은, 비휘발성 메모리 장치, 가상화 환경을 제공하는 프로세서, 복수의 버츄얼 유닛들 및 버츄얼 유닛 매니저를 포함한다. 상기 복수의 버츄얼 유닛들은 상기 가상화 환경에서 각각 독립적으로 동작하고, 상기 비휘발성 메모리 장치에 대한 스토리지 액세스 동작과 연관된 논리 블록 어드레스를 상기 비휘발성 메모리 장치의 물리 블록 어드레스로 변환하는 플래시 트랜슬레이션 레이어 동작을 버츄얼 유닛의 내부에서 수행한다. 상기 버츄얼 유닛 매니저는 상기 가상화 환경에서 상기 복수의 버츄얼 유닛들을 제어한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 가상화 시스템은, 비휘발성 메모리 장치, 휘발성 메모리 장치, 가상화 환경을 제공하는 프로세서, 상기 가상화 환경에서 각각 독립적으로 동작하고, 상기 비휘발성 메모리 장치에 대한 스토리지 액세스 동작과 연관된 논리 블록 어드레스를 상기 비휘발성 메모리 장치의 물리 블록 어드레스로 변환하는 플래시 트랜슬레이션 레이어 동작을 컨테이너의 내부에서 수행하는 복수의 컨테이너들 및 상기 가상화 환경에서 상기 복수의 컨테이너들을 제어하는 컨테이너 엔진을 포함한다. 상기 컨테이너 엔진은, 상기 비휘발성 메모리 장치의 물리 어드레스 공간에 상기 복수의 컨테이너들에 각각 상응하는 복수의 유닛 스토리지 영역들을 할당한다. 상기 각각의 컨테이너는, 상기 각각의 컨테이너의 논리 블록 어드레스를 상기 각각의 컨테이너에게 할당된 각각의 유닛 스토리지 영역의 물리 블록 어드레스로 변환한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법은, 버츄얼 유닛 매니저에 의해, 비휘발성 메모리 장치의 물리 어드레스 공간에 상기 복수의 버츄얼 유닛들에 각각 상응하는 복수의 유닛 스토리지 영역들을 할당하는 단계, 각각의 버츄얼 유닛에 의해, 상기 각각의 버츄얼 유닛의 논리 블록 어드레스를 상기 각각의 버츄얼 유닛에게 할당된 각각의 유닛 스토리지 영역의 물리 블록 어드레스로 변환하는 플래시 트랜슬레이션 레이어 동작을 수행하는 단계 및 상기 각각의 버츄얼 유닛으로부터 제공되는 상기 물리 블록 어드레스에 기초하여 상기 비휘발성 메모리 장치에 대한 스토리지 액세스 동작을 수행하는 단계를 포함한다.
본 발명의 실시예들에 따른 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법은, 버츄얼 유닛들의 내부에서 플래시 트랜슬레이션 레이어 동작을 분산하여 수행함으로써 일부 버츄얼 유닛에 에러가 발생하더라도 다른 버츄얼 유닛들의 스토리지 액세스 동작을 정상적으로 수행할 수 있다
또한, 본 발명의 실시예들에 따른 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법은, 버츄얼 유닛들에 각각 상응하는 비휘발성 메모리 장치의 유닛 스토리지 영역들을 설정함으로써 가비지 콜렉션 동작과 같은 관리 동작을 버츄얼 유닛마다 독립적으로 수행하여 비휘발성 메모리 장치를 효율적으로 관리하고 가상화 시스템의 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법을 나타내는 순서도이다.
도 3, 4 및 5는 본 발명의 실시예들에 따른 가상화 시스템의 유닛 스토리지 영역들의 설정의 실시예들을 나타내는 도면들이다.
도 6 및 7은 본 발명의 실시예들에 따른 가상화 시스템의 비휘발성 메모리 장치에 대한 스토리지 액세스 동작을 위한 플래시 트랜슬레이션 레이어 동작을 나타내는 도면들이다.
도 8 및 9는 본 발명의 실시예들에 따른 가상화 시스템의 복수의 버츄얼 유닛들에 의한 플래시 트랜슬레이션 레이어의 병렬 수행을 설명하기 위한 도면들이다.
도 10 및 11은 본 발명의 실시예들에 따른 컨테이너 기반 가상화 시스템을 나타내는 블록도이다.
도 12 및 13은 본 발명의 실시예들에 따른 컨테이너 기반 가상화 시스템의 가상화 환경의 계층 구조의 실시예들을 나타내는 도면들이다.
도 14는 본 발명의 실시예들에 따른 버츄얼 머신 기반 가상화 시스템을 나타내는 블록도이다.
도 15, 16 및 17은 본 발명의 실시예들에 따른 버츄얼 머신 기반 가상화 시스템의 가상화 환경의 계층 구조의 실시예들을 나타내는 도면들이다.
도 18 및 19는 본 발명의 실시예들에 따른 본 발명의 실시예들에 따른 가상화 시스템의 휘발성 메모리 장치에 대한 메모리 액세스 동작을 위한 2-스테이지 어드레스 트랜슬레이션을 나타내는 도면들이다.
도 20은 본 발명의 실시예들에 따른 가상화 시스템의 매핑 정보의 로딩 동작 및 백업 동작을 나타내는 도면이다.
도 21은 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 가상화 시스템을 나타내는 블록도이다.
도 22는 도 21의 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 23은 도 21의 스토리지 장치에 포함되는 비휘발성 메모리 장치의 일 실시예를 나타내는 블록도이다.
도 24는 도 23의 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이를 나타내는 블록도이다.
도 25는 도 24의 메모리 셀 어레이에 포함되는 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 26은 본 발명의 실시예들에 따른 가상화 시스템의 컨테이너 오케스트레이션 플랫폼 구조의 일 예를 나타내는 블록도이다.
도 27은 본 발명의 실시예들에 따른 컨테이너 기반 가상화 시스템을 나타내는 블록도이다.
도 28은 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이고, 도 2는 본 발명의 실시예들에 따른 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법을 나타내는 순서도이다.
도 1을 참조하면, 가상화 시스템(virtualized system)(10)은 프로세서(PRC)(20), 비휘발성 메모리 장치(NVM)(30), 메모리 관리 회로(MMC)(40) 및 휘발성 메모리 장치(MEM)(50)를 포함할 수 있다.
휘발성 메모리 장치(50)는 데이터 및 프로그램 코드를 저장할 수 있다. 휘발성 메모리 장치(50)에는 가상화 환경(virtualization environments)을 구현하기 위한 버츄얼 유닛 매니저(VUMNG), 복수의 버츄얼 유닛들(VU1~VU3) 등의 소프트웨어 프로그램이 로드될 수 있다.
예를 들면, 가상화 시스템(10)의 부팅시에 비휘발성 메모리 장치(30)에 저장된 소프트웨어 프로그램이 부팅 시퀀스에 의거하여 휘발성 메모리 장치(50)로 로드되고, 휘발성 메모리 장치(50)에 로드된 소프트웨어 프로그램에 기초하여 프로세서(20)는 가상화 환경을 제공할 수 있다. 이와 같이, 휘발성 메모리 장치(50)는 가상화 시스템(10)의 워킹 메모리로서 기능할 수 있다.
휘발성 메모리 장치(50)는 디램(DRAM, dynamic random access memory), 에스램(SRAM, static random access memory) 등의 휘발성 메모리로 구현될 수 있으나 본 발명의 실시예들이 이에 한정되는 것은 아니다. 휘발성 메모리 장치(50)는 다른 유형의 휘발성 메모리 또는 비휘발성 메모리로 구현될 수 있다.
메모리 관리 회로(40)는 프로세서(20)의 휘발성 메모리 장치(50)에 대한 메모리 액세스를 관리할 수 있다. 상기 메모리 액세스는 휘발성 메모리 장치(50)로부터 데이터를 독출하기 위한 독출 동작 및 휘발성 메모리 장치(50)에 데이터를 저장하기 위한 기입 동작을 포함할 수 있다.
상기 메모리 액세스는 프로세서(20)로부터 발행되는(issued) 메모리 액세스 리퀘스트에 기초하여 수행될 수 있다. 상기 메모리 액세스 리퀘스트는 데이터 기입 동작 또는 데이터 독출 동작을 위한 가상 어드레스(VA)를 포함할 수 있다. 메모리 관리 회로(40)는 어드레스 트랜슬레이션을 수행하여 가상 어드레스(VA)에 매핑되는 물리 어드레스(PA)를 제공할 수 있다. 가상 어드레스(VA)는 운영 체체 및/또는 복수의 버츄얼 유닛들(VU1~VU3)의 가상 어드레스 공간 상의 위치를 나타내고 물리 어드레스(PA)는 휘발성 메모리 장치(50)의 메모리 영역의 실제의 물리적 위치를 나타낸다. 일 실시예에서, 메모리 관리 회로(40)는 도 18 및 19를 참조하여 후술하는 2-스테이지 어드레스 트랜슬레이션을 수행하는 제1 메모리 관리 유닛(MMU1) 및 제2 메모리 관리 유닛(MMU2)을 포함할 수 있다. 실시예들에 따라서, 메모리 관리 회로(40)는 하드웨어로 구현될 수도 있고 프로세서(20)에 의해 실행되는 프로그램 코드들로 구현될 수도 있다.
프로세서(20)는 가상화 환경을 제공할 수 있다. 가상화 환경에서 하이퍼바이저(HPVS) 및 복수의 게스트 운영 체제들(GOS1, GOS2)이 동작할(running) 수 있다. 도 1에는 도시 및 설명의 편의상 3개의 버츄얼 유닛들(VU1~VU3)이 도시되어 있으나, 버츄얼 유닛 매니저(VUMNG) 상에서 동작하는 버츄얼 유닛들의 개수는 가상화 환경에 따라서 다양하게 결정될 수 있다.
도 1에는 편의상 버츄얼 유닛 매니저(VUMNG) 및 복수의 버츄얼 유닛들(VU1~VU3)이 프로세서(20)에 포함되는 것으로 도시되어 있으나, 전술한 바와 같이 버츄얼 유닛 매니저(VUMNG) 및 복수의 버츄얼 유닛들(VU1~VU3)은 소프트웨어 프로그램으로서 휘발성 메모리 장치(50)에 로딩되고 프로세서(20)에 의해 실행될 수 있다.
복수의 버츄얼 유닛들(VU1~VU3)은 가상화 환경의 유저 스페이스에서 각각 독립적으로 동작할 수 있고, 버츄얼 유닛 매니저(VUMNG)는 가상화 환경의 유저 스페이스에서 상기 복수의 버츄얼 유닛들(VU1~VU3)을 제어할 수 있다.
일 실시예에서, 가상화 환경은 컨테이너 기반의 가상화 환경일 수 있다. 이 경우, 도 10 내지 13을 참조하여 후술하는 바와 같이, 복수의 버츄얼 유닛들(VU1~VU3)은 복수의 컨테이너들에 해당하고, 버츄얼 유닛 매니저(VUMNG)는 컨테이너 엔진에 해당할 수 있다.
다른 실시예에서, 가상화 환경은 버츄얼 머신 기반의 가상화 환경일 수 있다. 이 경우, 도 14 내지 17을 참조하여 후술하는 바와 같이, 복수의 버츄얼 유닛들(VU1~VU3)은 복수의 버츄얼 머신들에 해당하고, 버츄얼 유닛 매니저(VUMNG)는 하이퍼바이저에 해당할 수 있다.
도 1 및 2를 참조하면, 버츄얼 유닛 매니저(VUMNG)는 비휘발성 메모리 장치(30)의 물리 어드레스 공간에 복수의 버츄얼 유닛들(VU1~VU3)에 각각 상응하는 복수의 유닛 스토리지 영역들(SR1~SR3)을 할당할 수 있다(S100). 복수의 유닛 스토리지 영역들(SR1~SR3)의 할당에 관한 실시예들은 도 3 내지 5를 참조하여 후술한다.
각각의 버츄얼 유닛(VUi)(i=1, 2, 3)은 각각의 버츄얼 유닛(VUi)의 논리 블록 어드레스를 각각의 버츄얼 유닛(VUi)에게 할당된 각각의 유닛 스토리지 영역(VUi)의 물리 블록 어드레스(PBA)로 변환하는 플래시 트랜슬레이션 레이어(FTL, Flash Translation Layer) 동작을 수행할 수 있다(S200).
도 1에 도시된 바와 같이, 각각의 버츄얼 유닛(VUi)은 각각의 파셜 플래시 트랜슬레이션 레이어(FTLi)를 포함할 수 있다. 각각의 플래시 트랜슬레이션 레이어(FTLi)은 휘발성 메모리 장치(50)에 로딩되는 각각의 파셜 매핑 테이블(MTABi)을 관리하고, 각각의 파셜 매핑 테이블(MTABi)에 기초하여 스토리지 액세스 동작과 연관된 논리 블록 어드레스에 매핑되는 물리 블록 어드레스를 제공할 수 있다. 각각의 파셜 매핑 테이블(MTABi)은 각각의 버츄얼 유닛(VUi)의 논리 블록 어드레스 및 각각의 유닛 스토리지 영역(SRi)의 물리 블록 어드레스의 매핑 관계를 포함한다.
다시 말해, 제1 버츄얼 유닛(VU1)에 포함되는 제1 파셜 플래시 트랜슬레이션 레이어(FTL1)는 제1 파셜 매핑 테이블(MTAB1)에 기초하여 제1 유닛 스토리지 영역(SR1)에 속하는 물리 블록 어드레스(PBA)를 제공할 수 있고, 제2 버츄얼 유닛(VU2)에 포함되는 제2 파셜 플래시 트랜슬레이션 레이어(FTL2)는 제2 파셜 매핑 테이블(MTAB2)에 기초하여 제2 유닛 스토리지 영역(SR2)에 속하는 물리 블록 어드레스(PBA)를 제공할 수 있고, 제3 버츄얼 유닛(VU3)에 포함되는 제3 파셜 플래시 트랜슬레이션 레이어(FTL3)는 제3 파셜 매핑 테이블(MTAB3)에 기초하여 제3 유닛 스토리지 영역(SR3)에 속하는 물리 블록 어드레스(PBA)를 제공할 수 있다.
각각의 파셜 플래시 트랜슬레이션 레이어(FTLi)에 의한 플래시 트랜슬레이션 레이어 동작은 도 6 및 7을 참조하여 후술한다.
가상화 시스템(10)은 각각의 버츄얼 유닛(VUi)으로부터 제공되는 물리 블록 어드레스(PBA)에 기초하여 비휘발성 메모리 장치(30)에 대한 스토리지 액세스 동작을 수행할 수 있다(S300). 상기 스토리지 액세스 동작은 데이터 기입(또는 프로그램) 동작, 데이터 독출 동작 및 소거 동작을 포함할 수 있다. 비휘발성 메모리 장치(30)에 대한 스토리지 액세스 동작에 대해서는 도 21 내지 25를 참조하여 후술한다.
비가상화 환경에서 일반적으로 운영 체제가 재부팅될 때, 전체 시스템을 파워-오프한 후 다시 시스템을 파워-온한다. 이 과정에서, 프로세서와 함께 동작하던 하드웨어들은 동작을 멈추고 하드웨어 초기화 상태로 리셋된다. 그러나, 가상화 환경에서는 일반적으로 버츄얼 유닛들 중 하나가 재부팅되어도 전체 시스템은 그대로 동작을 유지하며, 다른 버츄얼 유닛들이 계속해서 동작함을 보장해 주어야 한다.
종래의 가상화 환경에서는 버츄얼 유닛이 비휘발성 메모리 장치의 스토리지 영역을 사용하기 위해서 버츄얼 유닛 외부의 유저 스페이스 또는 커널 스페이스에서 관리되는 플래시 트랜슬레이션 레이어를 사용한다. 이 경우 플래시 트랜슬레이션 레이어에 문제가 생길 경우 모든 버츄얼 유닛들이 비휘발성 메모리 장치에 액세스할 수 없게 된다.
반면에, 본 발명의 실시예들에 따른 가상화 환경에서는 버츄얼 유닛들의 내부에서 플래시 트랜슬레이션 레이어 동작을 분산하여 수행한다. 이러한 플래시 트랜슬레이션 레이어 동작의 분산 수행을 통하여, 일부 버츄얼 유닛에 에러가 발생하더라도 다른 버츄얼 유닛들의 스토리지 액세스 동작을 정상적으로 수행하여 가상화 시스템의 성능을 향상시킬 수 있다.
도 3, 4 및 5는 본 발명의 실시예들에 따른 가상화 시스템의 유닛 스토리지 영역들의 설정의 실시예들을 나타내는 도면들이다.
도 1 내지 3을 참조하면, 버츄얼 유닛 매니저(VUMNG)는, 비휘발성 메모리 장치(NVM)의 물리 어드레스 공간에 복수의 버츄얼 유닛들(VU1~VU3)에 각각 상응하는 복수의 유닛 스토리지 영역들(SR1~SR3)을 할당할 수 있다. 각각의 버츄얼 유닛(VUi)(i=1, 2, 3)은, 각각의 버츄얼 유닛(VUi)의 논리 블록 어드레스 공간(SLBA) 상의 논리 블록 어드레스(LBA)를 각각의 버츄얼 유닛(VUi)에게 할당된 각각의 유닛 스토리지 영역(SRi)의 물리 블록 어드레스(PBA)로 매핑할 수 있다.
종래에는 복수의 버츄얼 유닛들(VU1~VU3)의 구분 없이 비휘발성 메모리 장치(NVM)에 호스트 장치의 기입 요청 순서대로 순차적으로 데이터를 기입하였다. 이와 같은 순차적인 기입 방식은 하나의 메모리 블록에 복수의 버츄얼 유닛들(VU1~VU3)에 상응하는 데이터가 혼합되어 쓰여지므로 이후 저장된 데이터가 변경되는 경우 메모리 블록 내의 무효 데이터(invalid data) 또는 오염 데이터(dirty data)가 증가하여, 해당 메모리 블록의 유효 데이터만을 다른 메모리 블록에 옮겨 기입하는 가비지 콜렉션(garbage collection)을 진행하게 된다. 이 가비지 콜렉션은 호스트 장치와 스토리지 장치 사이의 입출력 동작 중에 발생하므로 그 오버헤드로 인해 스토리지 장치 및 이를 포함하는 시스템의 성능을 저해한다. 또한 빈번한 가비지 콜렉션에 의해 소거 및 기입 동작을 증가시켜 비휘발성 메모리 장치(NVM)를 포함하는 스토리지 장치의 수명에도 악영향을 준다.
반면에, 도 3에는 본 발명의 실시예들에 따라서 각각의 유닛 스토리지 영역(SRi)에 각각의 버츄얼 유닛(VUi)에 해당하는 데이터만을 저장하는 ZNS(Zoned NameSpace) 기입 동작이 도시되어 있다. 이 경우 복수의 버츄얼 유닛들(VU1~VU3)은 복수의 유닛 스토리지 영역들(SR1~SR3)에 대한 가비지 콜렉션 동작을 각각 독립적으로 수행할 수 있다. ZNS(Zoned NameSpace) 기입 방식은 복수의 버츄얼 유닛들(VU1~VU3)이 각자 정해진 존(zone)에 순차적으로 데이터를 저장하게 하고 소거 동작을 존 단위로 수행하여 가비지 콜렉션의 빈도를 현저하게 감소시킬 수 있다. 따라서, 소거 및 기입 횟수를 감소하여 스토리지 장치의 수명이 증가할 수 있고, 가비지 콜렉션으로 인한 오버헤드를 감소할 수 있다. 또한, 가비지 콜렉션에 사용되는 예비 메모리 블록들의 개수를 감소하여 스토리지 장치의 메모리 공간을 더욱 효율적으로 사용할 수 있다.
도 1 및 4를 참조하면, 버츄얼 유닛 매니저(VUMNG)는 복수의 버츄얼 유닛들(VU1~VU3)의 비휘발성 메모리 장치(NVM)에 대한 스토리지 사용 상태를 모니터링할 수 있다(S110). 예를 들어, 버츄얼 유닛 매니저(VUMNG)는 휘발성 메모리 장치(50)에 로딩된 파셜 매핑 테이블들(MTAB1~MTAB3)을 참조하여 각각의 버츄얼 유닛(VUi)에 의해 각각의 유닛 스토리지 영역(SRi)에 저장되는 데이터량을 모니터링할 수 있다.
버츄얼 유닛 매니저(VUMNG)는 상기 사용 상태에 기초하여 복수의 버츄얼 유닛들(VU1~VU3)에 각각 할당되는 복수의 유닛 스토리지 영역들(SR1~SR3)의 사이즈들을 가변할 수 있다(S120).
도 5에는 복수의 유닛 스토리지 영역들(SR1~SR3)의 사이즈들을 가변하는 일 예가 도시되어 있다.
도 24 및 25를 참조하여 후술하는 바와 같이, 비휘발성 메모리 장치는 소거 동작의 최소 단위가 되는 복수의 메모리 블록들(BLK1~BLK5)을 포함할 수 있고, 버츄얼 유닛 매니저(VUMNG)는 메모리 블록 단위로 복수의 유닛 스토리지 영역들(SR1~SR3)을 각각 설정할 수 있다.
예를 들어, 제1 메모리 블록(BLK1) 및 제2 메모리 블록(BLK2)이 제1 버츄얼 유닛(VU1)에 상응하는 제1 유닛 스토리지 영역(SR1)으로 설정되고, 제3 메모리 블록(BLK3)이 제2 버츄얼 유닛(VU2)에 상응하는 제2 유닛 스토리지 영역(SR2)으로 설정되고, 제4 메모리 블록(BLK4)이 제3 버츄얼 유닛(VU3)에 상응하는 제3 유닛 스토리지 영역(SR3)으로 설정될 수 있다. 제5 메모리 블록(BLK5)는 복수의 버츄얼 유닛들(VU1~VU3)에 할당되지 않은 비할당(unallocated) 메모리 블록에 해당한다.
가상화 시스템의 동작에 따라서 복수의 버츄얼 유닛들(VU1~VU3)의 비휘발성 메모리 장치에 대한 사용 상태가 변화할 수 있다. 예를 들어, 제1 버츄얼 유닛(VU1)의 저장 데이터량이 감소하고 제2 버츄얼 유닛(VU2)의 저장 데이터량이 증가할 수 있다. 이 경우, 버츄얼 유닛 매니저(VUMNG)는 도 5에 도시된 바와 같이 제2 메모리 블록(BLK2)을 비할당 메모리 블록으로 설정하고 비할당 상태인 제5 메모리 블록(BLK5)를 제2 유닛 스토리지 영역(SR2)에 추가할 수 있다.
이와 같이, 복수의 버츄얼 유닛들(VU1~VU3)의 비휘발성 메모리 장치(NVM)에 대한 스토리지 사용 상태에 따라서 복수의 유닛 스토리지 영역들(SR1~SR3)의 사이즈들을 가변함으로써 비휘발성 메모리 장치를 효율적으로 관리할 수 있다.
도 6 및 7은 본 발명의 실시예들에 따른 가상화 시스템의 비휘발성 메모리 장치에 대한 스토리지 액세스 동작을 위한 플래시 트랜슬레이션 레이어 동작을 나타내는 도면들이다.
도 6 및 7을 참조하면, 플래시 트랜슬레이션 레이어(FTL) 동작은 논리 블록 어드레스(LBA)를 비휘발성 메모리 장치(NVM)의 물리 블록 어드레스(PBA)로 변환하는 어드레스 트랜슬레이션을 포함한다.
논리 블록 어드레스(LBA)는 복수의 버츄얼 유닛들(VU1~VU3)의 논리 블록 어드레스 공간(SLBA) 상의 위치를 나타내고, 물리 블록 어드레스(PBA)는 비휘발성 메모리 장치(NVM)의 스토리지 영역의 실제의 물리적 위치를 나타낸다.
도 6에는 도시의 편의상 복수의 버츄얼 유닛들(VU1~VU3)의 논리 블록 어드레스 공간들(SLBA1, SLB2, SLB3)이 서로 공간적으로 분리되는 것을 도시하고 있으나, 복수의 버츄얼 유닛들(VU1~VU3)이 서로 독립적으로 동작하기 때문에 어드레스 공간의 중첩 여부는 고려되지 않을 수 있다.
한편, 전술한 바와 같이, 도 1의 버츄얼 유닛 매니저(VUMNG)는 비휘발성 메모리 장치(NVM)의 물리 어드레스 공간에 복수의 버츄얼 유닛들(VU1~VU3)에 각각 상응하는 복수의 유닛 스토리지 영역들(SR1~SR3)을 할당할 수 있다. 복수의 유닛 스토리지 영역들(SR1~SR3)은 공간적으로 중첩되지 않도록 할당될 수 있다.
제1 버츄얼 유닛(VU1)은 제1 유닛 스토리지 영역(SR1)만을 액세스할 수 있고, 제2 버츄얼 유닛(VU2)은 제2 유닛 스토리지 영역(SR2)만을 액세스할 수 있고, 제3 버츄얼 유닛(VU3)은 제3 유닛 스토리지 영역(SR3)만을 액세스할 수 있다. 결과적으로, 각각의 버츄얼 유닛에 전속되는 각각의 유닛 스토리지 영역을 설정함으로써 버츄얼 유닛들의 플래시 트랜슬레이션 레이어 동작들의 충돌을 방지할 수 있도록 공간적인 격리(spatial isolation)을 제공할 수 있다.
도 7을 참조하면, 복수의 버츄얼 유닛들(VU1~VU3)에 각각 상응하는 복수의 파셜 매핑 테이블들(MTAB1~MTAB3)이 휘발성 메모리 장치(MEM)의 복수의 유닛 스토리지 영역들(SR1~SR3)로 각각 로딩되어 저장될 수 있다. 제1 파셜 매핑 테이블(MTAB1)은 제1 버츄얼 유닛(VU1)의 논리 블록 어드레스(LBA) 및 제1 유닛 스토리지 영역(SR1)의 물리 블록 어드레스(PBA)의 매핑 관계를 포함하고, 제2 파셜 매핑 테이블(MTAB2)은 제2 버츄얼 유닛(VU2)의 논리 블록 어드레스(LBA) 및 제2 유닛 스토리지 영역(SR2)의 물리 블록 어드레스(PBA)의 매핑 관계를 포함하고, 제3 파셜 매핑 테이블(MTAB3)은 제3 버츄얼 유닛(VU3)의 논리 블록 어드레스(LBA) 및 제3 유닛 스토리지 영역(SR3)의 물리 블록 어드레스(PBA)의 매핑 관계를 포함한다. 복수의 버츄얼 유닛들(VU1~VU3)은 복수의 파셜 매핑 테이블들(MTAB1~MTAB3)을 참조하여 독립적으로 플래시 트랜슬레이션 레이어 동작을 수행할 수 있다.
도 8 및 9는 본 발명의 실시예들에 따른 가상화 시스템의 복수의 버츄얼 유닛들에 의한 플래시 트랜슬레이션 레이어의 병렬 수행을 설명하기 위한 도면들이다.
도 1 및 8을 참조하면, 제1 시점(t1)에서, 가상화 시스템(10)에 파워를 공급하여 가상화 시스템을 부팅할 수 있다. 가상화 시스템의 부팅은 가상화 시스템(10)의 동작을 위한 초기 설정 값들을 가상화 시스템(10)에 포함되는 레지스터들에 저장하고 버츄얼 유닛 매니저(VUMNG)에 해당하는 소프트웨어 프로그램을 휘발성 메모리 장치(50)에 로딩하는 과정을 포함할 수 있다.
제2 시점(t2)에서, 버츄얼 유닛 매니저(VUMNG)는 복수의 버츄얼 유닛들(VUs), 예를 들어, 제1 버츄얼 유닛(VU1), 제2 버츄얼 유닛(VU2), 제3 버츄얼 유닛(VU3), 등을 부팅할 수 있다. 복수의 버츄얼 유닛들(VUs)의 부팅은 복수의 버츄얼 유닛들(VUs)에 상응하는 소프트웨어 프로그램을 휘발성 메모리 장치(50)에 로딩하는 과정을 포함할 수 있다.
제3 시점(t3)에서, 가상화 시스템(10)은 가상화 시스템(10)에 포함되는 하드웨어를 초기화할 수 있다. 하드웨어의 초기화는 하드웨어의 동작을 초기 설정 값들을 가상화 시스템(10)에 포함되는 레지스터들에 저장하는 과정을 포함할 수 있다.
이와 같이, 모든 부팅 프로세스가 완료되면, 제4 시점(t4)에서, 복수의 버츄얼 유닛들(VUs)은 동작을 개시할 수 있다.
이후, 예를 들어 제5 시점(t5)에서 제1 버츄얼 유닛(VU1)이 내부적인 에러(error)나 외부적인 요인에 의해서 급작스러운 리셋(sudden reset)이 트리거될(triggered) 수 있다.
제6 시점(t6)에서, 버츄얼 유닛 매니저(VUMNG)는 에러가 발생한 제1 버츄얼 유닛(VU1)을 재부팅할 수 있다.
제1 버츄얼 유닛(VU1)의 재부팅이 완료된 제7 시점(t7)에서, 제1 버츄얼 유닛(VU1)은 동작을 재시작할 수 있다.
제1 버츄얼 유닛(VU1)에 에러가 발생한 제5 시점(t5)부터 제1 버츄얼 유닛(VU1)이 재가동되는 제7 시점(t7) 사이의 시구간(t5~7)에서 제1 버츄얼 유닛의 비휘발성 메모리 장치에 대한 스토리지 액세스 동작이 중단된다.
종래의 가상화 환경에서는 버츄얼 유닛이 비휘발성 메모리 장치의 스토리지 영역을 사용하기 위해서 버츄얼 유닛 외부의 유저 스페이스 또는 커널 스페이스에서 관리되는 플래시 트랜슬레이션 레이어를 사용한다. 이 경우 플래시 트랜슬레이션 레이어에 문제가 생길 경우 모든 버츄얼 유닛들이 비휘발성 메모리 장치에 액세스할 수 없게 된다.
반면에, 본 발명의 실시예들에 따른 가상화 환경에서는 버츄얼 유닛들의 내부에서 플래시 트랜슬레이션 레이어 동작을 분산하여 수행한다. 이러한 플래시 트랜슬레이션 레이어 동작의 분산 수행을 통하여, 도 9에 도시된 바와 같이, 일부 버츄얼 유닛(VU1)에 에러가 발생하더라도 다른 버츄얼 유닛들(VU2, VU3)의 스토리지 액세스 동작을 정상적으로 수행하여 가상화 시스템의 성능을 향상시킬 수 있다.
도 10 및 11은 본 발명의 실시예들에 따른 컨테이너 기반 가상화 시스템을 나타내는 블록도이다.
도 10 및 11을 참조하면, 가상화 시스템들(11, 12)의 각각은 복수의 컨테이너들(CNT1, CNT2), 컨테이너 엔진(CNTENG) 및 시스템 하드웨어를 포함할 수 있다. 도 11 및 12에는 도시의 편의상 본 발명의 설명에 필요한 비휘발성 메모리 장치(NVM)만을 도시하였으나, 시스템 하드웨어는 후술하는 바와 같이 다양한 구성요소들을 포함할 수 있다. 또한, 도 11 및 12에는 도시 및 설명의 편의상 2개의 컨테이너들(CNT1, CNT2)이 도시되어 있으나, 버츄얼 유닛들의 개수는 가상화 환경에 따라서 다양하게 결정될 수 있다.
복수의 컨테이너들(CNT1, CNT2)은 가상화 환경에서 각각 독립적으로 동작할 수 있다. 복수의 컨테이너들(CNT1, CNT2)은 비휘발성 메모리 장치(NVM)에 대한 스토리지 액세스 동작과 연관된 논리 블록 어드레스(LBA)를 비휘발성 메모리 장치(NVM)의 물리 블록 어드레스(PBA)로 변환하는 플래시 트랜슬레이션 레이어 동작을 복수의 컨테이너들(CNT1, CNT2)의 내부에서 수행할 수 있다.
컨테이너 엔진(CNTENG)은 가상화 환경에서 복수의 컨테이너들(CNT1, CNT2)을 제어할 수 있다. 컨테이너 엔진(CNTENG)은 컨테이너 매니저, 도커 또는 도커 엔진이라 칭할 수도 있다.
복수의 컨테이너들(CNT1, CNT2)은 가상화 환경의 유저 스페이스에 포함되고, 가상화 환경의 커널 스페이스를 경유하지 않고 플래시 트랜슬레이션 레이어 동작에 의해 생성되는 물리 블록 어드레스(PBA)를 비휘발성 메모리 장치(PBA)로 전달할 수 있다. 이와 같은 비휘발성 메모리 장치(NVM)로의 다이렉트 액세스를 위하여, 싱글 루트 입출력 가상화(SRIOV, Single Root Input-output Virtualization) 방법이 이용될 수 있다.
싱글 루트 입출력 가상화(SRIOV)는 각 버츄얼 유닛(컨테이너 또는 버츄얼 머신)이 인터페이스를 통해 비휘발성 메모리 장치(NVM)와 같은 영구 스토리지(persistent storage)와 상호 대화(interact)하도록 할 수 있다. 싱글 루트 입출력 가상화(SRIOV)는 대용량 스토리지 장치가 다양한 PCIe(Peripheral Component Interconnect Express) 하드웨어 기능들 중 자원들로의 접근을 구분하도록 하기 위하여 사용될 수 있다. 이러한 기능들은 PCIe 물리적 기능 및 하나 또는 그 이상의 PCIe 가상 기능들을 포함할 수 있다. 각 물리적 기능 및 가상 기능은 입출력 관리부가 다른 트래픽 스트림들(traffic streams) 사이를 구분하도록 하는 고유의 PCIe RID(Requester identifier)로 할당될 수 있다. 즉, 가상 기능들을 다른 버츄얼 유닛들로 할당하는 것은 버츄얼 유닛들 및 대용량 스토리지 장치 사이에서 데이터가 전송되는 동안 다른 버츄얼 유닛들의 입출력 스트림들이 서로 간섭하는 것을 방지할 수 있다.
일 실시예에서, 도 10에 도시된 바와 같이, 각각의 컨테이너(CNTi)(i=1, 2)는 파일 시스템(FSi), 파셜 플래시 트랜슬레이션 레이어(FTLi) 및 블록 디바이스 드라이버(BDRVi)를 포함할 수 있다.
파일 시스템(FSi)은 각각의 컨테이너(CNTi) 내부의 상위 레이어로부터 스토리지 액세스에 대한 정보를 수신하고, 스토리지 액세스 동작과 연관된 논리 블록 어드레스(LBA)를 제공할 수 있다.
파셜 플래시 트랜슬레이션 레이어(FTLi)는 전술한 바와 같이 각각의 컨테이너(CNTi)의 논리 블록 어드레스(LBA) 및 각각의 유닛 스토리지 영역(SRi)의 물리 블록 어드레스(PBA)의 매핑 관계를 포함하는 파셜 매핑 테이블(MTAB을 관리할 수 있다. 파셜 플래시 트랜슬레이션 레이어(FTLi)는 파셜 매핑 테이블(MTABi)에 기초하여 파일 시스템(FSi)으로부터 제공되는 논리 블록 어드레스(LBA)에 매핑되는 물리 블록 어드레스(PBA)를 제공할 수 있다.
블록 디바이스 드라이버(BDRVi)는 파셜 플래시 트랜슬레이션 레이어(FTLi)로부터 제공되는 물리 블록 어드레스(PBA)에 기초하여 상기 스토리지 액세스 동작을 수행할 수 있다.
다른 실시예에서, 도 11에 도시된 바와 같이, 각각의 컨테이너(CNTi)는 파일 시스템(FSi) 및 파셜 플래시 트랜슬레이션 레이어(FTLi)를 포함할 수 있다.
도 10의 실시예와 비교하여, 각각의 컨테이너(CNTi)는 블록 디바이스 드라이버(BDRVi)를 포함하지 않고, 대신에 컨테이넌 엔진(CNTENG)은 복수의 컨테이너들(CNT1, CNT2)에 의해 공유되는 블록 디바이스 드라이버(BDRV)를 포함할 수 있다.
블록 디바이스 드라이버(BDRV)는 가상화 환경의 유저 스페이스에 포함되고, 복수의 컨테이너들(CNT1, CNT2)로부터 제공되는 물리 블록 어드레스(PBA)에 기초하여 상기 스토리지 액세스 동작을 수행할 수 있다.
도 12 및 13은 본 발명의 실시예들에 따른 컨테이너 기반 가상화 시스템의 가상화 환경의 계층 구조의 실시예들을 나타내는 도면들이다.
도 12 및 13을 참조하면, 가상화 환경은 유저 스페이스에서 동작하는 복수의 컨테이너들(CNT1~CNT3) 및 컨테이너 엔진(CNTENG)을 포함할 수 있다. 예를 들어, 제1 컨테이너(CNT1)는 제1 애플리케이션(APP1)을 컨테이너화한 것이고, 제2 컨테이너(CNT2)는 제2 애플리케이션(APP2)을 컨테이너화한 것이고, 제3 컨테이너(CNT3)는 제3 애플리케이션(APP3)을 컨테이너화한 것일 수 있다.
컨테이너 엔진(CNTENG)은, 도 12에 도시된 바와 같이 커널 스페이스에서 동작하는 호스트 운영체제(HOS) 상에서 동작하거나, 도 13에 도시된 바와 같이 호스트 운영체제(HOS)에 포함될 수 있다. 호스트 운영체제(HOS)는 시스템 하드웨어(SYSHW)에 대한 전적인 제어(full control)를 가질 수 있고, 호스트 운영체제(HOS)는 시스템 하드웨어(SYSHW) 상에서 동작할 수 있다.
도 14는 본 발명의 실시예들에 따른 버츄얼 머신 기반 가상화 시스템을 나타내는 블록도이다.
도 14를 참조하면, 가상화 시스템(60)은 시스템 하드웨어(61) 및 시스템 하드웨어(61)가 제공하는 가상화 환경에서 동작하는(running) 소프트웨어를 포함할 수 있다. 상기 소프트웨어는 유저 스페이스에서 동작하는 하이퍼바이저(62) 및 복수의 버츄얼 머신들(VM1, VM2, VM3)(63, 64, 65)을 포함할 수 있다. 도 14에는 도시의 편의상 3개의 버츄얼 버신들(63, 64, 65)을 도시하고 있으나, 하이퍼바이저(62) 상에 인스톨되는 버츄얼 머신들의 개수는 다양하게 결정될 수 있다.
시스템 하드웨어(61)는 가상화 환경을 제공하는 중앙처리장치(CPU), 휘발성 메모리 장치(MEM), 스토리지 장치(STR), 메모리 관리 회로(MMC), 하나 이상의 아이피(IP, intellectual property) 등을 포함할 수 있다. 중앙처리장치(CPU)는 단일의 프로세서일 수도 있고, 복수의 프로세서 코어들을 포함할 수도 있다. 중앙처리장치(CPU)가 복수의 프로세서 코어들을 포함하는 경우 복수의 프로세서 코어들 중 하나가 가상화 환경을 제공하는 도 1의 프로세서(20)에 해당할 수 있다.
버츄얼 머신들(63, 64, 65)은 각각의 기능을 수행하기 위한 다양한 구성을 가질 수 있다. 이하에서는 하나의 버츄얼 머신(63)을 예로 들어 설명한다. 예를 들어, 버츄얼 머신(63)은 버츄얼 하드웨어, 게스트 운영 체제(GOS) 및 애플리케이션들(APP)을 포함할 수 있다.
버츄얼 머신(63) 내에서, 가상화 시스템(63)의 물리적인 구성 요소들은 소프트웨어로 에뮬레이트된다(emulated). 즉 가상화 시스템(60)의 물리적인 구성 요소들은 버츄얼 하드웨어로 가상화(virtualized)될 수 있다. 버츄얼 하드웨어는 시스템 하드웨어(61)의 물리적 구성요소들 중에서 버츄얼 머신(63)에 할당된 물리적 구성요소들을 에뮬레이트한 가상적인 구성요소들을 포함할 수 있다. 예를 들어, 버츄얼 하드웨어는 프로세서(CPU)를 가상화한 버츄얼 프로세서, 휘발성 메모리 장치(MEM)를 가상화한 버츄얼 메모리, 스토리지 장치(STR)를 가상화한 버츄얼 스토리지 장치, 아이피(IP)를 가상화한 버츄얼 아이피 등을 포함할 수 있다.
예를 들어, 게스트 운영 체제(GOS1)는 버츄얼 메모리 관리 유닛(vGMMU), 디바이스 드라이버(GDRV), 상태 모니터(SMON), 파셜 플래시 트랜슬레이션 레이어(FTL1) 등을 포함할 수 있다.
버츄얼 메모리 관리 유닛(vGMMU)은 게스트 운영 체제(GOS1)의 가상 어드레스 공간을 게스트 운영 체제(GOS1) 상에서 동작하는 애플리케이션들(APP)에 할당할 수 있다. 버츄얼 메모리 관리 유닛(vGMMU)은 상기 가상 어드레스 공간의 가상 어드레스와 상기 버츄얼 하드웨어에 포함되는 버츄얼 메모리의 중간 물리 어드레스 사이의 매핑을 관리할 수 있다.
디바이스 드라이버(GDRV)는 상기 버츄얼 하드웨어에 포함되는 버츄얼 아이피를 매개로 하여 시스템 하드웨어(61)에 포함되는 구성요소들을 제어할 수 있다.
상태 모니터(SMON)는 버츄얼 머신(63) 및/또는 게스트 운영 체제(GOS1)의 상태를 모니터링하여 하이퍼바이저(62)에게 상태 정보를 제공할 수 있다. 예를 들어, 상태 모니터(SMON)는 버츄얼 머신(63)이 정상적으로 동작하는 동안 주기적으로 상태 정보를 제공하고, 하이퍼바이저(HPVS)는 일정한 시간 동안 상기 상태 정보를 수신하지 못한 경우 게스트 운영 체제(GOS1)의 재부팅 여부 등을 결정할 수 있다.
하이퍼바이저(62)는 복수의 버츄얼 머신들(63, 64, 65)을 생성, 스케쥴링 및 관리할 수 있다. 하이퍼바이저(62)는 복수의 버츄얼 머신들(63, 64, 65)과 시스템 하드웨어(61) 사이의 인터페이스를 제공하고, 버츄얼 머신과 연관된 인스트럭션의 실행 및 데이터 전송을 관리할 수 있다. 하이퍼바이저(62)는 버츄얼 머신 모니터(virtual machine monitor) 또는 버츄얼 머신 매니저(virtual machine manager)라 칭할 수도 있다.
예를 들어, 하이퍼바이저(62)는 인터럽트 핸들러(INTHD), 버츄얼 메모리 관리 유닛(vHMMU), 디바이스 드라이버(HDRV), 디바이스 에뮬레이터(DEML) 등을 포함할 수 있다.
버츄얼 메모리 관리 유닛(vHMMU)은 복수의 버츄얼 머신들(63, 64, 65) 또는 복수의 게스트 운영 체제들에게 휘발성 메모리 장치(MEM)의 게스트 메모리 영역들을 할당할 수 있다. 버츄얼 메모리 관리 유닛(vHMMU)은 복수의 버츄얼 머신들(63, 64, 65)의 버츄얼 메모리들의 중간 물리 어드레스와 휘발성 메모리 장치(MEM)의 물리 어드레스 사이의 매핑을 관리할 수 있다.
디바이스 드라이버(HDRV)는 시스템 하드웨어(61)에 포함되는 아이피(IP)를 직접 제어할 수 있다. 시스템 하드웨어(61)에 포함되는 각각의 아이피(IP)는 게스트 운영 체제(GOS1)에 포함되는 디바이스 드라이버(GDRV) 및/또는 하이퍼바이저(520)에 포함되는 디바이스 드라이버(HDRV)에 의해 제어될 수 있다.
인터럽트 핸들러(INTHD)는 복수의 버츄얼 머신들(63, 64, 65)로부터 제공되는 정보 및/또는 시스템 하드웨어(61)로부터 제공되는 정보에 기초하여 가상화 시스템의 동작 이상을 제어할 수 있다. 예를 들어, 인터럽트 핸들러(INTHD)는 복수의 버츄얼 머신들(63, 64, 65)에 각각 포함되는 복수의 게스트 운영 체제들의 재부팅 여부를 결정할 수 있다.
디바이스 에뮬레이터(DEML)는 버츄얼 머신들(63, 64, 65)의 각각에 대하여 시스템 하드웨어(61)의 물리적인 구성요소들을 할당하고, 할당된 물리적인 구성요소들을 에뮬레이션하여 버츄얼 머신들(63, 64, 65)의 버츄얼 하드웨어를 구축하고 관리할 수 있다.
도 14에 도시된 바와 같이, 버츄얼 머신(VM1)은 본 발명의 실시예들에 따른 버츄얼 머신(VM1)에 전속되고 다른 버츄얼 머신들(VM2, VM3)와 독립되는 플래시 트랜슬레이션 레이어 동작을 수행하기 위한 파셜 플래시 트랜슬레이션 레이어(FTL1)를 포함할 수 있다.
전술한 바와 같이, 파셜 플래시 트랜슬레이션 레이어(FTL1)는 버츄얼 머신(VM1)의 논리 블록 어드레스 및 버츄얼 머신(VM1)에 상응하는 유닛 스토리지 영역의 물리 블록 어드레스의 매핑 관계를 포함하는 파셜 매핑 테이블을 관리할 수 있다. 상기 유닛 스토리지 영역은 스토리지 장치(STR)에 포함되는 비휘발성 메모리 장치의 일부 스토리지 영역으로 할당될 수 있다. 파셜 플래시 트랜슬레이션 레이어(FTL1)는 스토리지 액세스 동작과 연관된 논리 블록 어드레스에 매핑되는 물리 블록 어드레스를 제공할 수 있다.
도 15, 16 및 17은 본 발명의 실시예들에 따른 버츄얼 머신 기반 가상화 시스템의 가상화 환경의 계층 구조의 실시예들을 나타내는 도면들이다.
도 15, 16 및 17을 참조하면, 가상화 환경은 유저 스페이스에서 동작하는 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3)을 포함하고 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3) 상에서 동작하는 애플리케이션들을 포함할 수 있다. 예를 들어, 제1 게스트 운영 체제(GOS1) 상에서 애플리케이션들(APP11, APP12)이 동작하고, 제2 게스트 운영 체제(GOS2) 상에서 애플리케이션들(APP21, APP22)이 동작하고, 제3 게스트 운영 체제(GOS3) 상에서 애플리케이션들(APP31, APP32)이 동작할 수 있다. 게스트 운영 체제들의 개수 및 각각의 게스트 운영 체제 상에서 동작하는 애플리케이션들의 개수는 다양하게 결정될 수 있다.
하이퍼바이저(HPVS)는 제1 타입 및 제2 타입의 2개의 큰 카테고리들로 분류될 수 있다. 도 15는 제1 타입의 하이퍼바이저(HPVS)를 나타내고, 도 16 및 17은 제2 타입의 하이퍼바이저(HPVS)를 나타낸다. 제1 타입의 하이퍼바이저(HPVS)는 스탠드얼로운(standalone) 하이퍼바이저로 칭할 수 있고, 제2 타입의 하이퍼바이저(HPVS)는 호스티드(hosted) 하이퍼바이저로 칭할 수 있다. 대표적인 오픈소스 하이퍼바이저로서 제1 타입의 Xen 및 제2 타입의 KVM이 있다.
도 15를 참조하면, 제1 타입의 하이퍼바이저(HPVS)는 시스템 하드웨어(SYSHW) 상에서 동작하고 시스템 하드웨어(SYSHW)에 대한 전적인 제어(full control)를 갖는다. 이 경우, 가상화 계층 구조에서 호스트 운영체제는 존재하지 않고, 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3)들 중 하나가 호스트 운영체제와 유사한 기능을 가질 수도 있다. 애플리케이션들은 제1 타입의 하이퍼바이저(HPVS) 상에서 동작할 수 있다.
제2 타입의 하이퍼바이저(HPVS)는, 도 16에 도시된 바와 같이 호스트 운영체제(HOS) 상에서 동작하거나, 도 17에 도시된 바와 같이 호스트 운영체제(HOS)에 포함될 수 있다. 호스트 운영체제(HOS)는 시스템 하드웨어(SYSHW)에 대한 전적인 제어(full control)를 갖는다. 호스트 운영체제(HOS)는 시스템 하드웨어(SYSHW) 상에서 동작하고 애플리케이션들은 호스트 운영체제(HOS) 상에서 동작할 수 있다.
도 18 및 19는 본 발명의 실시예들에 따른 본 발명의 실시예들에 따른 가상화 시스템의 휘발성 메모리 장치에 대한 메모리 액세스 동작을 위한 2-스테이지 어드레스 트랜슬레이션을 나타내는 도면들이다.
도 17 및 18을 참조하면, 2-스테이지 어드레스 트랜슬레이션은 가상 어드레스(VA)를 버츄얼 머신의 버츄얼 메모리의 중간 물리 어드레스(IPA)로 변환하는 제1 스테이지 어드레스 트랜슬레이션 및 중간 물리 어드레스(IPA)를 메모리 장치(MEM)의 물리 어드레스(PA)로 변환하는 제2 어드레스 트랜슬레이션을 포함한다.
가상 어드레스(VA)는 가상 어드레스 공간(SVA) 상의 위치를 나타내고, 중간 물리 어드레스(IPA)는 중간 물리 어드레스 공간(SIPA)의 위치를 나타내고, 물리 어드레스(PA)는 메모리 장치(MEM)의 메모리 영역의 실제의 물리적 위치를 나타낸다.
복수의 버츄얼 유닛들, 예를 들어, 복수의 게스트 운영 체제들(GOS1, GOS2)의 각각은, 도 14를 참조하여 설명한 바와 같이, 버츄얼 메모리 관리 유닛(vGMMU)을 포함할 수 있다. 버츄얼 메모리 관리 유닛(vGMMU)은 복수의 게스트 운영 체제들(GOS1, GOS2)에 각각 상응하는 게스트 가상 어드레스 공간들(SVA1, SVA2)의 가상 어드레스(VA)와 게스트 중간 물리 어드레스 공간들(SIPA1, SIPA2)의 중간 물리 어드레스(IPA) 사이의 매핑을 관리할 수 있다.
버츄얼 메모리 관리 유닛(vGMMU)에 의해 관리되는 매핑 정보는 제1 스테이지 트랜슬레이션 테이블(TTAB1)에 저장되고 제1 스테이지 트랜슬레이션 테이블(TTAB1)은 휘발성 메모리 장치(MEM)에 대한 액세스를 위해 참조된다.
도 17에는 도시의 편의상 게스트 가상 어드레스 공간들(SVA1, SVA2)이 서로 공간적으로 분리되고 게스트 중간 물리 어드레스 공간들(SIPA1, SIPA2)이 서로 공간적으로 분리되는 것을 도시하고 있다. 복수의 게스트 운영 체제들(GOS1, GOS2)은 서로 독립적으로 동작하기 때문에 어드레스 공간의 중첩 여부는 고려될 필요가 없다.
한편, 도 14를 참조하여 설명한 바와 같이, 하이퍼바이저(HPVS)는 버츄얼 메모리 관리 유닛(vHMMU)을 포함할 수 있다. 버츄얼 메모리 관리 유닛(vHMMU)은 복수의 게스트 운영 체제들(GOS1, GOS2)에게 휘발성 메모리 장치(MEM)의 게스트 메모리 영역들(MR1, MR2)을 할당할 수 있다. 게스트 메모리 영역들(MR1, MR2)은 공간적으로 중첩되지 않도록 할당될 수 있다. 하이퍼바이저(HPVS)는 복수의 게스트 운영체제들(GOS1, GOS2)의 메모리 사용 상태를 모니터링하여 적응적으로 게스트 메모리 영역들(MR1, MR2)을 할당할 수 있다. 게스트 메모리 영역들(MR1, MR2)에는 버츄얼 머신들(VM1, VM2)에 각각 상응하는 파셜 매핑 테이블들(MTAB1, MTAB2)이 로딩될 수 있다.
제1 게스트 운영 체제(GOS1)는 제1 게스트 메모리 영역(MR1)만을 액세스할 수 있고, 제2 게스트 운영 체제(GOS2)는 제2 게스트 메모리 영역(MR2)만을 액세스할 수 있다. 결과적으로, 하이퍼바이저(HPVS)는 복수의 게스트 운영 체제들(GOS1, GOS2) 사이의 메모리 충돌을 방지할 수 있도록 공간적인 격리(spatial isolation)을 제공할 수 있다.
버츄얼 메모리 관리 유닛(vHMMU)은 게스트 중간 물리 어드레스 공간들(SIPA)의 중간 물리 어드레스(IPA)와 할당된 게스트 메모리 영역들(MR1, MR2)의 물리 어드레스 사이의 매핑을 관리할 수 있다.
버츄얼 메모리 관리 유닛(vHMMU)에 의해 관리되는 매핑 정보는 제2 스테이지 트랜슬레이션 테이블(TTAB2)에 저장되고 제2 스테이지 트랜슬레이션 테이블(TTAB2)은 메모리 장치(400)에 대한 액세스를 위해 참조된다.
도 19를 참조하면, 어드레스 매핑 정보를 포함하는 제1 스테이지 트랜슬레이션 테이블(TTAB1) 및 제2 스테이지 트랜슬레이션 테이블(TTAB2)이 휘발성 메모리 장치(MEM)에 저장될 수 있다. 휘발성 메모리 장치(MEM)에 저장된 제1 스테이지 트랜슬레이션 테이블(TTAB1) 및 제2 스테이지 트랜슬레이션 테이블(TTAB2)은 액세스 동작시 어드레스 트랜슬레이션을 위해 참조될 수 있다.
어드레스 트랜슬레이션의 속도 및 효율을 향상시키기 위해서 가상화 시스템은 도 19에 도시된 바와 같이 하드웨어로 구현된 메모리 관리 유닛들(MMU1, MMU2)을 포함할 수 있다. 메모리 관리 유닛들(MMU1, MMU2)은 도 1의 메모리 관리 회로(40)에 포함될 수 있다.
제1 메모리 관리 유닛(MMU1)은 제1 스테이지 트랜슬레이션 테이블(TTAB1)의 어드레스 매핑 정보에 기초하여 메모리 장치에 대한 액세스 동작을 위한 가상 어드레스(VA)를 중간 물리 어드레스(IPA)로 변환하는 제1 스테이지 어드레스 트랜슬레이션을 수행할 수 있다.
제2 메모리 관리 유닛(MMU2)은 제2 스테이지 트랜슬레이션 테이블(TTAB2)의 어드레스 매핑 정보에 기초하여 제1 메모리 관리 유닛(MMU1)으로부터 전달되는 중간 물리 어드레스(IPA)를 물리 어드레스(PA)로 변환하는 제2 스테이지 어드레스 트랜슬레이션을 수행할 수 있다.
제1 메모리 관리 유닛(MMU1) 및/또는 제2 메모리 관리 유닛(MMU2)은 어드레스 트랜슬레이션의 속도 및 효율을 더욱 향상하기 위하여 변환 색인 버퍼(translation look aside buffer)(TLB)를 포함할 수 있다. 변환 색인 버퍼(TLB)에는 최근에 참조되는 어드레스 매핑 정보 및/또는 빈번하게 참조되는 어드레스 매핑 정보가 저장될 수 있다.
도 20은 본 발명의 실시예들에 따른 가상화 시스템의 매핑 정보의 로딩 동작 및 백업 동작을 나타내는 도면이다.
도 20을 참조하면, 비휘발성 메모리 장치(NVM)의 스토리지 영역은 메타 데이터를 저장하기 위한 메타 데이터 영역 및 유저 데이터를 저장하기 위한 유저 데이터 영역을 포함할 수 있다.
메타 데이터는 호스트 장치의 요청에 의해 비휘발성 메모리 장치(NVM)에 저장되는 유저 데이터와 구분되며, 유저 데이터 또는 비휘발성 메모리 장치(NVM)를 관리하기 위하여 스토리지 장치의 펌웨어에 의해 생성되고 관리되는 데이터이다. 메타 데이터는 호스트 장치의 논리 블록 어드레스 및 비휘발성 메모리(NVM)의 물리 블록 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블을 포함할 수 있다. 또한, 메타 데이터는 비휘발성 메모리 장치(NVM)의 메모리 공간을 관리하기 위한 그 밖의 정보들을 포함할 수 있다. 도 20에 도시된 바와 같이, 전술한 파셜 매핑 테이블들(MTAB1~MTAB3)은 메타 데이터 영역에 저장되고, 전술한 유닛 스토리지 영역들(SR1~SR3)은 유저 데이터 영역에 설정될 수 있다.
도 1 및 20을 참조하면, 버츄얼 유닛 매니저(VUMNG)는 가상화 시스템(10)의 부팅시 복수의 버츄얼 유닛들(VU1~VU3)에 각각 상응하는 복수의 파셜 매핑 테이블들(MTAB1~MTAB3)을 비휘발성 메모리 장치(NVM)로부터 휘발성 메모리 장치(MEM)의 복수의 유닛 메모리 영역들(MR1~MR3)로 각각 로딩할 수 있다.
전술한 바와 같이, 각각의 버츄얼 유닛(VUi)(i=1, 2, 3)에 상응하는 각각의 파셜 매핑 테이블(MTABi)은, 각각의 버츄얼 유닛(VUi)의 논리 블록 어드레스 및 각각의 유닛 스토리지 영역(SR1)의 물리 블록 어드레스의 매핑 관계를 포함한다.
각각의 버츄얼 유닛(VUi)은, 각각의 버츄얼 유닛(VUi)에 상응하는 각각의 유닛 메모리 영역(MRi)에 저장된 각각의 파셜 매핑 테이블(MTABi)에 기초하여 플래시 트랜슬레이션 레이어 동작을 수행할 수 있다.
한편, 가상화 시스템(10)의 파워 오프시, 복수의 버츄얼 유닛들(VU1~VU3)에 각각 상응하는 복수의 파셜 매핑 테이블들(MTAB1~MTAB3)을 휘발성 메모리 장치(MEM)의 복수의 유닛 메모리 영역들(MR1~MR3)로부터 비휘발성 메모리 장치(NVM)로 각각 백업할 수 있다.
한편, 휘발성 메모리 장치(MEM)에 저장된 파셜 매핑 테이블들(MTAB1~MTAB3)은 가상화 시스템(10)의 동작 중에 변경될 수 있으며, 휘발성 메모리 장치(MEM) 및 비휘발성 메모리 장치(NVM)에 각각 저장된 파셜 매핑 테이블들(MTAB1~MTAB3)의 일관성(consistency) 유지를 위하여 당업자들에게 잘 알려져 있는 다양한 저널링(journaling) 기법이 이용될 수 있다.
도 21은 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 가상화 시스템을 나타내는 블록도이다.
도 21을 참조하면, 가상화 시스템(900)은 호스트 장치(900) 및 스토리지 장치(920)를 포함할 수 있다. 스토리지 장치(920)는 스토리지 컨트롤러(100) 및 비휘발성 메모리 장치(400)를 포함할 수 있다. 예를 들어, 스토리지 장치(920)는 솔리드 스테이트 드라이브(SSD, Solid State Drive), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 유니버셜 플래시 스토리지(UFS, universal flash storage) 장치 등일 수 있다.
호스트 장치(910)는 프로세서(CPU) 및 휘발성 메모리 장치(MEM)를 포함할 수 있다. 스토리지 장치(920)는 호스트 장치(910)와 함께 전자 장치에 내장(embedded)될 수 있고, 탈부착 방식으로 호스트 장치(910)를 포함하는 전자 장치에 전기적으로 연결될 수도 있다.
호스트 장치(910)는 스토리지 컨트롤러(100)에 스토리지 액세스 요청, 즉 리퀘스트(REQ) 및 어드레스(ADDR)를 전송할 수 있으며, 스토리지 컨트롤러(100)와 데이터(DTA)를 주고 받을 수 있다. 스토리지 컨트롤러(100)는 호스트 장치(910)에 스토리지 액세스 요청(REQ)에 대한 응답(RSND)을 전송할 수 있다. 스토리지 액세스 요청(REQ)은 데이터 독출 요청, 데이터 기입 요청 및 소거 요청 등을 포함할 수 있다. 즉, 스토리지 액세스 동작은 독출 동작, 기입 동작 및 소거 동작 등을 포함할 수 있다.
스토리지 컨트롤러(100)는 호스트 장치(910)의 리퀘스트(REQ)에 응답하여 비휘발성 메모리 장치(400)를 제어할 수 있다. 스토리지 컨트롤러(100)는 비휘발성 메모리 장치(400)에 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL) 등을 제공함으로써, 비휘발성 메모리 장치(400)에 대한 독출 동작, 기입 동작 및 소거 동작을 수행할 수 있다. 기입 동작은 프로그램 동작이라 부를 수 있다.
예를 들어, 스토리지 컨트롤러(100)는 호스트 장치(910)로부터 수신한 데이터 독출 요청에 응답하여 비휘발성 메모리 장치(400)에 저장된 데이터(DTA)를 독출하거나, 호스트 장치(910)로부터 수신한 데이터 기입 요청에 응답하여 비휘발성 메모리 장치(400)에 대한 데이터(DTA)를 기입하도록 비휘발성 메모리 장치(400)를 제어할 수 있다. 또한, 호스트 장치(910)로부터 수신한 소거 요청에 응답하여 비휘발성 메모리 장치(400)에 저장된 데이터(DTA)를 소거하도록 비휘발성 메모리 장치(400)를 제어할 수 있다. 비휘발성 메모리 장치(400)는 스토리지 컨트롤러(100)에 코맨드(CMD)에 대한 응답(RSND)을 전송할 수 있다.
비휘발성 메모리 장치(400)는 플래시(flash) 메모리, MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 및 ReRAM(Resistive RAM) 등과 같은 하나 이상의 비휘발성 메모리들(NVM)로 구현될 수 있다. 비휘발성 메모리 장치(400)는 복수의 채널들을 통하여 스토리지 컨트롤러(100)에 연결될 수 있다. 이하에서는, 설명의 편의상 비휘발성 메모리 장치(400)는 낸드(NAND) 플래시 메모리 장치로 예시하여 설명될 수 있다.
스토리지 컨트롤러(100)는 메타 데이터를 관리하는 메타 데이터 매니저(200)를 포함할 수 있다. 메타 데이터는 호스트 장치(910)의 논리 블록 어드레스를 비휘발성 메모리(400)의 물리 블록 어드레스(또는 물리 페이지 넘버) 사이의 매핑 관계를 나타내는 매핑 테이블을 포함할 수 있다. 또한, 메타 데이터는 비휘발성 메모리 장치(400)의 메모리 공간을 관리하기 위한 그 밖의 정보들을 포함할 수 있다.
메타 데이터는 스토리지 시스템(900)의 파워-온시에 비휘발성 메모리 장치(400)로부터 독출되어 호스트 장치(910)의 휘발성 메모리 장치(MEM)로 로딩될 수 있다. 휘발성 메모리 장치(MEM)는, 예를 들어 디램(DRAM), 에스램(SRAM)과 같은 휘발성 메모리를 포함할 수 있다. 비휘발성 메모리 장치(400)에 저장되는 메타 데이터를 비휘발성 메타 데이터(NMDT)라 할 수 있고, 휘발성 메모리 장치(MEM)에 저장되는 메타 데이터를 펌웨어 메타 데이터(FMDT)라 할 수 있다. 펌웨어 메타 데이터(FMDT)는 가상화 시스템(900)의 동작 중에 변경될 수 있으며, 펌웨어 메타 데이터(FMDT)와 비휘발성 메타 데이터(NVMDT)의 일관성(consistency) 유지를 위하여 저널링(journaling) 기법이 이용될 수 있다.
스토리지 컨트롤러(100)는 메타 데이터 매니저(200)를 포함할 수 있다. 스토리지 장치(1200)의 파워-온 과정에서, 메타 데이터 매니저(200)는 비휘발성 메모리 장치(400)에 저장된 비휘발성 메타 데이터(NVMDT)에 기초하여 펌웨어 메타 데이터들(FMDT)을 호스트 장치(910)로 제공할 수 있다.
전술한 바와 같이, 프로세서(CPU)는 복수의 버츄얼 유닛들(VM1, VM2) 및 버츄얼 유닛 매니저(VUMNG)를 포함하는 가상화 환경을 제공할 수 있다. 버츄얼 유닛 매니저(VUMNG)는 비휘발성 메모리 장치(400)의 물리 어드레스 공간에 복수의 버츄얼 유닛들(VU1, VU2)에 각각 상응하는 복수의 유닛 스토리지 영역들(SR1, SR2)을 할당할 수 있다. 각각의 버츄얼 유닛(VUi)(i=1, 2)은, 각각의 버츄얼 유닛(VUi)의 논리 블록 어드레스를 각각의 버츄얼 유닛(VUi)에게 할당된 각각의 유닛 스토리지 영역(SRi)의 물리 블록 어드레스로 매핑할 수 있다. 전술한 바와 같이, 복수의 버츄얼 유닛들(VM1, VM2)은 내부에서 플래시 트랜슬레이션 레이어 동작을 분산하여 수행할 수 있다.
도 22는 도 21의 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 22를 참조하면, 스토리지 컨트롤러(100)는 프로세서(110), 버퍼 메모리(BUFF)(140), 메타 데이터 매니저(200), 호스트 인터페이스(HOST INTERFACE 151)(120), ECC(Error Correction Code) 엔진(170), 메모리 인터페이스(MIF)(150), AES(Advanced Encryption Standard) 엔진(180) 및 이들을 전기적으로 연결하는 내부 버스(160)를 포함할 수 있다.
프로세서(110)는 호스트 장치(예를 들어, 도 21의 910)로부터 호스트 인터페이스(120)를 통하여 수신된 코맨드에 응답하여 스토리지 컨트롤러(100)의 동작을 제어할 수 있다. 예를 들어, 프로세서(110)는 스토리지 장치(예를 들어, 도 21의 920)의 동작을 제어하며, 스토리지 장치(920)를 구동하기 위한 펌웨어(Firmware)를 채용하여 각각의 구성들을 제어할 수 있다.
버퍼 메모리(140)는 프로세서(110)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있다. 예를 들어, 버퍼 메모리(140)는 SRAM, DRAM 등과 같은 휘발성 메모리로 구현될 수 있다.
메타 데이터 매니저(200)는 메타 데이터를 관리하고 비휘발성 메모리 장치(400)에 저장된 비휘발성 메타 데이터(NVMDT)에 기초하여 펌웨어 메타 데이터들(FMDT)을 호스트 장치(910)로 제공할 수 있다.
에러 정정을 위한 ECC 엔진(170)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
호스트 인터페이스(120)는 호스트 장치(1100)와 스토리지 컨트롤러(100) 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(120)는 호스트 장치(1100)의 버스 포맷(bus format)에 대응하여 스토리지 컨트롤러(100)와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 호스트 장치(1100)의 버스 포맷은 SCSI 또는 SAS일 수 있다. 다른 실시예에서, 호스트 장치(200)의 버스 포맷은 USB, PCIe(peripheral component interconnect express), ATA, PATA, SATA, NVMe 등일 수 있다.
메모리 인터페이스(150)는 비휘발성 메모리 장치(예를 들어, 도 21의 400)와 데이터를 교환할 수 있다. 메모리 인터페이스(150)는 데이터를 비휘발성 메모리 장치(400)에 전송할 수 있고, 비휘발성 메모리 장치(400)로부터 독출된 데이터를 수신할 수 있다. 예를 들어, 메모리 인터페이스(150)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
AES 엔진(180)은 스토리지 컨트롤러(100)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다. 상세하게 도시하지는 않았으나, AES 엔진(180)은 암호화 모듈 및 복호화 모듈을 포함할 수 있다. 실시예에 따라서, 상기 암호화 모듈 및 상기 복호화 모듈은 서로 별개의 모듈로 구현될 수도 있고 하나의 모듈로 구현될 수도 있다.
도 23은 도 21의 스토리지 장치에 포함되는 비휘발성 메모리 장치의 일 실시예를 나타내는 블록도이다.
도 23을 참조하면, 비휘발성 메모리 장치(800)는 메모리 셀 어레이(500), 어드레스 디코더(530), 페이지 버퍼 회로(510), 데이터 입출력 회로(520), 제어 회로(550) 및 전압 생성기(560)를 포함할 수 있다. 일 실시예에서, 비휘발성 메모리 장치(400)(800)는 주변 회로가 형성되는 주변 영역(PREG) 위에 메모리 셀 어레이가 형성되는 COP(Cell Over Periphery) 구조를 가질 수 있다. 이 때, 메모리 셀 어레이(500)는 셀 영역(CREG)에 형성되고, 어드레스 디코더(530), 페이지 버퍼 회로(510), 데이터 입출력 회로(520), 제어 회로(550) 및 전압 생성기(560)는 주변 회로 영역(PREG)에 형성될 수 있다.
메모리 셀 어레이(500)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인(GSL)을 통해 어드레스 디코더(530)와 연결될 수 있다. 또한, 메모리 셀 어레이(500)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(510)와 연결될 수 있다. 메모리 셀 어레이(500)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 메모리 셀 어레이(500)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(500)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 셀 스트링들, 예를 들어, 수직 메모리 낸드 스트링들을 포함할 수 있다.
제어 회로(550)는 외부의 메모리 컨트롤러로부터 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드 신호(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(10)의 소거 루프, 프로그램 루프 및 독출 동작을 제어할 수 있다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함할 수 있고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다. 여기서 독출 동작은 노멀 독출 동작과 데이터 리커버리 독출 동작을 포함할 수 있다.
예를 들어, 제어 회로(550)는 커맨드 신호(CMD)에 기초하여 전압 생성기(560)를 제어하기 위한 제어 신호들(CTL) 및 페이지 버퍼 회로(510)를 제어하기 위한 제어 신호들(PBC)을 생성하고, 어드레스 신호(ADDR)에 기초하여 행 어드레스(R_ADDR) 및 열 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(550)는 행 어드레스(R_ADDR)를 어드레스 디코더(530)에 제공하고, 열 어드레스(C_ADDR)를 데이터 입출력 회로(520)에 제공할 수 있다.
어드레스 디코더(530)는 복수의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(500)와 연결될 수 있다.
프로그램 동작 또는 독출 동작시, 어드레스 디코더(530)는 제어 회로(550)로부터 제공되는 행 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WL) 중의 하나를 선택 워드 라인으로 결정하고, 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
또한, 프로그램 동작 또는 독출 동작시, 어드레스 디코더(530)는 제어 회로(550)로부터 제공되는 행 어드레스(R_ADDR)에 기초하여 복수의 스트링 선택 라인들(SSL) 중의 하나를 선택 스트링 선택 라인으로 결정하고, 나머지 스트링 선택 라인들을 비선택 스트링 선택 라인들로 결정할 수 있다.
또한, 프로그램 동작 또는 독출 동작 시, 어드레스 디코더(530)는 제어 회로(550)로부터 제공되는 행 어드레스(R_ADDR)에 기초하여 복수의 접지 선택 라인들(GSL) 중의 하나를 선택 접지 선택 라인으로 결정하고, 나머지 접지 선택 라인들을 비선택 접지 선택 라인들로 결정할 수 있다.
전압 생성기(560)는 제어 회로(550)로부터 제공되는 제어 신호들(CTL)에 기초하여 비휘발성 메모리 장치(30)의 동작에 필요한 워드 라인 전압들(VWL)을 생성할 수 있다. 전압 생성기(560)로부터 생성되는 워드 라인 전압들(VWL)은 어드레스 디코더(530)를 통해 복수의 워드 라인들(WL)에 구동 전압들로서 인가될 수 있다.
예를 들어, 소거 동작 시, 전압 생성기(560)는 메모리 블록의 웰 및/또는 공통 소스 라인에 소거 전압을 인가하고 소거 어드레스에 기초하여 메모리 블록의 모든 워드라인들 또는 일부의 서브 블록에 해당하는 워드 라인들에 소거 허용 전압(예를 들어, 접지 전압)을 인가할 수 있다. 소거 검증 동작 시, 전압 생성기(560)는 하나의 메모리 블록의 모든 워드라인들에 소거 검증 전압을 인가하거나 워드라인 단위로 소거 검증 전압을 인가할 수 있다.
예를 들어, 프로그램 동작시, 전압 생성기(560)는 선택 워드 라인에 프로그램 전압을 인가하고, 비선택 워드 라인들에는 프로그램 패스 전압을 인가할 수 있다. 또한 프로그램 검증 동작시, 전압 생성기(560)는 선택 워드 라인에 프로그램 검증 전압을 인가하고, 비선택 워드 라인들에는 검증 패스 전압을 인가할 수 있다.
또한, 노멀 독출 동작시, 전압 생성기(560)는 선택 워드 라인에 독출 전압을 인가하고, 비선택 워드 라인들에는 독출 패스 전압을 인가할 수 있다. 또한 데이터 리커버리 독출 동작시, 전압 생성기(560)는 선택 워드 라인에 인접한 워드 라인에 독출 전압을 인가하고, 선택 워드 라인에는 리커버리 독출 전압을 인가할 수 있다.
페이지 버퍼 회로(510)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(500)와 연결될 수 있다. 페이지 버퍼 회로(510)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에 있어서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에 있어서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다. 페이지 버퍼 회로(510)는 프로그램 동작시 선택된 페이지에 프로그램될 데이터를 임시로 저장하고, 독출 동작시 선택된 페이지로부터 독출된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(520)는 데이터 라인들(DL)을 통해 페이지 버퍼 회로(510)와 연결될 수 있다. 프로그램 동작시, 데이터 입출력 회로(520)는 메모리 컨트롤러(20)로부터 프로그램 데이터(DATA)를 수신하고, 제어 회로(550)로부터 제공되는 열 어드레스(C_ADDR)에 기초하여 프로그램 데이터(DATA)를 페이지 버퍼 회로(510)에 제공할 수 있다. 독출 동작시, 데이터 입출력 회로(520)는 제어 회로(550)로부터 제공되는 열 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(510)에 저장된 독출 데이터(DATA)를 상기 메모리 컨트롤러(20)에 제공할 수 있다.
또한, 페이지 버퍼 회로(510)와 입출력 회로(520)는 메모리 셀 어레이(500)의 제1 저장 영역으로부터 데이터를 독출하고, 독출된 데이터를 메모리 셀 어레이(500)의 제2 저장 영역에 기입할 수 있다. 즉, 페이지 버퍼 회로(510)와 입출력 회로(520)는 카피-백(copy-back) 동작을 수행할 수 있다. 페이지 버퍼 회로(510)와 입출력 회로(520)는 제어 회로(550)에 의하여 제어될 수 있다.
도 24는 도 23의 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이를 나타내는 블록도이고, 도 25는 도 24의 메모리 셀 어레이에 포함되는 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 24에 도시된 바와 같이, 메모리 셀 어레이(500)는 복수의 메모리 블록들(BLK1~BLKz)을 포함할 수 있다. 메모리 블록들(BLK1~BLKz)은 어드레스 디코더(530)에 의해 선택된다. 예를 들면, 어드레스 디코더(530)는 메모리 블록들(BLK1~BLKz) 중 블록 어드레스에 대응하는 메모리 블록을 선택할 수 있다.
도 25에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향(D3)으로 형성될 수 있다.
도 25를 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 셀 스트링들, 즉 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 25에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명의 실시예들은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 상응하는 게이트 라인들(GTL1, GTL2, ..., GTL8)에 각각 연결될 수 있다. 게이트 라인들(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, GTL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 25에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명의 실시예들은 이에 한정되지 않는다.
도 26은 본 발명의 실시예들에 따른 가상화 시스템의 컨테이너 오케스트레이션 플랫폼 구조의 일 예를 나타내는 블록도이다.
도 26에 도시된 바와 같이, 가상화 시스템은 컴퓨터 자원 가상화 서비스의 제공시 컨테이너(container)의 생성, 배치, 실행, 실행 중지, 삭제 등의 컨테이너 관리 내지 오케스트레이션(orchestration)을 수행하기 위해 마스터 노드(MND)(80)와 워커 노드들(WND1~WND3)(80)을 포함할 수 있다.
가상화 시스템이 제공하는 컨테이너는 사용자의 워크로드(Workload)를 실행하는 주체로서, 도커(Docker), 리눅스 컨테이너(LXC), 로켓(Rocket), 또는 클린 컨테이너(Clean Container)일 수 있다. 또한, 가상화 시스템은 이러한 컨테이너의 관리 내지 오케스트레이션을 수행하기 위해 컨테이너 오케스트레이션 플랫폼을 포함할 수 있다.
일 실시예에서, 가상화 시스템이 컨테이너 오케스트레이션 플랫폼으로서 구글에 의해 설계되고 리눅스 재단에 의해 관리되고 있는 오픈 소스 플랫폼인 쿠버네티스(Kubernetes)를 포함하고, 컨테이너로서 도커(Docker) 컨테이너를 제공하는 것으로 설명될 것이나, 본 발명의 기술적 사상은 다른 컨테이너 오케스트레이션 플랫폼이나 다른 컨테이너를 이용하는 가상화 시스템에 적용될 수 있음은 물론이다. 파드(pod)는, 적어도 하나의 컨테이너를 포함하는 컨테이너 집합으로서, 컨테이너 스케줄링의 기본 단위를 이루는 컨테이너 집합을 지칭한다.
마스터 노드(70)는 복수의 워커 노드들(80)로 이루어진 클러스터 전체를 관리하도록 구성된다. 이를 위해, 마스터 노드(70)는 API 서버(72), ETCD(74), 컨트롤러 매니저(CTRMNG)(76), 스케줄러(78), 등을 포함할 수 있다.
워커 노드(80)는, 마스터 노드(70)의 명령을 수신하여 실제 작업을 수행하도록 구성된다. 이를 위해, 워커 노드(80)는 쿠블릿(Kubelet)(82), 프록시(Proxy 또는 Kube-proxy)(84) 등을 포함하며, 이러한 워커 노드(80)에는 적어도 하나의 컨테이너(CNT)를 포함하는 적어도 하나의 파드(86)가 배치된다.
도 27은 본 발명의 실시예들에 따른 컨테이너 기반 가상화 시스템을 나타내는 블록도이다. 이하, 도 10과 중복되는 설명을 생략한다.
도 26을 참조하여 설명한 바와 같이, 복수의 컨테이너들은 하나 이상의 컨테이너들을 각각 포함되는 복수의 파드(pod)들로 그룹화될 수 있다. 이 경우, 각각의 파드에 포함되는 컨테이너들 중 하나의 컨테이너의 내부에서 상기 각각의 파드에 포함되는 컨테이너들의 전부에 대한 상기 플래시 트랜슬레이션 레이어 동작을 수행할 수 있다.
27을 참조하면, 제1 파드(POD1)는 제1 컨테이너(CNT1) 및 제2 컨테이너(CNT2)를 포함할 수 있다. 예를 들어, 제1 컨테이너(CNT1)만이 파셜 플래시 트랜슬레이션 레이어(FTL1)를 포함하고 제2 컨테이너(CNT2)는 파셜 플래시 트랜슬레이션 레이어를 포함하지 않을 수 있다. 제2 컨테이너(CNT2)는 파일 시스템(FS2)에서 제공되는 로직 블록 어드레스(LBA)를 제1 컨테이너(CNT1)의 파셜 플래시 트랜슬레이션 레이어(FTL1)로 전달할 수 있다. 파셜 플래시 트랜슬레이션 레이어(FTL1)는 제1 컨테이너(CNT1)의 파일 시스템(FS1) 및 제2 컨테이너(CNT2)의 파일 시스템(FS2)으로부터 제공되는 논리 블록 어드레스(LBA)에 매핑되는 물리 블록 어드레스(PBA)를 제공할 수 있다. 블록 디바이스 드라이버(BDRV1)는 파셜 플래시 트랜슬레이션 레이어(FTL1)로부터 제공되는 물리 블록 어드레스(PBA)에 기초하여 상기 스토리지 액세스 동작을 수행할 수 있다.
이와 같이, 가상화 시스템(13)은 플래시 트랜슬레이션 레이어 동작을 파드 단위로 분산하여 수행할 수 있다.
도 28은 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
도 28을 참조하면, 가상화 시스템(1000)은 시스템 온 칩(SOC)과 휘발성 메모리 장치(1130), 디스플레이 장치(LCD)(1152), 터치 패널(1154), 스토리지 장치(1170), 전력 관리 집적 회로(PMIC)(1200) 등을 포함할 수 있다. 시스템 온 칩(SOC)은 프로세서(CPU)(1110), 메모리 관리 회로(MMC)(1115), 메모리 컨트롤러(1120), 성능 제어기(PFMC)(1140), 사용자 인터페이스(UI) 컨트롤러(1150), 스토리지 인터페이스(1160), 다이렉트 메모리 액세스 기능 갖는 다이렉트 메모리 액세스 장치(DMAIP)(1180), 파워 관리 유닛(PMU)(1144), 클록 관리 유닛(CMU)(1146) 등을 포함할 수 있다. 가상화 시스템(1000)의 구성 요소들은 도시된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 가상화 시스템(1000)은 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록 등을 더 포함할 수 있다.
프로세서(1110)는 가상화 시스템(1000)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 프로세서(1110)는 휘발성 메모리 장치(1130)에 로드되는 운영 체제(OS)를 실행할 수 있다. 또한 프로세서(1110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 수 있다. 프로세서(1110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동 가능한 프로세서 코어(이하, 코어)들을 갖는 컴퓨팅 컴포넌트(Computing component)이다. 코어들 각각은 프로그램 명령들(Program Instructions)을 독립적으로 읽고 실행할 수 있다.
메모리 컨트롤러(1120)는 휘발성 메모리 장치(130)와 시스템 온 칩(SoC) 사이에서 인터페이싱을 제공한다. 메모리 컨트롤러(1120)는 프로세서(1110)나 다이렉트 메모리 액세스 장치(1180)의 요청에 따라 휘발성 메모리 장치(1130)를 액세스할 수 있다. 일 실시예에서, 휘발성 메모리 장치(1130)는 디램(DRAM)으로 구현될 수 있으며, 이 경우 메모리 컨트롤러(1120)는 디램 컨트롤러라 칭할 수 있다.
메모리 관리 회로(1115)는 프로세서(1110)의 휘발성 메모리 장치(1130)에 대한 코어 액세스 및 다이렉트 메모리 액세스 장치(1180)의 휘발성 메모리 장치(1130)에 대한 다이렉트 액세스를 관리할 수 있다.
휘발성 메모리 장치(1130)에는 부팅시에 운영 체제(OS)나 기본 응용 프로그램들(Application Program)이 로드될 수 있다. 예를 들면, 가상화 시스템(1000)의 부팅시에 스토리지 장치(1170)에 저장된 버츄얼 유닛 매니저(VUMNG) 및 복수의 버츄얼 유닛들(VU1, VU2)이 부팅 시퀀스에 의거하여 휘발성 메모리 장치(1130)로 로드될 수 있다.
전술한 바와 같이, 프로세서(1110)는 복수의 버츄얼 유닛들(VM1, VM2) 및 버츄얼 유닛 매니저(VUMNG)를 포함하는 가상화 환경을 제공할 수 있다. 버츄얼 유닛 매니저(VUMNG)는 스토리지 장치(1170)에 포함되는 비휘발성 메모리 장치의 물리 어드레스 공간에 복수의 버츄얼 유닛들(VU1, VU2)에 각각 상응하는 복수의 유닛 스토리지 영역들(SR1, SR2)을 할당할 수 있다. 각각의 버츄얼 유닛(VUi)(i=1, 2)은, 각각의 버츄얼 유닛(VUi)의 논리 블록 어드레스를 각각의 버츄얼 유닛(VUi)에게 할당된 각각의 유닛 스토리지 영역(SRi)의 물리 블록 어드레스로 매핑할 수 있다. 전술한 바와 같이, 복수의 버츄얼 유닛들(VM1, VM2)은 내부에서 플래시 트랜슬레이션 레이어 동작을 분산하여 수행할 수 있다.
성능 제어기(1140)는 운영 체제(OS)의 커널(Kernel)로부터 제공되는 제어 요청에 따라 시스템 온 칩(SOC)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 제어기(1140)는 시스템 온 칩(SOC)의 성능을 높이기 위해서 DVFS의 전력 레벨을 조정할 수 있다.
사용자 인터페이스 컨트롤러(1150)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 사용자 인터페이스 컨트롤러(1150)는 프로세서(1110)의 제어에 따라 액정 표시 장치(1152)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또는, 사용자 인터페이스 컨트롤러(1150)는 사용자가 요청한 데이터를 표시하도록 디스플레이 장치(1152)를 제어할 수 있다. 사용자 인터페이스 컨트롤러(1150)는 터치 패널(1154)과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.
스토리지 인터페이스(1160)는 프로세서(1110)의 요청에 따라 스토리지 장치(1170)를 액세스한다. 즉, 스토리지 인터페이스(1160)는 시스템 온 칩(SOC)과 스토리지 장치(1170) 사이의 인터페이스를 제공한다. 프로세서(1110)에 의해서 처리된 데이터가 스토리지 인터페이스(1160)를 통해 스토리지 장치(1170)에 저장될 수 있고, 스토리지 장치(1170)에 저장된 데이터는 스토리지 인터페이스(1160)를 통해 프로세서(1110)에 제공될 수 있다.
스토리지 장치(1170)는 가상화 시스템(1000)의 저장 매체(Storage Medium)로서 제공된다. 스토리지 장치(1170)는 응용 프로그램들(Application Program), 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 스토리지 장치(1170)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 스토리지 장치(1170)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 스토리지 장치(1710)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다.
다이렉트 메모리 액세스 장치(1180)는 멀티미디어 또는 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 아이피 또는 기능 블록(IP)으로 제공될 수 있다. 예를 들면, 다이렉트 메모리 액세스 장치 (1180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다.
시스템 인터커넥터(1190)는 시스템 온 칩(SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(1190)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 휘발성 메모리 장치(1130)이나 스토리지 장치(1170)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(1190)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
본 발명의 실시예들은 가상화 환경이 적용된 임의의 장치 및 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기, 서버 시스템, 클라우드 시스템, 자율 주행장치 등과 같은 전자 기기 및 시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 비휘발성 메모리 장치;
    가상화 환경을 제공하는 프로세서;
    상기 가상화 환경에서 각각 독립적으로 동작하고, 상기 비휘발성 메모리 장치에 대한 스토리지 액세스 동작과 연관된 논리 블록 어드레스를 상기 비휘발성 메모리 장치의 물리 블록 어드레스로 변환하는 플래시 트랜슬레이션 레이어 동작을 버츄얼 유닛의 내부에서 수행하는 복수의 버츄얼 유닛들; 및
    상기 가상화 환경에서 상기 복수의 버츄얼 유닛들을 제어하는 버츄얼 유닛 매니저를 포함하는 가상화 시스템.
  2. 제1 항에 있어서,
    상기 복수의 버츄얼 유닛들은 복수의 컨테이너들에 해당하고, 상기 버츄얼 유닛 매니저는 컨테이너 엔진에 해당하는 것을 특징으로 하는 가상화 시스템.
  3. 제1 항에 있어서,
    상기 복수의 버츄얼 유닛들은 복수의 버츄얼 머신들에 해당하고, 상기 버츄얼 유닛 매니저는 하이퍼바이저에 해당하는 것을 특징으로 하는 가상화 시스템.
  4. 제1 항에 있어서,
    상기 복수의 버츄얼 유닛들은,
    상기 가상화 환경의 유저 스페이스에 포함되고,
    상기 가상화 환경의 커널 스페이스를 경유하지 않고 상기 플래시 트랜슬레이션 레이어 동작에 의해 생성되는 물리 블록 어드레스를 상기 비휘발성 메모리 장치로 전달하는 것을 특징으로 하는 가상화 시스템.
  5. 제1 항에 있어서,
    상기 복수의 버츄얼 유닛들 중에서 에러가 발생한 버츄얼 유닛을 리부팅하는 동안에, 상기 복수의 버츄얼 유닛들 중에서 상기 에러가 발생한 버츄얼 유닛을 제외한 나머지 버츄얼 유닛들은 상기 스토리지 액세스 동작을 정상적으로 수행하는 것을 특징으로 하는 가상화 시스템.
  6. 제1 항에 있어서,
    상기 버츄얼 유닛 매니저는, 상기 비휘발성 메모리 장치의 물리 어드레스 공간에 상기 복수의 버츄얼 유닛들에 각각 상응하는 복수의 유닛 스토리지 영역들을 할당하고,
    상기 각각의 버츄얼 유닛은, 상기 각각의 버츄얼 유닛의 논리 블록 어드레스를 상기 각각의 버츄얼 유닛에게 할당된 각각의 유닛 스토리지 영역의 물리 블록 어드레스로 매핑하는 것을 특징으로 하는 가상화 시스템.
  7. 제6 항에 있어서,
    상기 버츄얼 유닛 매니저는,
    상기 복수의 버츄얼 유닛들의 상기 비휘발성 메모리 장치에 대한 스토리지 사용 상태를 모니터링하고,
    상기 사용 상태에 기초하여 상기 복수의 버츄얼 유닛들에 각각 할당되는 상기 복수의 유닛 스토리지 영역들의 사이즈들을 가변하는 것을 특징으로 하는 가상화 시스템.
  8. 제6 항에 있어서,
    상기 비휘발성 메모리 장치는 소거 동작의 최소 단위가 되는 복수의 메모리 블록들을 포함하고,
    상기 버츄얼 유닛 매니저는 메모리 블록 단위로 상기 복수의 유닛 스토리지 영역들을 각각 설정하는 것을 특징으로 하는 가상화 시스템.
  9. 제6 항에 있어서,
    상기 복수의 버츄얼 유닛들은,
    상기 복수의 유닛 스토리지 영역들에 대한 가비지 콜렉션 동작을 각각 독립적으로 수행하는 것을 특징으로 하는 가상화 시스템.
  10. 제6 항에 있어서,
    상기 각각의 버츄얼 유닛은,
    상기 스토리지 액세스 동작과 연관된 논리 블록 어드레스를 제공하는 파일 시스템;
    상기 각각의 버츄얼 유닛의 논리 블록 어드레스 및 상기 각각의 유닛 스토리지 영역의 물리 블록 어드레스의 매핑 관계를 포함하는 파셜 매핑 테이블을 관리하고, 상기 파셜 매핑 테이블에 기초하여 상기 파일 시스템으로부터 제공되는 상기 논리 블록 어드레스에 매핑되는 상기 물리 블록 어드레스를 제공하는 파셜 플래시 트랜슬레이션 레이어; 및
    상기 파셜 플래시 트랜슬레이션 레이어로부터 제공되는 상기 물리 블록 어드레스에 기초하여 상기 스토리지 액세스 동작을 수행하는 블록 디바이스 드라이버를 포함하는 것을 특징으로 하는 가상화 시스템.
  11. 제6 항에 있어서,
    상기 각각의 버츄얼 유닛은,
    상기 스토리지 액세스 동작과 연관된 논리 블록 어드레스를 제공하는 파일 시스템; 및
    상기 각각의 버츄얼 유닛의 논리 블록 어드레스 및 상기 각각의 유닛 스토리지 영역의 물리 블록 어드레스의 매핑 관계를 포함하는 파셜 매핑 테이블을 관리하고, 상기 파셜 매핑 테이블에 기초하여 상기 파일 시스템으로부터 제공되는 상기 논리 블록 어드레스에 매핑되는 상기 물리 블록 어드레스를 제공하는 파셜 플래시 트랜슬레이션 레이어를 포함하고,
    상기 버츄얼 유닛 매니저는,
    상기 가상화 환경의 유저 스페이스에 포함되고, 상기 복수의 버츄얼 유닛들로부터 제공되는 상기 물리 블록 어드레스에 기초하여 상기 스토리지 액세스 동작을 수행하는 블록 디바이스 드라이버를 포함하는 것을 특징으로 하는 가상화 시스템.
  12. 제6 항에 있어서,
    휘발성 메모리 장치를 더 포함하고,
    상기 버츄얼 유닛 매니저는, 상기 휘발성 메모리 장치의 물리 어드레스 공간에 상기 복수의 버츄얼 유닛들에 각각 상응하는 복수의 유닛 메모리 영역들을 할당하는 것을 특징으로 하는 가상화 시스템.
  13. 제12 항에 있어서,
    상기 버츄얼 유닛 매니저는, 상기 가상화 시스템의 부팅시 상기 복수의 버츄얼 유닛들에 각각 상응하는 복수의 파셜 매핑 테이블들을 상기 비휘발성 메모리 장치로부터 상기 휘발성 메모리 장치의 상기 복수의 유닛 메모리 영역들로 각각 로딩하고,
    상기 각각의 버츄얼 유닛에 상응하는 각각의 파셜 매핑 테이블은, 상기 각각의 버츄얼 유닛의 논리 블록 어드레스 및 상기 각각의 유닛 스토리지 영역의 물리 블록 어드레스의 매핑 관계를 포함하는 것을 특징으로 하는 가상화 시스템.
  14. 제13 항에 있어서,
    상기 각각의 버츄얼 유닛은, 상기 각각의 버츄얼 유닛에 상응하는 각각의 유닛 메모리 영역에 저장된 상기 각각의 파셜 매핑 테이블에 기초하여 상기 플래시 트랜슬레이션 레이어 동작을 수행하는 것을 특징으로 하는 가상화 시스템.
  15. 제13 항에 있어서,
    상기 가상화 시스템의 파워 오프시, 상기 복수의 버츄얼 유닛들에 각각 상응하는 복수의 파셜 매핑 테이블들을 상기 휘발성 메모리 장치의 상기 복수의 유닛 메모리 영역들로부터 상기 비휘발성 메모리 장치로 각각 백업하는 것을 특징으로 하는 가상화 시스템.
  16. 비휘발성 메모리 장치;
    휘발성 메모리 장치;
    가상화 환경을 제공하는 프로세서;
    상기 가상화 환경에서 각각 독립적으로 동작하고, 상기 비휘발성 메모리 장치에 대한 스토리지 액세스 동작과 연관된 논리 블록 어드레스를 상기 비휘발성 메모리 장치의 물리 블록 어드레스로 변환하는 플래시 트랜슬레이션 레이어 동작을 컨테이너의 내부에서 수행하는 복수의 컨테이너들; 및
    상기 가상화 환경에서 상기 복수의 컨테이너들을 제어하는 컨테이너 엔진을 포함하고,
    상기 컨테이너 엔진은, 상기 비휘발성 메모리 장치의 물리 어드레스 공간에 상기 복수의 컨테이너들에 각각 상응하는 복수의 유닛 스토리지 영역들을 할당하고,
    상기 각각의 컨테이너는, 상기 각각의 컨테이너의 논리 블록 어드레스를 상기 각각의 컨테이너에게 할당된 각각의 유닛 스토리지 영역의 물리 블록 어드레스로 변환하는 가상화 시스템.
  17. 제16 항에 있어서,
    상기 컨테이너 엔진은, 상기 휘발성 메모리 장치의 물리 어드레스 공간에 상기 복수의 컨테이너들에 각각 상응하는 복수의 유닛 메모리 영역들을 할당하고,
    상기 컨테이너 엔진은, 상기 가상화 시스템의 부팅시 상기 복수의 컨테이너들에 각각 상응하는 복수의 파셜 매핑 테이블들을 상기 비휘발성 메모리 장치로부터 상기 휘발성 메모리 장치의 상기 복수의 유닛 메모리 영역들로 각각 로딩하고,
    상기 각각의 컨테이너는, 상기 각각의 컨테이너에 상응하는 각각의 유닛 메모리 영역에 저장된 각각의 파셜 매핑 테이블에 기초하여 상기 플래시 트랜슬레이션 레이어 동작을 수행하는 것을 특징으로 하는 가상화 시스템.
  18. 제16 항에 있어서,
    상기 복수의 컨테이너들은 하나 이상의 컨테이너들을 각각 포함되는 복수의 파드(pod)들로 그룹화되고,
    각각의 파드에 포함되는 컨테이너들 중 하나의 컨테이너의 내부에서 상기 각각의 파드에 포함되는 컨테이너들의 전부에 대한 상기 플래시 트랜슬레이션 레이어 동작을 수행하는 것을 특징으로 하는 가상화 시스템.
  19. 복수의 버츄얼 유닛들 및 상기 복수의 버츄얼 유닛들을 제어하는 버츄얼 유닛 매니저를 포함하는 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법으로서,
    상기 버츄얼 유닛 매니저에 의해, 비휘발성 메모리 장치의 물리 어드레스 공간에 상기 복수의 버츄얼 유닛들에 각각 상응하는 복수의 유닛 스토리지 영역들을 할당하는 단계,
    상기 각각의 버츄얼 유닛에 의해, 상기 각각의 버츄얼 유닛의 논리 블록 어드레스를 상기 각각의 버츄얼 유닛에게 할당된 각각의 유닛 스토리지 영역의 물리 블록 어드레스로 변환하는 플래시 트랜슬레이션 레이어 동작을 수행하는 단계; 및
    상기 각각의 버츄얼 유닛으로부터 제공되는 상기 물리 블록 어드레스에 기초하여 상기 비휘발성 메모리 장치에 대한 스토리지 액세스 동작을 수행하는 단계를 포함하는 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법.
  20. 제19 항에 있어서,
    상기 버츄얼 유닛 매니저에 의해, 상기 휘발성 메모리 장치의 물리 어드레스 공간에 상기 복수의 버츄얼 유닛들에 각각 상응하는 복수의 유닛 메모리 영역들을 할당하는 단계;
    상기 버츄얼 유닛 매니저에 의해, 상기 가상화 시스템의 부팅시 상기 복수의 컨테이너들에 각각 상응하는 복수의 파셜 매핑 테이블들을 상기 비휘발성 메모리 장치로부터 상기 휘발성 메모리 장치의 상기 복수의 유닛 메모리 영역들로 각각 로딩하는 단계; 및
    상기 각각의 컨테이너에 의해, 상기 각각의 컨테이너에 상응하는 각각의 유닛 메모리 영역에 저장된 각각의 파셜 매핑 테이블에 기초하여 상기 플래시 트랜슬레이션 레이어 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법.
KR1020220048791A 2021-11-10 2022-04-20 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법 장치 KR20230068260A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP22197701.0A EP4180936B1 (en) 2021-11-10 2022-09-26 Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment
US17/953,685 US20230147952A1 (en) 2021-11-10 2022-09-27 Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment
CN202211384003.0A CN116107931A (zh) 2021-11-10 2022-11-07 虚拟化系统和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210153885 2021-11-10
KR20210153885 2021-11-10

Publications (1)

Publication Number Publication Date
KR20230068260A true KR20230068260A (ko) 2023-05-17

Family

ID=86547364

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220048791A KR20230068260A (ko) 2021-11-10 2022-04-20 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법 장치

Country Status (1)

Country Link
KR (1) KR20230068260A (ko)

Similar Documents

Publication Publication Date Title
US10339047B2 (en) Allocating and configuring persistent memory
US11397607B2 (en) Storage device and storage virtualization system
US7917689B2 (en) Methods and apparatuses for nonvolatile memory wear leveling
US9996282B2 (en) Method of operating data storage device and method of operating system including the same
US20120311237A1 (en) Storage device, storage system and method of virtualizing a storage device
KR102434170B1 (ko) 하이브리드 메모리 시스템
US10705747B2 (en) Latency-based storage in a hybrid memory system
CN110806837B (zh) 数据处理系统及其操作方法
US11762572B2 (en) Method of operating storage device and method of operating storage system using the same
KR102443593B1 (ko) 하이브리드 메모리 시스템
EP4180936B1 (en) Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment
JP2021149374A (ja) データ処理装置
CN116027965A (zh) 存储装置和电子系统
KR20230068260A (ko) 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법 장치
CN111309518B (zh) 存储器系统和存储器系统的操作方法
US20240168666A1 (en) Storage system and method of controlling operation of the same
US20240126435A1 (en) Storage system and method of data management of the same
WO2022061859A1 (en) Application restore based on volatile memory storage across system resets