KR20140015857A - 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법 - Google Patents

컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법 Download PDF

Info

Publication number
KR20140015857A
KR20140015857A KR1020120081553A KR20120081553A KR20140015857A KR 20140015857 A KR20140015857 A KR 20140015857A KR 1020120081553 A KR1020120081553 A KR 1020120081553A KR 20120081553 A KR20120081553 A KR 20120081553A KR 20140015857 A KR20140015857 A KR 20140015857A
Authority
KR
South Korea
Prior art keywords
virtual
memory
address
nonvolatile memory
controller
Prior art date
Application number
KR1020120081553A
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 KR1020120081553A priority Critical patent/KR20140015857A/ko
Priority to US13/951,491 priority patent/US9317440B2/en
Publication of KR20140015857A publication Critical patent/KR20140015857A/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
    • 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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric 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/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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
    • 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
    • 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
    • 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/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 불휘발성 메모리를 포함하는 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법에 관한 것이다. 본 발명의 가상 장치 제어 방법은, 가상화 요청을 수신하는 단계, 불휘발성 메모리의 제 1 부분을 가상 메모리로 할당하는 단계, 불휘발성 메모리의 제 2 부분을 가상 스토리지로 할당하는 단계, 그리고 할당된 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성하는 단계로 구성된다.

Description

컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법{COMPUTING DEVICE AND VIRTUAL DEVICE CONTROLLING METHOD FOR CONTROLLING VIRTUAL DEVICE BY COMPUTING SYSTEM}
본 발명은 컴퓨팅 장치에 관한 것으로, 더 상세하게는 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법에 관한 것이다.
근래에, 컴퓨팅 장치에 가상 장치가 도입되고 있다. 가상 장치는 컴퓨팅 장치의 자원을 이용하여 구동되는 가상의 장치이다. 컴퓨팅 장치는 서로 다른 복수의 가상 장치들을 구동할 수 있다. 예를 들어, 윈도우와 같은 제 1 운영 체제를 구동하는 제 1 가상 장치, 그리고 리눅스와 같은 제 2 운영 체제를 구동하는 제 2 가상 장치가 하나의 컴퓨팅 장치에서 구동될 수 있다.
가상 장치는 컴퓨팅 장치에서 소프트웨어에 의해 구현된다. 따라서, 소프트웨어에서 오류가 발생하면, 가상 장치는 페일(fail)을 경험하고, 가상 장치에 의해 생성 및 관리되는 데이터는 소실될 수 있다. 또한, 가상 장치는 가상 장치를 구동하는 컴퓨팅 장치보다 낮은 동작 속도를 갖는다. 따라서, 향상된 신뢰성 및 동작 속도를 갖는 가상 장치를 구동하는 방법이 요구되고 있다.
본 발명의 목적은 향상된 신뢰성 및 동작 속도를 갖는 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법을 제공하는 데에 있다.
불휘발성 메모리를 포함하는 컴퓨팅 장치가 가상 장치를 제어하는 본 발명의 실시 예에 따른 가상 장치 제어 방법은, 가상화 요청을 수신하는 단계; 상기 불휘발성 메모리의 제 1 부분을 가상 메모리로 할당하는 단계; 상기 불휘발성 메모리의 제 2 부분을 가상 스토리지로 할당하는 단계; 그리고 상기 할당된 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성하는 단계를 포함한다.
실시 예로서, 상기 불휘발성 메모리는 자기 램(MRAM, Magnetic Random Access Memory) 또는 상 변화 램(PRAM, Phase-change Random Access Memory)을 포함한다.
실시 예로서, 상기 불휘발성 메모리의 제 3 부분을 상기 컴퓨팅 장치의 가상 메인 메모리로 할당하는 단계; 상기 불휘발성 메모리의 제 4 부분을 상기 컴퓨팅 장치의 가상 메인 스토리지로 할당하는 단계; 그리고 상기 할당된 가상 메인 메모리 및 가상 메인 스토리지를 포함하는 가상 메인 장치를 생성하는 단계를 더 포함한다.
실시 예로서, 상기 가상 장치의 생성, 변경 및 삭제는 상기 컴퓨팅 장치의 바이오스(BIOS)에 의해 수행된다.
실시 예로서, 상기 불휘발성 메모리의 어드레스와 상기 가상 메모리의 어드레스의 매핑 관계에 대한 정보를 포함하는 가상 메모리 어드레스 테이블을 생성하는 단계; 그리고 상기 불휘발성 메모리의 어드레스와 상기 가상 스토리지의 어드레스의 매핑 관계에 대한 정보를 포함하는 가상 스토리지 어드레스 테이블을 생성하는 단계를 더 포함한다.
실시 예로서, 상기 불휘발성 메모리의 액세스 요청 및 어드레스를 수신하는 단계; 상기 액세스 요청 및 어드레스가 상기 가상 메모리에 대응하면 상기 가상 메모리 어드레스 테이블을 참조하여 상기 가상 메모리의 어드레스를 상기 불휘발성 메모리의 어드레스로 변환하고, 상기 액세스 요청 및 어드레스가 상기 가상 스토리지에 대응하면 상기 가상 스토리지 어드레스 테이블을 참조하여 상기 가상 스토리지의 어드레스를 상기 불휘발성 메모리의 어드레스로 변환하는 단계; 그리고 상기 변환된 어드레스를 이용하여 상기 불휘발성 메모리를 액세스하는 단계를 더 포함한다.
실시 예로서, 상기 가상 장치의 페일(fail)을 검출하는 단계; 그리고 상기 가상 메모리 및 상기 가상 스토리지를 포함하는 새로운 가상 장치를 생성하는 단계를 더 포함한다.
실시 예로서, 외부 컴퓨팅 장치의 불휘발성 메모리의 가상 메모리 및 가상 스토리지를 액세스하는 단계; 그리고 상기 외부 컴퓨팅 장치의 불휘발성 메모리의 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 컴퓨팅 장치는, 프로세서; 불휘발성 메모리; 그리고 상기 프로세서의 제어에 따라 상기 불휘발성 메모리를 제어하도록 구성되는 컨트롤러를 포함하고, 상기 프로세서는 상기 컨트롤러를 통해 상기 불휘발성 메모리에 가상 메모리 및 가상 스토리지를 할당하고, 그리고 상기 할당된 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성 및 제어하도록 구성된다.
실시 예로서, 상기 컨트롤러는, 상기 프로세서에 의해 발생된 상기 할당된 가상 메모리의 어드레스를 상기 불휘발성 메모리의 어드레스로 변환하는 가상 메모리 컨트롤러; 상기 프로세서에 의해 발생된 상기 할당된 가상 스토리지의 어드레스를 상기 불휘발성 메모리의 어드레스로 변환하는 가상 스토리지 컨트롤러; 그리고 상기 가상 메모리 컨트롤러 또는 상기 가상 스토리지 컨트롤러에 의해 변환된 어드레스를 이용하여 상기 불휘발성 메모리를 액세스하는 포괄(generic) 메모리 컨트롤러를 포함한다.
실시 예로서, 상기 컨트롤러는 상기 컴퓨팅 시스템의 노스 브릿지(north bridge)에 포함된다.
실시 예로서, 노스 브릿지(north bridge)를 통해 상기 프로세서와 통신하는 랜덤 액세스 메모리를 더 포함하고, 상기 컨트롤러는 상기 컴퓨팅 시스템의 사우스 브릿지(south bridge)에 포함된다.
실시 예로서, 상기 컨트롤러는 외부 컴퓨팅 장치와 통신하는 통신 인터페이스를 포함하고, 상기 프로세서는 상기 컨트롤러의 통신 인터페이스를 통해 외부 컴퓨팅 장치의 가상 메모리 및 가상 스토리지를 액세스하고, 상기 외부 컴퓨팅 장치의 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성하도록 구성된다.
실시 예로서, 상기 불휘발성 메모리는 자기 메모리(MRAM, Magnetic Random Access Memory) 또는 상 변화 메모리(PRAM, Phase-change Random Access Memory)를 포함한다.
실시 예로서, 상기 가상 장치의 페일이 검출되면, 상기 프로세서는 상기 가상 메모리 및 상기 가상 스토리지를 포함하는 새로운 가상 장치를 생성하도록 구성된다.
본 발명에 따르면, 가상 장치의 가상 메모리 및 가상 스토리지 모두가 불휘발성 메모리에 할당된다. 전원이 오프되거나 가상 장치의 페일이 발생해도 가상 메모리 및 가상 스토리지에 저장된 데이터는 유지된다. 따라서, 향상된 신뢰성을 갖는 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법이 제공된다. 또한, 가상 메모리 및 가상 스토리지가 하드 디스크 드라이브 또는 솔리드 스테이트 드라이브보다 높은 속도를 갖는 불휘발성 메모리에 할당되므로, 향상된 속도를 갖는 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법이 제공된다.
도 1은 본 발명의 제 1 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 장치의 동작 방법의 제 1 예를 보여주는 순서도이다.
도 3은 도 1의 컴퓨팅 장치에서 가상 장치들이 구동되는 예를 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 장치의 동작 방법의 제 2 예를 보여주는 순서도이다.
도 5는 본 발명의 제 2 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 6은 도 5의 컨트롤러가 불휘발성 메모리를 액세스하는 방법을 보여주는 순서도이다.
도 7은 본 발명의 제 3 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 8은 도 7의 컨트롤러가 불휘발성 메모리를 액세스하는 방법을 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따른 가상 장치 페일 복구 방법을 보여주는 순서도이다.
도 10은 본 발명의 제 4 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 11은 본 발명의 제 4 실시 예에 따른 컴퓨팅 장치들이 통신 인터페이스들을 통해 서로 통신하는 방법을 보여준다.
도 12는 도 11의 컴퓨팅 장치들이 통신 인터페이스들을 통해 가상 장치들을 제어하는 방법의 제 1 예를 보여주는 순서도이다.
도 13은 도 11의 컴퓨팅 장치들이 통신 인터페이스들을 통해 가상 장치들을 제어하는 방법의 제 2 예를 보여주는 순서도이다.
도 14는 본 발명의 실시 예에 따른 클라우드 시스템을 보여주는 개념도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
이하에서, '스토리지(storage)' 및 '메모리(memory)'는 서로 다른 개념으로 사용된다. '스토리지'는 하드 디스크 드라이브, 솔리드 스테이트 드라이브와 같이 컴퓨팅 장치가 데이터를 장기적으로 저장하고자 하는 저장 매체를 가리킨다. '메모리'는 동작 메모리, 캐시 메모리 등과 같이 컴퓨팅 장치가 데이터를 단기적으로 그리고 임시로 저장하고자 하는 저장 매체를 가리킨다.
도 1은 본 발명의 제 1 실시 예에 따른 컴퓨팅 장치(100)를 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 장치(100)는 프로세서(110), 컨트롤러(120), 불휘발성 메모리(130), 그리고 사용자 인터페이스(140)를 포함한다.
프로세서(110)는 컴퓨팅 장치(100)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(110)는 범용 프로세서, 어플리케이션 프로세서 등을 포함할 수 있다.
컨트롤러(120)는 프로세서(110)의 제어에 따라 불휘발성 메모리(130)를 제어할 수 있다. 컨트롤러(120)는 불휘발성 메모리(130)의 읽기, 쓰기 및 소거를 제어할 수 있다. 컨트롤러(120)는 가상화(virtualization)를 지원할 수 있다.
불휘발성 메모리(130)는 자기 램(MRAM, Magnetic RAM), 상 변화 램(PRAM, Phase-change RAM) 등과 같은 불휘발성 랜덤 액세스 메모리(RAM, Random Access Memory)를 포함할 수 있다.
사용자 인터페이스(140)는 키보드, 마우스, 카메라, 마이크, 터치 패드, 터치 스크린, 센서 등과 같은 사용자 입력 인터페이스, 그리고 스크린, 스피커, 램프 , 모터 등과 같은 사용자 출력 인터페이스를 포함할 수 있다.
프로세서(110)는 불휘발성 메모리(130)에 가상 이미지를 할당할 수 있다. 불휘발성 메모리(130)에 할당된 가상 이미지에 응답하여, 프로세서(110)는 가상 장치를 구동할 수 있다.
컨트롤러(120)는 불휘발성 메모리(130)에 할당된 가상 이미지에 대한 액세스를 제어할 수 있다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 장치(100)의 동작 방법의 제 1 예를 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S110 단계에서, 가상화 요청이 수신된다. 예를 들어, 프로세서(110)는 사용자 인터페이스(140)를 통해 가상화 요청을 수신할 수 있다. 프로세서(110)는 외부 장치로부터 통신을 통해 가상화 요청을 수신할 수 있다.
S120 단계에서, 불휘발성 메모리(130)의 제 1 부분이 가상 메모리로 할당된다. 프로세서(110)는 가상화 요청에 따라, 불휘발성 메모리(130)의 제 1 부분을 가상 메모리로 할당할 수 있다. 가상 메모리의 용량은 가상화 요청에 따라 결정될 수 있다. 가상 메모리가 할당될 때, 가상 메모리에 가상 어드레스가 할당될 수 있다. 가상 메모리가 할당될 때, 가상 메모리의 가상 어드레스 및 불휘발성 메모리(130)의 실제 어드레스 사이의 매핑 관계를 가리키는 정보가 생성될 수 있다. 매핑 정보는 컨트롤러(130)에 의해 생성 및 관리될 수 있다. 매핑 정보는 테이블의 형태로 관리될 수 있다. 예를 들어, 가상 메모리의 어드레스들의 매핑 관계에 대한 정보는 가상 메모리 어드레스 테이블일 수 있다.
S130 단계에서, 불휘발성 메모리(130)의 제 2 부분이 가상 스토리지로 할당된다. 프로세서(110)는 가상화 요청에 따라, 불휘발성 메모리(130)의 제 2 부분을 가상 스토리지로 할당할 수 있다. 가상 스토리지의 용량은 가상화 요청에 따라 결정될 수 있다. 가상 스토리지가 할당될 때, 가상 스토리지에 가상 어드레스가 할당될 수 있다. 가상 스토리지가 할당될 때, 가상 스토리지의 가상 어드레스 및 불휘발성 메모리(130)의 실제 어드레스 사이의 매핑 관계를 가리키는 정보가 생성될 수 있다. 매핑 정보는 컨트롤러(130)에 의해 생성 및 관리될 수 있다. 매핑 정보는 테이블의 형태로 관리될 수 있다. 예를 들어, 가상 스토리지의 어드레스들의 매핑 관계에 대한 정보는 가상 스토리지 어드레스 테이블일 수 있다.
S140 단계에서, 할당된 가상 메모리 및 가상 스토리지를 포함하는 가상 장치가 생성된다. 프로세서(110)는 가상 메모리 및 가상 스토리지를 구동하는 운영 체제(OS. Operating system)와 같은 프로세스(process)를 구동함으로써, 가상 장치를 생성할 수 있다. 가상 장치의 운영 체제는 가상화 요청에 따라 또는 가상화 요청에 후속하는 별도의 요청에 따라 선택될 수 있다.
예시적으로, 가상 메모리 및 가상 스토리지는 가상 이미지(virtual image)를 형성할 수 있다. 가상 이미지는 프로세서(110)에 의해 구동되는 프로세스의 이미지를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 가상 메모리 및 가상 스토리지는 모두 불휘발성 메모리(130)에 할당된다. 자기 램(MRAM), 상 변화 램(PRAM)과 같은 랜덤 액세스 메모리는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD)와 같은 통상적인 스토리지보다 높은 동작 속도를 같는다. 따라서, 본 발명의 실시 예에 따른 가상 장치 및 가상 장치 제어 방법은, 통상적인 스토리지에 가상 스토리지를 할당하는 종래의 가상 장치 및 가상 장치 제어 방법보다 높은 동작 속도를 같는다.
자기 램(MRAM), 상 변화 램(PRAM)과 같은 불휘발성 메모리는 전원이 차단되어도 데이터를 유지한다. 본 발명의 실시 예에 따르면, 가상 스토리지 뿐 아니라 가상 메모리도 불휘발성 메모리에 할당된다. 따라서, 본 발명의 실시 예에 따란 가상 장치 및 가상 장치 제어 방법은 가상 메모리 및 가상 스토리지에 저장되는 데이터의 연속성을 보장하며, DRAM과 같은 휘발성 메모리에 가상 메모리를 할당하는 종래의 가상 장치 및 가상 장치 제어 방법보다 높은 신뢰도를 갖는다.
도 3은 도 1의 컴퓨팅 장치에서 가상 장치들이 구동되는 예를 보여주는 도면이다. 도 3을 참조하면, 불휘발성 메모리(130)에 복수의 가상 이미지들(131~13n)이 할당된다. 복수의 가상 이미지들(131~13n)은 각각 가상 메모리들(151~15n) 및 가상 스토리지들(161~16n)을 포함한다.
예시적으로, 불휘발성 메모리(130)는 컴퓨팅 장치(100)의 불휘발성 메모리(130) 뿐 아니라, 컴퓨팅 장치(100)와 네트워크를 통해 연결된 외부 장치의 불휘발성 메모리를 더 포함할 수 있다. 즉, 불휘발성 메모리(130)는 클라우드 메모리일 수 있다.
프로세서(110)는 복수의 가상 이미지들(131~13n)에 각각 대응하는 복수의 프로세스들(111~11n)을 구동한다. 프로세스들(111~11n) 각각은 운영 체제 또는 운영 체제 및 운영 체제에 기반하여 구동되는 응용 프로그램을 포함할 수 있다. 하나의 프로세스는 하나의 가상 이미지와 함께 하나의 가상 장치를 형성할 수 있다.
컨트롤러(120)는 메모리 컨트롤러(121), 스토리지 컨트롤러(123) 및 포괄 메모리 컨트롤러(125)를 포함한다.
메모리 컨트롤러(121)는 가상 메모리들(151~15n)의 가상 어드레스들과 불휘발성 메모리(130)의 어드레스들 사이의 매핑 관계에 대한 정보를 테이블의 형태로 생성 및 관리할 수 있다. 메모리 컨트롤러(121)는 프로세스들(111~11n)이 발생하는 가상 메모리들(151~15n)의 가상 어드레스들을 수신하고, 이를 불휘발성 메모리(130)의 어드레스들로 변환할 수 있다. 스토리지 컨트롤러(123)는 가상 스토리지들(161~16n)의 가상 어드레스들과 불휘발성 메모리(130)의 어드레스들 사이의 매핑 관계에 대한 정보를 테이블의 형태로 생성 및 관리할 수 있다. 스토리지 컨트롤러(123)는 프로세스들(111~11n)이 발생하는 가상 스토리지들(161~16n)의 가상 어드레스들을 수신하고, 이를 불휘발성 메모리(130)의 어드레스들로 변환할 수 있다.
포괄 메모리 컨트롤러(125)는 메모리 컨트롤러(121) 또는 스토리지 컨트롤러(123)에 의해 변환된 불휘발성 메모리(130)의 어드레스들에 기반하여, 불휘발성 메모리(130)를 액세스할 수 있다.
예시적으로, 불휘발성 메모리(130)의 전체 저장 용량에서 논리적인 단위로 가상 장치들이 할당될 수 있다. 불휘발성 메모리(130)를 구성하는 복수의 메모리 칩들에서, 하나 또는 그 이상의 칩의 단위로 가상 장치들이 할당될 수 있다. 불휘발성 메모리(130)를 구성하는 복수의 메모리 모듈들에서, 하나 또는 그 이상의 모듈들의 단위로 가상 장치들이 할당될 수 있다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 장치(100)의 동작 방법의 제 2 예를 보여주는 순서도이다. 예시적으로, 컴퓨팅 장치(100)의 부팅 방법이 도 4에 도시된다. 도 3 및 도 4를 참조하면, S210 단계에서, 컴퓨팅 장치(100)에 전원이 공급된다.
S220 단계에서, 컴퓨팅 장치(100)는 초기화를 수행한다. 예를 들어, 컴퓨팅 장치(100)는 POST (Power On Self Test)를 수행할 수 있다. 컴퓨팅 장치(100)는 내부 구성 요소들의 초기화를 수행할 수 있다.
S230 단계에서, 바이오스(BIOS, Basic Input/Output System) 구성이 설정된다. 예를 들어, 가상 장치의 생성, 가상 장치의 삭제, 가상 장치의 재할당, 메인 장치의 가상화 등이 수행될 수 있다.
가상 장치의 생성은 불휘발성 메모리(130)에 가상 이미지를 할당하는 동작을 포함할 수 있다. 가상 장치의 생성은 할당된 가상 이미지를 구동하는 프로세스를 선택 또는 설치하는 동작을 더 포함할 수 있다.
가상 장치의 삭제는 불휘발성 메모리(130)에 할당된 가상 이미지를 삭제하는 동작을 포함할 수 있다. 가상 장치의 삭제는 삭제된 가상 이미지를 구동하던 프로세스를 종료 또는 삭제하는 동작을 더 포함할 수 있다.
가상 장치의 재할당은 불휘발성 메모리(130)에 할당된 가상 이미지의 어드레스 변경, 사이즈 변경 등을 포함할 수 있다.
메인 장치의 가상화는 컴퓨팅 장치(100)를 구동하는 메인 시스템을 가상화하는 동작을 포함할 수 있다. 예를 들어, 메인 장치의 가상화는 컴퓨팅 장치(100)를 구동하는 메인 시스템의 가상 메인 메모리 및 가상 메인 스토리지를 불휘발성 메모리(130)에 할당하고, 이를 구동하는 메인 프로세스를 선택 또는 설치하는 동작을 포함할 수 있다. 메인 장치의 가상화는 컴퓨팅 장치(100)에 설치된 가상 장치들 중 하나를 메인 장치로 선택하는 동작을 포함할 수 있다. 메인 시스템은 컴퓨팅 장치(100)에 전원이 공급되고, 별도의 가상화 설정 또는 선택이 이루어지지 않을 때, 컴퓨팅 장치(100)에서 실행되는 시스템일 수 있다.
S240 단계에서, 메인 장치가 가상화되어 있는지 판단된다. 메인 장치가 가상화되어 있으면, S250 단계에서, 가상 메인 장치에서 운영 체제가 실행된다. 메인 장치가 가상화되어 있지 않으면, S260 단계에서, 비가상(nonvirtual) 메인 장치에서 운영 체제가 실행된다.
도 5는 본 발명의 제 2 실시 예에 따른 컴퓨팅 장치(200)를 보여주는 블록도이다. 도 5를 참조하면, 컴퓨팅 장치(200)는 프로세서(210), 불휘발성 메모리(230), 사용자 인터페이스(240), 휘발성 메모리(270), 노스 브릿지(280) 및 사우스 브릿지(290)를 포함한다.
프로세서(210)는 컴퓨팅 장치(200)의 제반 동작을 제어하고, 논리 연산을 수행하도록 구성된다.
노스 브릿지(280)는 프로세서(210)의 제어에 따라 동작한다. 노스 브릿지(280)는 메인 메모리인 휘발성 메모리(270)를 제어하는 컨트롤러(281)를 포함할 수 있다. 휘발성 메모리(270)는 DRAM (Dynamic Random Access Memory)을 포함할 수 있다.
사우스 브릿지(290)는 프로세서(210)의 제어에 따라 동작한다. 사우스 브릿지(290)는 불휘발성 메모리(230)를 제어하는 컨트롤러(220)를 포함할 수 있다. 도 3에 도시된 바와 같이, 컨트롤러(220)는 메모리 컨트롤러(121), 스토리지 컨트롤러(123) 및 포괄 메모리 컨트롤러(125)를 포함할 수 있다. 사우스 브릿지(290)는 사용자 인터페이스(240)를 제어할 수 있다.
불휘발성 메모리(230)는 PRAM, MRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다. 불휘발성 메모리(230)는 프로세서(210)에 의해 할당된 가상 메인 스토리지(230M) 및 복수의 가상 이미지들(231~23n)을 포함할 수 있다. 복수의 가상 이미지들(231~23n) 각각은 가상 메모리(MEM) 및 가상 스토리지(STO)를 포함할 수 있다.
컴퓨팅 장치(200)의 메인 장치는 휘발성 메모리(270)를 메인 메모리로 사용하고, 가상 메인 스토리지(230M)를 메인 스토리지로 사용하여 구동될 수 있다. 컴퓨팅 장치(200)의 메인 장치는 가상 장치가 아닌 비가상(nonvirtual) 장치일 수 있다. 컴퓨팅 장치(200)는 복수의 가상 이미지들(231~23n)에 기반하여, 복수의 가상 장치들을 구동할 수 있다.
사우스 브릿지(290)에 하드 디스크 드라이브, 솔리드 스테이트 드라이브 등과 같은 별도의 스토리지가 추가적으로 연결될 수 있다. 복수의 가상 이미지들(231~23n)을 구동하는 프로세스들의 이미지는 불휘발성 메모리(230) 또는 사우스 브릿지(290)에 연결되는 별도의 스토리지에 저장될 수 있다.
도 6은 도 5의 컨트롤러(230)가 불휘발성 메모리(230)를 액세스하는 방법을 보여주는 순서도이다. 도 5 및 도 6을 참조하면, S310 단계에서, 컨트롤러(230)는 액세스 요청 및 어드레스를 수신한다. 예를 들어, 컨트롤러(230)는 프로세서(210)에 의해 구동되고 가상 이미지들(231~23n)을 제어하는 프로세스들로부터 액세스 요청 및 어드레스들을 수신할 수 있다. 이때, 수신된 어드레스들은 가상 메모리들(MEM) 또는 가상 스토리지들(STO)의 가상 어드레스들일 수 있다. 예를 들어, 컨트롤러(230)는 메인 장치를 구동하는 메인 프로세스로부터 액세스 요청 및 어드레스들을 수신할 수 있다. 이때, 수신된 어드레스들은 가상 메인 스토리지(230M)의 어드레스들일 수 있다.
S315 단계에서, 가상 장치가 존재하는지 판별된다. 예를 들어, 컨트롤러(230)는 컴퓨팅 장치(200)에서 구동되는 가상 장치가 존재하는지 판별할 수 있다. 가상 장치가 존재하면, S320 단계가 수행된다.
S320 단계에서, 액세스 요청이 가상 스토리지에 대한 액세스 요청인지 판별된다. 액세스 요청이 가상 스토리지에 대한 액세스 요청이면, S325 단계가 수행된다.
S325 단계에서, 액세스 요청이 가상 메인 스토리지(270M)에 대한 액세스 요청인지 판별된다. 액세스 요청이 가상 메인 스토리지(270M)에 대한 액세스 요청이면, S330 단계에서 가상 메인 스토리지(270M)가 선택된다. 액세스 요청이 가상 메인 스토리지(270M)에 대한 액세스 요청이 아니면, S360 단계에서 가상 스토리지가 선택된다.
S335 단계에서, 가상 스토리지 어드레스 테이블을 이용하여 메모리 에뮬레이션이 수행된다. 가상 스토리지 컨트롤러(123, 도 3 참조)는 선택된 가상 스토리지 또는 가상 메인 스토리지(270M)에 대응하는 가상 스토리지 어드레스 테이블을 이용하여, 수신된 어드레스를 불휘발성 메모리(230)의 어드레스로 변환할 수 있다.
S340 단계에서, 변환된 어드레스가 포괄 메모리 컨트롤러(125, 도 3 참조)로 전송된다. 스토리지 컨트롤러(123)는 변환된 어드레스를 포괄 컨트롤러(125)로 전송할 수 있다.
S345 단계에서, 액세스 요청 및 변환된 어드레스가 불휘발성 메모리(230)로 전송된다. 포괄 컨트롤러(125)는 액세스 요청 및 변환된 어드레스를 불휘발성 메모리(230)로 전송할 수 있다.
S320 단계에서, 가상 스토리지에 대한 액세스가 아니면, 즉 가상 메모리에 대한 액세스이면, S350 단계가 수행된다. S350 단계에서, 가상 이미지가 선택된다. S355 단계에서, 가상 메모리 어드레스 테이블을 이용하여 메모리 에뮬레이션이 수행된다. 가상 메모리 컨트롤러(121, 도 3 참조)는 선택된 가상 메모리의 가상 메모리 테이블을 이용하여, 수신된 어드레스를 불휘발성 메모리(230)의 어드레스로 변환할 수 있다. 이후에, S340 단계에서 변환된 어드레스가 포괄 메모리 컨트롤러(125)로 전송되고, S345 단계에서 액세스 요청 및 변환된 어드레스가 불휘발성 메모리(230)로 전송될 수 있다.
S315 단계에서, 가상 장치가 존재하지 않으면, S340 단계가 수행된다. S340 단계에서, 어드레스가 포괄 메모리 컨트롤러(125)로 전송되고, S345 단계에서 액세스 요청 및 어드레스가 불휘발성 메모리(230)로 전송된다.
도 7은 본 발명의 제 3 실시 예에 따른 컴퓨팅 장치(300)를 보여주는 블록도이다. 도 7을 참조하면, 컴퓨팅 장치(300)는 프로세서(310), 불휘발성 메모리(330), 사용자 인터페이스(340), 불휘발성 스토리지(370), 노스 브릿지(380), 그리고 사우스 브릿지(390)를 포함한다.
프로세서(310)는 컴퓨팅 장치(300)의 제반 동작을 제어하고, 논리 연산을 수행하도록 구성된다.
노스 브릿지(380)는 프로세서(310)의 제어에 따라 동작한다. 노스 브릿지(380)는 불휘발성 메모리(330)를 제어하는 컨트롤러(320)를 포함할 수 있다. 도 3에 도시된 바와 같이, 컨트롤러(320)는 메모리 컨트롤러(121), 스토리지 컨트롤러(123) 및 포괄 메모리 컨트롤러(125)를 포함할 수 있다.
불휘발성 메모리(230)는 PRAM, MRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다. 불휘발성 메모리(330)는 프로세서(310)에 의해 할당된 가상 메인 이미지(330M) 및 복수의 가상 이미지들(331~33n)을 포함할 수 있다. 가상 메인 이미지(330M)는 가상 메인 메모리(M) 및 가상 메인 스토리지(S)를 포함할 수 있다. 복수의 가상 이미지들(331~33n) 각각은 가상 메모리(MEM) 및 가상 스토리지(STO)를 포함할 수 있다.
사우스 브릿지(390)는 프로세서(310)의 제어에 따라 동작한다. 사우스 브릿지(390)는 불휘발성 스토리지(370)를 제어하는 컨트롤러(391)를 포함할 수 있다. 사우스 브릿지(390)는 사용자 인터페이스(340) 및 불휘발성 스토리지(370)를 제어할 수 있다. 불휘발성 스토리지(370)는 하드 디스크 드라이브, 솔리드 스테이트 드라이브 등을 포함할 수 있다.
컴퓨팅 장치(300)의 메인 장치는 가상 메인 이미지(330M)를 이용하여 구동될 수 있다. 메인 장치는 가상 메인 이미지(330M)의 가상 메인 메모리(M)를 메인 메모리로 사용하고, 가상 메인 스토리지(S)를 메인 스토리지로 사용할 수 있다.
컴퓨팅 장치(300)는 복수의 가상 이미지들(331~33n)에 기반하여, 복수의 가상 장치들을 구동할 수 있다. 가상 메인 이미지(330M) 및 복수의 가상 이미지들(331~33n)을 구동하는 프로세스들의 이미지는 불휘발성 메모리(330) 또는 불휘발성 스토리지(370)에 저장될 수 있다.
도 8은 도 7의 컨트롤러(320)가 불휘발성 메모리(330)를 액세스하는 방법을 보여주는 순서도이다. 도 7 및 도 8을 참조하면, S410 단계에서, 컨트롤러(320)는 불휘발성 메모리(330)의 액세스 요청 및 어드레스를 수신한다.
S420 단계에서, 액세스 요청 및 어드레스에 따라, 가상 이미지가 선택된다. 예를 들어, 가상 메인 이미지(330M) 또는 복수의 가상 이미지들(331~33n) 중 하나의 이미지가 선택될 수 있다.
S430 단계에서, 액세스 요청 및 어드레스가 가상 스토리지에 대한 액세스인지 판별된다. 액세스 요청 및 어드레스가 가상 스토리지에 대한 액세스이면, S440 단계에서, 가상 스토리지 어드레스 테이블을 이용하여 메모리 에뮬레이션이 수행된다. 메모리 에뮬레이션은 가상 스토리지 컨트롤러(123, 도 3 참조)에 의해 수행될 수 있다. 액세스 요청 및 어드레스가 가상 스토리지에 대한 액세스가 아니면, S470 단계에서 가상 메모리 어드레스 테이블을 이용하여 메모리 에뮬레이션이 수행된다. 메모리 에뮬레이션은 가상 메모리 컨트롤러(121, 도 3 참조)에 의해 수행될 수 있다.
S450 단계에서, 변환된 어드레스가 포괄 메모리 컨트롤러(125, 도 3 참조))로 전송된다. S460 단계에서, 액세스 요청 및 어드레스가 불휘발성 메모리(330)로 전송된다.
도 9는 본 발명의 실시 예에 따른 가상 장치 페일 복구 방법을 보여주는 순서도이다. 도 9를 참조하면, S510 단계에서, 가상 장치의 페일이 검출된다. S520 단계에서, 페일된 가상 장치의 가상 이미지에 기반하여 새로운 가상 장치가 생성된다.
본 발명의 실시 예에 따르면, 가상 메모리 및 가상 스토리지는 모두 불휘발성 메모리에 생성된다. 가상 장치의 페일이 발생해도, 페일된 가상 장치가 가상 스토리지에 저장한 데이터 및 가상 메모리에서 처리 중이던 데이터는 불휘발성 메모리에 유지된다. 따라서, 페일된 가상 장치의 가상 이미지를 포함하는 새로운 가상 장치를 생성하는 것 만으로, 페일된 가상 장치가 복구될 수 있다.
도 10은 본 발명의 제 4 실시 예에 따른 컴퓨팅 장치(400)를 보여주는 블록도이다. 도 10을 참조하면, 컴퓨팅 장치(400)는 프로세서(410), 컨트롤러(420) 및 불휘발성 메모리(430)를 포함한다.
도 1의 컴퓨팅 장치(100)와 비교하면, 컨트롤러(420)는 통신 인터페이스(421)를 포함한다. 간결한 설명을 위하여, 사용자 인터페이스(140)는 생략된다.
컴퓨팅 장치(400)는 통신 인터페이스(421)를 통해 외부 장치와 통신할 수 있다. 통신 인터페이스(421)는 이더넷 인터페이스, 와이파이 인터페이스, 블루투스 인터페이스, LTE 인터페이스, 와이맥스 인터페이스 등을 포함할 수 있다. 통신 인터페이스(421)는 광 통신, 유선 통신 또는 무선 통신을 통해 외부 장치와 통신할 수 있다.
도 11은 본 발명의 제 4 실시 예에 따른 컴퓨팅 장치들(400a, 400b)이 통신 인터페이스들(421a, 421b)을 통해 서로 통신하는 방법을 보여준다. 도 11을 참조하면, 컴퓨팅 장치(400a)는 프로세서(410a), 컨트롤러(420a) 및 불휘발성 메모리(430a)를 포함한다. 컴퓨팅 장치(400b)는 프로세서(410b), 컨트롤러(420b) 및 불휘발성 메모리(430b)를 포함한다.
컴퓨팅 장치(400a)는 복수의 가상 이미지들(431a~43na)에 기반하여 복수의 가상 장치들을 구동하도록 구성된다. 컴퓨팅 장치(400b)는 복수의 가상 이미지들(431b~43nb)에 기반하여 복수의 가상 장치들을 구동하도록 구성된다.
컴퓨팅 장치들(400a, 400b)은 통신 인터페이스들(421a, 421b)을 통해 서로 통신할 수 있다.
도 12는 도 11의 컴퓨팅 장치들(400a, 400b)이 통신 인터페이스들(421a, 421b)을 통해 가상 장치들을 제어하는 방법의 제 1 예를 보여주는 순서도이다. 도 11 및 도 12를 참조하면, S610 단계에서, 컴퓨팅 장치(400a)는 통신 인터페이스들(421a, 421b)을 통해 컴퓨팅 장치(400b)에 가상 장치 구동 요청을 전송할 수 있다.
S620 단계에서, 컴퓨팅 장치(400b)는 가상 장치 구동 요청에 따라, 복수의 가상 장치들(431b~43nb) 중 하나 또는 둘 이상의 가상 장치들을 선택하고, 선택된 가상 장치들을 구동할 수 있다.
S630 단계에서, 컴퓨팅 장치(400b)는 가상 장치들의 구동 결과를 컴퓨팅 장치(400a)로 전송할 수 있다.
즉, 컴퓨팅 장치들(400a, 400b)은 통신 인터페이스들(421a, 421b)을 통해 원격 컴퓨팅 장치에서 구동되는 가상 장치들을 제어할 수 있다.
도 13은 도 11의 컴퓨팅 장치들(400a, 400b)이 통신 인터페이스들(421a, 421b)을 통해 가상 장치들을 제어하는 방법의 제 2 예를 보여주는 순서도이다. 도 13을 참조하면, S710 단계에서, 컴퓨팅 장치(400a)는 통신 인터페이스들(421a, 421b)을 통해 컴퓨팅 장치(400b)의 가상 이미지를 액세스한다.
S720 단계에서, 컴퓨팅 장치(400a)는 액세스된 컴퓨팅 장치(400b)의 가상 이미지에 기반하여 가상 장치를 생성한다. 컴퓨팅 장치(400a)는 도 6 또는 도 8을 참조하여 설명된 방법에 따라, 생성된 가상 장치를 제어할 수 있다. 예를 들어, 컨트롤러(220 또는 320)의 포괄 메모리 컨트롤러(125, 도 3 참조)로부터 출력되는 액세스 요청 및 어드레스가 통신 인터페이스들(421a, 421b)을 통해 원격 컴퓨팅 장치(400b)의 불휘발성 메모리(430b)로 전송되는 것을 제외하면, 생성된 가상 장치는 도 6 또는 도 8을 참조하여 설명된 방법에 따라 액세스될 수 있다.
S730 단계에서, 가상 장치의 액세스가 완료되면, 가상 이미지의 액세스가 단절되고, 가상 장치가 종료된다.
즉, 원격 컴퓨팅 장치(400b)의 프로세서(410b)가 동작 불능 상태이거나 전원이 공급되지 않은 상태이더라도, 컨트롤러(420b) 및 불휘발성 메모리(430b)에 전원이 공급되고 있으면, 컴퓨팅 장치(400a)는 원격 컴퓨팅 장치(400b)의 가상 이미지를 이용하여 가상 장치를 생성 및 액세스할 수 있다. 컴퓨팅 장치(400a)에 의해 변경된 가상 장치의 데이터는 불휘발성 메모리(430b)에 유지된다. 따라서, 컴퓨팅 장치(400b)가 해당 가상 이미지를 이용하여 가상 장치를 생성할 때, 가상 장치의 데이터 연속성이 보장될 수 있다.
도 14는 본 발명의 실시 예에 따른 클라우드 시스템(1000)을 보여주는 개념도이다. 도 14를 참조하면, 클라우드 시스템(1000)은 네트워크(1100) 및 컴퓨팅 장치들(1200~1500)을 포함한다.
컴퓨팅 장치들(1200~1500)은 네트워크(1100)를 통해 서로 통신할 수 있다. 컴퓨팅 장치들(1200~1500)은 서버, 컴퓨터, 노트북 컴퓨터, 터미널, 스마트폰, 스마트 패드 등을 포함할 수 있다. 컴퓨팅 장치들(1200~1500)은 불휘발성 메모리에 가상 메모리들 및 가상 스토리지들을 포함하는 가상 이미지를 할당할 수 있다.
컴퓨팅 장치들(1200~1500) 각각은 가상 이미지들을 할당할 수 있다. 컴퓨팅 장치들(1200~1500)은 할당된 가상 이미지들을 이용하여 가상 장치들을 구동할 수 있다. 컴퓨팅 장치들(1200~1500)은 네트워크(1100)를 통해 원격 컴퓨팅 장치의 가상 이미지를 액세스하고, 액세스된 가상 이미지에 기반하여 가상 장치를 생성할 수 있다.
가상 이미지의 데이터는 불휘발성 메모리에 저장되므로, 전원이 차단되어도 데이터가 유지된다. 따라서, 원격 컴퓨터에 의해 가상 이미지의 데이터가 변경되어도, 데이터 연속성이 보장된다. 컴퓨팅 장치들(1200~1500)은 네트워크(1100)를 통해 가상 장치 구동을 요청(도 12 참조)하거나, 가상 장치를 생성(도 13 참조)할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100, 200, 300, 400; 컴퓨팅 장치
110, 210, 310, 410; 프로세서
120, 220, 320, 420; 컨트롤러
121; 메모리 컨트롤러 123; 스토리지 컨트롤러
125; 포괄 메모리 컨트롤러
130, 230, 330, 430; 불휘발성 메모리
131~13n; 가상 이미지들
230M; 가상 메인 스토리지 231~23n; 가상 이미지들
330M; 가상 메인 이미지 331~33n; 가상 이미지들
140, 240, 340; 사용자 인터페이스
270; 휘발성 메모리 370; 불휘발성 스토리지
280, 380; 노스 브릿지 290, 390; 사우스 브릿지
1000; 클라우드 시스템
1100; 네트워크 1200~1500; 컴퓨팅 장치들

Claims (10)

  1. 불휘발성 메모리를 포함하는 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법에 있어서:
    가상화 요청을 수신하는 단계;
    상기 불휘발성 메모리의 제 1 부분을 가상 메모리로 할당하는 단계;
    상기 불휘발성 메모리의 제 2 부분을 가상 스토리지로 할당하는 단계; 그리고
    상기 할당된 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성하는 단계를 포함하는 가상 장치 제어 방법.
  2. 제 1 항에 있어서,
    상기 불휘발성 메모리의 어드레스와 상기 가상 메모리의 어드레스의 매핑 관계에 대한 정보를 포함하는 가상 메모리 어드레스 테이블을 생성하는 단계; 그리고
    상기 불휘발성 메모리의 어드레스와 상기 가상 스토리지의 어드레스의 매핑 관계에 대한 정보를 포함하는 가상 스토리지 어드레스 테이블을 생성하는 단계를 더 포함하는 가상 장치 제어 방법.
  3. 제 2 항에 있어서,
    상기 불휘발성 메모리의 액세스 요청 및 어드레스를 수신하는 단계;
    상기 액세스 요청 및 어드레스가 상기 가상 메모리에 대응하면 상기 가상 메모리 어드레스 테이블을 참조하여 상기 가상 메모리의 어드레스를 상기 불휘발성 메모리의 어드레스로 변환하고, 상기 액세스 요청 및 어드레스가 상기 가상 스토리지에 대응하면 상기 가상 스토리지 어드레스 테이블을 참조하여 상기 가상 스토리지의 어드레스를 상기 불휘발성 메모리의 어드레스로 변환하는 단계; 그리고
    상기 변환된 어드레스를 이용하여 상기 불휘발성 메모리를 액세스하는 단계를 더 포함하는 가상 장치 제어 방법.
  4. 제 1 항에 있어서,
    상기 가상 장치의 페일(fail)을 검출하는 단계; 그리고
    상기 가상 메모리 및 상기 가상 스토리지를 포함하는 새로운 가상 장치를 생성하는 단계를 더 포함하는 가상 장치 제어 방법.
  5. 제 1 항에 있어서,
    외부 컴퓨팅 장치의 불휘발성 메모리의 가상 메모리 및 가상 스토리지를 액세스하는 단계; 그리고
    상기 외부 컴퓨팅 장치의 불휘발성 메모리의 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성하는 단계를 더 포함하는 가상 장치 제어 방법.
  6. 프로세서;
    불휘발성 메모리; 그리고
    상기 프로세서의 제어에 따라 상기 불휘발성 메모리를 제어하도록 구성되는 컨트롤러를 포함하고,
    상기 프로세서는 상기 컨트롤러를 통해 상기 불휘발성 메모리에 가상 메모리 및 가상 스토리지를 할당하고, 그리고 상기 할당된 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성 및 제어하도록 구성되는 컴퓨팅 장치.
  7. 제 6 항에 있어서,
    상기 컨트롤러는,
    상기 프로세서에 의해 발생된 상기 할당된 가상 메모리의 어드레스를 상기 불휘발성 메모리의 어드레스로 변환하는 가상 메모리 컨트롤러;
    상기 프로세서에 의해 발생된 상기 할당된 가상 스토리지의 어드레스를 상기 불휘발성 메모리의 어드레스로 변환하는 가상 스토리지 컨트롤러; 그리고
    상기 가상 메모리 컨트롤러 또는 상기 가상 스토리지 컨트롤러에 의해 변환된 어드레스를 이용하여 상기 불휘발성 메모리를 액세스하는 포괄(generic) 메모리 컨트롤러를 포함하는 컴퓨팅 장치.
  8. 제 6 항에 있어서,
    상기 컨트롤러는 상기 컴퓨팅 시스템의 노스 브릿지(north bridge)에 포함되는 컴퓨팅 장치.
  9. 제 6 항에 있어서,
    노스 브릿지(north bridge)를 통해 상기 프로세서와 통신하는 랜덤 액세스 메모리를 더 포함하고,
    상기 컨트롤러는 상기 컴퓨팅 시스템의 사우스 브릿지(south bridge)에 포함되는 컴퓨팅 장치.
  10. 제 6 항에 있어서,
    상기 컨트롤러는 외부 컴퓨팅 장치와 통신하는 통신 인터페이스를 포함하고,
    상기 프로세서는 상기 컨트롤러의 통신 인터페이스를 통해 외부 컴퓨팅 장치의 가상 메모리 및 가상 스토리지를 액세스하고, 상기 외부 컴퓨팅 장치의 가상 메모리 및 가상 스토리지를 포함하는 가상 장치를 생성하도록 구성되는 컴퓨팅 장치.
KR1020120081553A 2012-07-26 2012-07-26 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법 KR20140015857A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120081553A KR20140015857A (ko) 2012-07-26 2012-07-26 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법
US13/951,491 US9317440B2 (en) 2012-07-26 2013-07-26 Computing device and virtual device control method for controlling virtual device by computing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120081553A KR20140015857A (ko) 2012-07-26 2012-07-26 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법

Publications (1)

Publication Number Publication Date
KR20140015857A true KR20140015857A (ko) 2014-02-07

Family

ID=49996103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120081553A KR20140015857A (ko) 2012-07-26 2012-07-26 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법

Country Status (2)

Country Link
US (1) US9317440B2 (ko)
KR (1) KR20140015857A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507626B1 (en) * 2015-07-20 2016-11-29 Red Had Israel, Ltd. Virtual device backend recovery

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389312B2 (en) 1997-04-28 2008-06-17 Emc Corporation Mirroring network data to establish virtual storage area network
US8024761B1 (en) 1999-04-01 2011-09-20 Cox Communications, Inc. Method and apparatus of load sharing and fault tolerance in an interactive video distribution system
US7941056B2 (en) 2001-08-30 2011-05-10 Micron Technology, Inc. Optical interconnect in high-speed memory systems
KR100885809B1 (ko) 2007-05-25 2009-02-26 주식회사 다산네트웍스 리모트 컨트롤 기능을 가지는 광 이더넷 장치
JP2009157880A (ja) 2007-12-28 2009-07-16 Hitachi Ltd サーバ装置及びファイルシステム
US8799322B2 (en) 2009-07-24 2014-08-05 Cisco Technology, Inc. Policy driven cloud storage management and cloud storage policy router
KR101120572B1 (ko) 2009-12-01 2012-03-09 주식회사 클루넷 클라우드 컴퓨팅 네트워크 시스템 및 그것의 파일 다운로드 방법
JP5260567B2 (ja) 2010-01-27 2013-08-14 株式会社野村総合研究所 クラウドコンピューティングシステム
KR101126217B1 (ko) 2010-02-25 2012-03-22 유비벨록스(주) 클라우드서비스제공시스템 및 이를 이용한 클라우드서비스제공방법
US20120005274A1 (en) 2010-07-02 2012-01-05 Electronics And Telecommunications Research Institute System and method for offering cloud computing service
KR20120132820A (ko) * 2011-05-30 2012-12-10 삼성전자주식회사 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
US20130024602A1 (en) * 2011-07-18 2013-01-24 Dell Products L.P. Universal Storage for Information Handling Systems

Also Published As

Publication number Publication date
US20140032874A1 (en) 2014-01-30
US9317440B2 (en) 2016-04-19

Similar Documents

Publication Publication Date Title
EP3214553B1 (en) Storage resource access method supporting sr-iov, storage controller and storage device
KR102094393B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
US10795599B2 (en) Data migration method, host and solid state disk
US10496613B2 (en) Method for processing input/output request, host, server, and virtual machine
US11966612B2 (en) Solid-state disk (SSD) data migration
US10768827B2 (en) Performance throttling of virtual drives
US20150317101A1 (en) Computer system and control method for the same
JP2015228235A (ja) 格納デバイスの仮想化
KR20120132820A (ko) 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
WO2011128928A1 (en) Storage device
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
JP2016167143A (ja) 情報処理システムおよび情報処理システムの制御方法
US20120227037A1 (en) Installation system and method for instaling virtual machines
US10365826B1 (en) Command processing for a storage system
KR20200110547A (ko) 스토리지 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치
WO2018000300A1 (zh) 一种电子设备的数据操作方法及电子设备
US20140189031A1 (en) Computing device and method of creating virtual machines in hosts
US20220058044A1 (en) Computer system and management method
KR20140015857A (ko) 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법
CN115562871A (zh) 内存分配管理的方法和装置
WO2023077519A1 (zh) 支持多操作系统的存储设备、配置方法以及计算机系统
JP2012168846A (ja) サーバ装置、処理実行方法およびプログラム
KR20190033921A (ko) 스토리지 장치 및 그 동작 방법
US8799616B2 (en) Method and system for preferred CPU binding on virtual partitions
US8527716B2 (en) Volume sharing method and storage system using the same

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid