KR20170095822A - 고체 상태 드라이브들에서 입력 및 출력 동작들의 혼재의 감소 - Google Patents

고체 상태 드라이브들에서 입력 및 출력 동작들의 혼재의 감소 Download PDF

Info

Publication number
KR20170095822A
KR20170095822A KR1020177013206A KR20177013206A KR20170095822A KR 20170095822 A KR20170095822 A KR 20170095822A KR 1020177013206 A KR1020177013206 A KR 1020177013206A KR 20177013206 A KR20177013206 A KR 20177013206A KR 20170095822 A KR20170095822 A KR 20170095822A
Authority
KR
South Korea
Prior art keywords
solid state
state drive
virtual machines
bands
applications
Prior art date
Application number
KR1020177013206A
Other languages
English (en)
Other versions
KR102460345B1 (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 인텔 코포레이션
Publication of KR20170095822A publication Critical patent/KR20170095822A/ko
Application granted granted Critical
Publication of KR102460345B1 publication Critical patent/KR102460345B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

계산 디바이스의 운영 시스템은 고체 상태 드라이브에 대한 복수의 애플리케이션들의 액세스를 관리한다. 개별 밴드들은 복수의 애플리케이션들 중 적어도 2개의 상이한 애플리케이션들의 기입들을 저장하기 위해 고체 상태 드라이브에서 유지된다. 부가적으로, 다른 실시예들에서, 계산 디바이스의 가상 머신 매니저는 고체 상태 드라이브에 대한 복수의 가상 머신들의 액세스를 관리한다. 개별 밴드들은 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들의 기입들을 저장하기 위해 고체 상태 드라이브에서 유지된다.

Description

고체 상태 드라이브들에서 입력 및 출력 동작들의 혼재의 감소{REDUCTION OF INTERMINGLING OF INPUT AND OUTPUT OPERATIONS IN SOLID STATE DRIVES}
컴퓨팅에서, 가상 머신(virtual machine)(VM)은 특정 컴퓨터 시스템의 에뮬레이션이다. 가상 머신들은 실제 또는 가상 컴퓨터의 컴퓨터 아키텍처 및 기능들에 기초하여 동작하고, 가상 머신들을 구현하는 메커니즘들은 특수 하드웨어, 소프트웨어, 또는 펌웨어를 포함할 수 있다.
하이퍼바이저 또는 가상 머신 매니저(virtual machine manager)(VMM)는 복수의 가상 머신들을 생성하고 실행하는 하나의 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어이다. 하이퍼바이저가 하나 이상의 가상 머신들을 실행하고 있는 컴퓨터는 호스트 머신으로 언급될 수 있다. 각각의 가상 머신은 게스트 머신으로 언급될 수 있다. 하이퍼바이저는 게스트 운영 시스템들에 가상 동작 플랫폼을 제공하고 게스트 운영 시스템들의 실행을 관리한다. 다양한 운영 시스템들의 복수의 인스턴스들은 가상화된 하드웨어 자원들을 공유할 수 있다.
다양한 운영 시스템들의 복수의 인스턴스들에 의해 공유되는 가상화된 하드웨어 자원들은 하나 이상의 고체 상태 드라이브들을 포함할 수 있다. 고체 상태 드라이브(solid state drive)(SSD)는 데이터를 지속적으로 저장하기 위해 메모리로서 집적 회로 어셈블리들을 사용하는 데이터 저장 디바이스이다. SSD들은 가동 기계 구성요소들을 갖지 않고 이것은 SSD들을, 회전 디스크들 및 가동 판독/기입 헤드들을 포함하는 하드 디스크 드라이브들(hard disk drives)(HDDs) 또는 플로피 디스크들과 같은 종래의 전기기계 자기 디스크들과 구별한다. 전기기계 디스크들과 비교하여, SSD들은 전형적으로 물리적 충격에 더 견디고, 조용히 작동되고, 더 낮은 액세스 시간을 갖고, 더 적은 레이턴시를 갖는다. 많은 타입의 SSD들은 전력 없이 데이터를 유지하고 비휘발성 저장 기술의 타입인 NAND 기반 플래시 메모리를 사용한다.
SSD들은 메모리의 전체 블록들 상에서 동작한다. 메모리 셀에 기입되기 전에, 플래시 메모리는 소거될 필요가 있고, 메모리 셀들에 큰 전압의 애플리케이션을 필요로 하는데, 그것은 한 번에 전체 메모리 셀 블록에만 발생할 수 있다. 예를 들어, 1 KB의 데이터가 128 KB의 소거 블록 크기를 갖는 SSD에 기입되면, SSD는 타겟 블록으로부터 127 KB를 판독하고, 블록을 소거하고 오래된 데이터 플러스 새로운 데이터를 다시 블록으로 기입할 필요가 있다. SSD 펌웨어는 블록들을 미리 소거하고 새로운 데이터를 이러한 사전 소거된 블록들로 기입하려고 시도할 수 있다.
유사한 참조 번호들이 도처에서 대응하는 부분들을 표현하는 도면들을 이제 참조한다.
도 1은 특정 실시예들에 따라 가상 머신 매니저가 데이터를 SSD에 기입하기 위한 복수의 가상 머신들의 액세스를 제어하는 컴퓨팅 환경의 블록도를 예시한다.
도 2는 특정 실시예들에 따라 운영 시스템이 데이터를 SSD에 기입하기 위한 복수의 애플리케이션들의 액세스를 제어하는 컴퓨팅 환경의 블록도를 예시한다.
도 3은 특정 실시예들에 따라 가상 머신 매니저가 데이터를 SSD에 기입하기 위한 복수의 가상 머신들의 액세스를 제어하는 컴퓨팅 환경에서 데이터를 SSD에 기입하는 동작들을 도시하는 흐름도를 예시한다.
도 4는 특정 실시예들에 따라 운영 시스템이 데이터를 SSD에 기입하기 위한 복수의 애플리케이션들의 액세스를 제어하는 컴퓨팅 환경에서 데이터를 SSD에 기입하는 동작들을 도시하는 흐름도를 예시한다.
도 5는 특정 실시예들에 따라 가상 머신 매니저가 데이터를 SSD에 기입하기 위한 복수의 가상 머신들의 액세스를 제어하는 컴퓨팅 환경에서 데이터를 SSD에 기입하는 추가 동작들을 도시하는 흐름도를 예시한다.
도 6은 특정 실시예들에 따라 운영 시스템이 데이터를 SSD에 기입하기 위한 복수의 애플리케이션들의 액세스를 제어하는 컴퓨팅 환경에서 데이터를 SSD에 기입하는 추가 동작들을 도시하는 흐름도를 예시한다.
도 7은 특정 실시예들에 따라 가상 머신 매니저가 데이터를 SSD에 기입하기 위한 복수의 가상 머신들의 액세스를 제어하는 컴퓨팅 환경에서 데이터를 SSD에 기입하는 추가 동작들을 도시하는 흐름도를 예시하며, SSD는 밴드들을 발생시키기 위해 우선순위 및 논리 블록 어드레스 범위들을 지원할 수 있거나 지원하지 않을 수 있다.
도 8은 특정 실시예들에 따라 SSD를 포함할 수 있거나 SSD에 결합될 수 있는 계산 디바이스의 블록도를 예시한다.
이하의 설명에서, 이것의 일부를 형성하고 수개의 실시예들을 예시하는 첨부 도면들이 참조된다. 다른 실시예들이 이용될 수 있고 구조적 및 동작적 변경들이 이루어질 수 있다는 점이 이해된다.
고체 상태 드라이브들의 성능은 비순차적(예를 들어, 랜덤하거나 혼재된) I/O에 대한 것보다 순차적 입력/출력(input/output)(I/O)에 대해 상당히 우수할 수 있다. 비순차적 I/O에서, 파일의 일부는 임의의 순서로 액세스될 수 있다. 순차적 I/O에서, 파일의 제1 부분은 제2 부분에 액세스하기 전에 액세스되고, 제2 부분은 제3 부분에 액세스하기 전에 액세스되는 등등이다. 기입들에 대해, 순차적 I/O는 더 낮은 내부 기입 증폭 때문에 비순차적 I/O에 비해 성능이 우수하고, 판독들에 대해 순차적 I/O는 데이터의 선인출을 수행하는 능력 때문에 비순차적 I/O에 비해 성능이 우수하다. 기입 증폭은 기입 증폭의 결과로서 기입되는 물리 정보의 실제 양이 기입되도록 의도되는 논리 양의 배수이기 때문에 SSD들과 연관되는 바람직하지 않은 현상이다. 기입 증폭은 호스트 시스템에서 비롯되는 기입들에 대한 SSD에 위임되는 기입들의 비율에 의해 측정될 수 있다. SSD에서 일부 데이터를 재기입하는 것은 일부 시점에 이전에 사용된 경우 새로운 위치를 초기에 소거하는 것과 함께, SSD의 이미 사용된 부분이 판독되고, 갱신되고 새로운 위치에 기입되는 것을 필요로 하며; SSD가 동작하는 방식으로 인해, 새로운 데이터의 양만큼 실제로 요구되는 것보다 SSD의 훨씬 더 큰 부분들이 소거되고 재기입될 수 있다. 이러한 증배 효과는 요구되는 기입들의 수를 증가시키고 기입 증폭을 야기한다. 순차적 I/O에서, 기입 증폭들은 비순차적 I/O에서 훨씬 더 적다. 그 결과, 우수한 성능은 기입들이 SSD들에서 순차적 I/O를 통해 수행될 때 획득된다.
그러나, SSD들에 대해 I/O를 수행하는 가상화된 시스템들에서, 심지어 다양한 가상 머신들(VMs) 또는 애플리케이션들로부터의 순차적 I/O 요청들은 기본 SSD에 발행되기 전에 하이퍼바이저 레벨에서 혼재될 수 있어, 더 낮은 저장 및 시스템 성능을 야기한다. 하이퍼바이저 레벨에서의 혼재는 데이터가 혼재되거나 비순차적 방식으로 SSD에 저장되게 하고, 그 결과 SSD에 대한 순차적 I/O의 장점들은 가상화된 시스템에서 획득되지 않을 수 있다.
특정 실시예들은 다양한 가상 머신들로부터의 I/O의 혼재에 의해 야기되는 SSD들에서의 성능을 감소시키거나 제거하는 메커니즘들을 제공한다. 특히, 기입 요청들의 처리의 성능은 상이한 가상 머신들의 기입들의 혼재를 감소시킴으로써 크게 증대된다.
특정 실시예들에서, 특정 가상 머신의 기입 요청들은 고체 상태 디스크의 선택된 밴드에 지향되며, 선택된 밴드는 고체 상태 디스크의 다른 밴드들과 독립적이고, SSD 내의 각각의 밴드는 SSD 내의 인접한 사전 소거된 소거 블록들의 집합이며(즉, 밴드는 비휘발성 메모리 내의 순차적 물리 메모리 위치들의 범위일 수 있으며; 예를 들어, 밴드는 NAND 메모리의 순차적 블록들을 포함할 수 있음). 이것은 어느 밴드가 각각의 착신 기입 요청을 위해 사용되는지를 판단하는 것을 고체 상태 디스크가 허용하는 각각의 가상 머신의 논리 블록 어드레스(logical block address)(LBA) 범위 상의 고체 상태 디스크에 정보를 제공함으로써 수행된다. 이것은 주어진 밴드 내에서 상이한 가상 머신들로부터의 I/O의 혼재를 감소시켜, (특히 수개의 가상 머신들이 순차적 I/O를 발행하고 있을 때) 더 낮은 기입 증폭을 야기하고 기입들에 대한 성능을 개선한다.
도 1은 특정 실시예들에 따라 가상 머신 매니저(102)가 데이터를 고체 상태 드라이브(106)에 기입하기 위한 복수의 가상 머신들(104a, 104b, 104c,..., 104n)의 액세스를 제어하는 컴퓨팅 환경(100)의 블록도를 예시한다. 가상 머신들(104a...104n) 및 가상 머신 매니저(102)는 계산 디바이스(108)에서 하드웨어, 소프트웨어, 또는 펌웨어, 또는 그것의 임의의 조합으로 구현된다. 고체 상태 드라이브(106)는 계산 디바이스(108) 내에 위치될 수 있거나(도 1에 도시된 바와 같음) 계산 디바이스(108)의 외부에 위치되고 계산 디바이스(108)에 결합될 수 있다.
고체 상태 드라이브(106)는 비휘발성 메모리(120), 예컨대 NAND 메모리, NOR 메모리 또는 일부 다른 적절한 비휘발성 메모리로 구성될 수 있다. 특정 실시예들에서, 고체 상태 드라이브(106)는 수 테라바이트의 데이터 이상을 저장가능할 수 있다. 특정 실시예들은 다른 타입들의 비휘발성 메모리, 상 변화 메모리(phase change memory)(PCM), 3차원 크로스 포인트 메모리, 저항 메모리, 나노와이어 메모리, 강유전성 트랜지스터 랜덤 액세스 메모리(ferro-electric transistor random access memory)(FeTRAM), 멤리스터 기술을 포함하는 자기저항 랜덤 액세스 메모리(magnetoresistive random access memory)(MRAM) 메모리, 스핀 전달 토크(spin transfer torque)(STT)-MRAM, 바이트 어드레스가능 랜덤 액세스 비휘발성 메모리 등에 적용될 수 있다.
특정 실시예들에서, 계산 디바이스(108)는 임의의 적절한 계산 디바이스, 예컨대 개인용 컴퓨터, 메인프레임, 전화 디바이스, 스마트폰, 저장 컨트롤러, 블레이드 컴퓨터, 메모리를 갖는 프로세서 등으로 구성될 수 있다. 특정 대안 실시예들에서, 계산 디바이스(108)는 버스(예컨대 주변 구성요소 상호연결(Peripheral Component Interconnect)(PCIe), 직렬 고급 기술 부착(Serial Advanced Technology Attachment)(SATA), 직렬 부착 소형 컴퓨터 시스템 인터페이스(Serial Attached Small Computer System Interface)(SAS)) 또는 네트워크, 예컨대 인터넷, 저장 영역 네트워크(storage area network)(SAN), 근거리 네트워크(local area network)(LAN) 등을 통해 SSD(106)와 통신할 수 있다. SATA 사양의 추가 상세들은 명칭이 "Serial ATA Specification, Revision 3.2"이고, 2013년 8월에, SATA International Organization(SATA-IO), Beaverton, OR에 의해 발표된 간행물에서 발견될 수 있다. 다른 예에서, 인터페이스 및/또는 인터커넥트 프로토콜은 NVMe(Non-Volatile Memory Host Controller Interface Express)를 준수하고 및/또는 NVMe와 호환가능할 수 있다. NVMe의 추가 상세들은 명칭이 "NVM Express™, Revision 1.2"이고, 2014년 11월 3일에 NVM Express™ Work Group에 의해 발표된 간행물, 및/또는 이러한 사양의 초기 및/또는 나중 버전들에서 발견될 수 있다(NVM Express는 NVM Express, Inc.의 상표임).
가상 머신들(104a...104n) 각각은 그것과 연관되는 우선순위를 가질 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 가상 머신(104a, 104b)은 높은 우선순위를 가질 수 있고 가상 머신(104c, 104n)은 낮은 우선순위를 가질 수 있다. 특정 예시적 실시예들에서, 우선순위들은 높거나 낮게 질적으로, 또는 우선순위에 대응하는 수치 값으로서 질적으로 표시될 수 있다. 가상 머신에 대한 더 높은 우선순위는 더 낮은 우선순위를 갖는 가상 머신으로부터의 I/O에 비해 우선순위화된 실행이 가상 머신으로부터의 I/O에 제공되어야 하는 것을 의미한다.
가상 머신 매니저(102)(또한 하이퍼바이저로 언급됨)는 하드웨어, 소프트웨어, 펌웨어, 그것의 임의의 조합으로 구현되는 가상 머신 우선순위 및 논리 블록 어드레스(LBA) 범위 표시 모듈(110)을 포함할 수 있다. 가상 머신 우선순위 및 LBA 범위 표시 모듈(110)은 가상 머신의 우선순위 및 LBA 범위를 고체 상태 드라이브(106)에서 실행되고 하드웨어, 소프트웨어, 펌웨어, 그것의 임의의 조합으로 구현되는 가상 머신 우선순위 및 LBA 범위 수신 모듈(112)에 송신할 수 있다. 애플리케이션 프로그래밍 인터페이스들(Application Programming Interfaces)(API)은 가상 머신 우선순위 및 LBA 범위 표시 모듈(110)과 가상 머신 우선순위 및 LBA 범위 수신 모듈(112) 사이의 통신들을 위해 사용되도록 정의될 수 있다. LBA는 SSD 상의 특정 어드레스에 매핑되는 값이다.
가상화된 환경에서, 복수의 가상 머신들(104a...104n)은 단일 고체 상태 드라이브(106)에의 액세스를 공유한다. 각각의 가상 머신은 고체 상태 드라이브(106)에 의해 지원되는 LBA들의 범위를 할당받으며, 가상 머신은 고체 상태 드라이브(106)에서의 할당된 LBA들에 액세스할 수 있다. SSD(106)의 액세스들은 가상 머신 매니저(102) 및 SSD(106)에 의해 감독되어 가상 머신들이 LBA들의 그들의 할당된 범위에만 액세스하는 것을 보장한다.
가상 머신 우선순위 및 LBA 범위 표시 모듈(110) 및 가상 머신 우선순위 및 LBA 범위 수신 모듈(112)은 고체 상태 드라이브(106)에 상이한 가상 머신들의 LBA 범위들, 및 임의로 가상 머신들의 우선순위들을 통지하기 위해 가상 머신 매니저(102)와 고체 상태 드라이브(106) 사이에 인터페이스된다. 이러한 정보는 계산 디바이스(108)가 부팅되거나, 가상 머신이 파괴, 생성, 또는 수정될 때마다 고체 상태 드라이브(106)에 송신된다.
고체 상태 드라이브(106)는 데이터를 밴드들로 언급되는 비휘발성 메모리의 인접한 사전 소거된 소거 블록들(Erase-Blocks)(EB) 내의 내부 페이지들로 기입한다. 가상 머신들의 LBA 범위들의 정보에 기초하여, 고체 상태 드라이브(106)는 각각의 가상 머신을 위한 전용 밴드를 사용할 수 있어, 하나의 가상 머신의 기입들이 다른 가상 머신들로부터의 기입들과 혼재되지 않는 것을 보장한다.
그러나, 시스템이 이용가능 밴드들의 수보다 더 많은 가상 머신들을 지원하면, 이때 고체 상태 드라이브(106)는 가상 머신들의 기입들 중 몇 개를 각각의 오픈 밴드로 혼재시키거나, 높은 우선순위 가상 머신들이 그들의 자체 오픈 밴드를 얻지만 더 낮은 우선순위 가상 머신들의 기입들이 혼재되는 메커니즘을 사용할 수 있다. 예를 들어, 도 1에서, 밴드(114)는 가상 머신 #1(104a)로부터 수신되는 기입 요청들("기입들"로 언급됨)로 수신되는 데이터를 저장하고, 밴드(116)는 가상 머신 #2(104b)로부터 기입들을 저장하고, 밴드(118)는 가상 머신 #3(104c) 및 가상 머신 #4(104n)로부터 기입들을 저장한다. 따라서, 낮은 우선순위 가상 머신들(104c, 104d)의 기입들은 밴드(118)에서 혼재되는 반면에, 높은 우선순위 가상 머신들(104a, 104b)의 기입들은 개별 밴드들에 저장된다. 가상 머신들(104a, 104b)의 성능은 적어도 기입 동작들에 대해, 가상 머신들(104c, 104n)의 성능보다 우수할 가능성이 있을 것이다.
따라서, 도 1은 특정 실시예들을 예시하며, 각각의 가상 머신은 가상 머신 매니저(102)에 의해 고체 상태 드라이브(106)에 통신되는 LBA 범위 및 임의로 우선순위를 할당받는다. 적절한 수의 밴드들이 고체 상태 드라이브(106)에서 이용가능하면, 이때 상이한 가상 머신들의 기입들은 상이한 밴드들에 저장된다. 그러나, 적절한 수의 밴드들이 이용가능하지 않으면, 이때 더 낮은 우선순위 가상 머신들의 기입들은 동일한 밴드에서 혼재된다.
특정 실시예들에서, 고체 상태 드라이브(106)는 비휘발성 방식으로, 복수의 가상 머신들(104a...104n)과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 가상 머신들 각각의 우선순위를 복수의 부트들에 걸쳐 저장한다.
도 2는 특정 실시예들에 따라 운영 시스템(202)이 데이터를 고체 상태 드라이브(206)에 기입하기 위한 복수의 애플리케이션들(204a, 204b, 204c,...,204n)의 액세스를 제어하는 컴퓨팅 환경(200)의 블록도를 예시한다. 애플리케이션들(204a...204n) 및 운영 시스템(202)은 계산 디바이스(208)에서 하드웨어, 소프트웨어, 또는 펌웨어, 또는 그것의 임의의 조합으로 구현된다. 고체 상태 드라이브(206)는 계산 디바이스(208) 내에 위치될 수 있거나(도 2에 도시된 바와 같음) 계산 디바이스(208)의 외부에 위치될 수 있다.
고체 상태 드라이브(206)는 비휘발성 메모리, 예컨대 NAND 메모리, NOR 메모리 또는 일부 다른 적절한 비휘발성 메모리로 구성될 수 있다. 특정 실시예들에서, 고체 상태 드라이브(206)는 수 테라바이트의 데이터 이상을 저장가능할 수 있다. 특정 실시예들은 다른 타입들의 비휘발성 메모리, 상 변화 메모리(PCM), 3차원 크로스 포인트 메모리, 저항 메모리, 나노와이어 메모리, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 멤리스터 기술을 포함하는 자기저항 랜덤 액세스 메모리(MRAM) 메모리, 스핀 전달 토크(STT)-MRAM 등에 적용될 수 있다.
애플리케이션들(204a...204n) 각각은 그것과 연관되는 우선순위를 가질 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 애플리케이션(204a, 204b)은 높은 우선순위를 가질 수 있고 애플리케이션(204c, 204n)은 낮은 우선순위를 가질 수 있다. 특정 예시적 실시예들에서, 우선순위들은 높거나 낮게 질적으로, 또는 우선순위에 대응하는 수치 값으로서 질적으로 표시될 수 있다. 애플리케이션에 대한 더 높은 우선순위는 더 낮은 우선순위를 갖는 애플리케이션에 비해 우선순위화된 실행이 제공되어야 하는 것을 의미한다.
운영 시스템(202)은 하드웨어, 소프트웨어, 및 펌웨어, 그것의 임의의 조합으로 구현되는 애플리케이션 우선순위 및 논리 블록 어드레스(LBA) 범위 표시 모듈(210)을 포함할 수 있다. 애플리케이션 우선순위 및 LBA 범위 표시 모듈(210)은 애플리케이션의 우선순위 및 LBA 범위를 고체 상태 드라이브(206)에서 실행되는 애플리케이션 우선순위 및 LBA 범위 수신 모듈(212)에 송신할 수 있다. 애플리케이션 프로그래밍 인터페이스들은 애플리케이션 우선순위 및 논리 블록 어드레스(LBA) 범위 표시 모듈(110)과 애플리케이션 우선순위 및 LBA 범위 수신 모듈(112) 사이에서 통신들을 수행하기 위해 정의될 수 있다.
가상화된 환경에서, 복수의 애플리케이션들(204a...204n)은 단일 고체 상태 드라이브(206)에 대한 액세스를 공유한다. 각각의 애플리케이션은 고체 상태 드라이브(206)에 의해 지원되는 LBA들의 범위를 할당받으며, 애플리케이션은 고체 상태 드라이브(206)에서의 할당된 LBA들에 액세스할 수 있다. 고체 상태 드라이브(206) 액세스들은 운영 시스템(202)에 의해 감독되어 애플리케이션들이 LBA들의 그들의 할당된 범위에만 액세스하는 것을 보장한다.
애플리케이션 우선순위 및 LBA 범위 표시 모듈(210) 및 애플리케이션 우선순위 및 LBA 범위 수신 모듈(212)은 고체 상태 드라이브(206)에 상이한 애플리케이션들의 LBA 범위들, 및 임의로 애플리케이션 우선순위들을 통지하기 위해 운영 시스템(202)과 고체 상태 드라이브(206) 사이에 인터페이스된다. 이러한 정보는 계산 디바이스가 부팅되거나, 애플리케이션이 파괴, 생성, 또는 수정될 때마다 고체 상태 드라이브(206)에 송신된다.
고체 상태 드라이브(206)는 데이터를 밴드들 내의 내부 페이지들로 기입한다. 애플리케이션들의 LBA 범위들의 정보의 경우, 고체 상태 드라이브(206)는 각각의 애플리케이션을 위한 전용 밴드를 사용할 수 있어, 하나의 애플리케이션의 기입들이 다른 애플리케이션들로부터의 기입들과 혼재되지 않는 것을 보장한다.
그러나, 시스템이 이용가능 밴드들의 수보다 더 많은 애플리케이션들을 지원하면, 이때 고체 상태 드라이브(206)는 애플리케이션들의 기입들 중 몇 개를 각각의 오픈 밴드로 혼재시키거나, 높은 우선순위 애플리케이션들이 그들의 자체 오픈 밴드를 얻지만 더 낮은 우선순위 애플리케이션들의 기입들이 혼재되는 메커니즘을 사용할 수 있다. 예를 들어, 도 2에서, 밴드(214)는 애플리케이션 #1(204a)로부터 기입들을 저장하고, 밴드(216)는 애플리케이션 #2(204b)로부터 기입들을 저장하고, 밴드(218)는 애플리케이션 #3(204c) 및 애플리케이션 #4(204n)로부터 기입들을 저장한다. 따라서, 낮은 우선순위 애플리케이션들(204c, 204d)의 기입들은 밴드(218)에서 혼재되는 반면에, 높은 우선순위 애플리케이션들(204a, 204b)의 기입들은 개별 밴드들에 저장된다.
따라서, 도 2는 특정 실시예들을 예시하며, 각각의 애플리케이션은 운영 시스템(202)에 의해 고체 상태 드라이브(206)에 전달되는 LBA 범위 및 임의로 우선순위를 할당받는다. 적절한 수의 밴드들이 고체 상태 드라이브(206)에서 이용가능하면, 이때 상이한 애플리케이션들의 기입들은 상이한 밴드들에 저장된다. 그러나, 적절한 수의 밴드들이 이용가능하지 않으면, 이때 더 낮은 우선순위 애플리케이션들의 기입들은 동일한 밴드(218)에서 혼재된다. 기입들이 다른 애플리케이션들의 것들과 혼재되지 않는 애플리케이션들의 성능은 기입들이 혼재되는 애플리케이션들의 성능보다 우수하다.
특정 실시예들에서, 고체 상태 드라이브(206)는 비휘발성 방식으로, 복수의 애플리케이션들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 애플리케이션들 각각의 우선순위를 복수의 부트들에 걸쳐 저장한다.
도 3은 특정 실시예들에 따라 가상 머신 매니저(102)가 데이터를 SSD(106)에 기입하기 위한 복수의 가상 머신들(104a...104n)의 액세스를 제어하는 컴퓨팅 환경(100)에서 데이터를 SSD(106)에 기입하는 동작들을 도시하는 흐름도(300)를 예시한다.
제어는 가상 머신 매니저(102)가 하나 이상의 고체 상태 드라이브들(106)에 대한 복수의 가상 머신들(104a...104n)의 액세스를 제어하는 블록(302)에서 시작된다. 가상 머신 매니저의 가상 머신 매니저 우선순위 및 LBA 범위 표시 모듈(110)은 (블록(304)에서) 고체 상태 드라이브(106)에 각각의 가상 머신의 LBA 범위 및 임의로 각각의 가상 머신의 우선순위의 표시를 송신한다.
제어는 고체 상태 드라이브(106)의 가상 머신 매니저 우선순위 및 범위 수신 모듈(112)이 각각의 가상 머신의 LBA 범위 및 임의로 각각의 가상 머신의 우선순위의 표시를 수신하는 블록(306)으로 진행되고, (블록(308)에서) 고체 상태 드라이브(106) 내의 밴드들의 수가 상이한 밴드를 각각의 가상 머신에 할당하는 데 충분한 지를 판단한다.
고체 상태 드라이브(106) 내의 밴드들의 수가 상이한 밴드를 각각의 가상 머신에 할당하는 데 충분하면, 이때 개별 밴드는 (블록(310)에서) 각각의 가상 머신의 기입들을 위해 할당된다. 고체 상태 드라이브(106)내의 밴드들의 수가 상이한 밴드를 각각의 가상 머신에 할당하는 데 불충분하면, 이때 개별 밴드들은 더 높은 우선순위 가상 머신들의 기입들을 위해 할당되고 더 낮은 우선순위 가상 머신들의 기입들은 동일한 밴드에서 혼재된다(참조 번호 312). 모든 가상 머신들이 높은 우선순위를 가지면, 이때 모든 가상 머신들의 기입들은 밴드들에서 혼재될 수 있다.
따라서, 도 3은 상이한 밴드들에서 상이한 가상 머신들의 기입들을 배치하는 시도가 이루어지는 특정 실시예들을 예시한다. 이것이 가능하지 않으면, 이때 더 높은 우선순위 가상 머신들의 기입들은 그들의 자체 밴드에 배치되는 반면에, 더 낮은 우선순위 가상 머신들의 기입들은 동일한 밴드 내에서 혼재된다. 따라서, 가상화된 환경에서도, 순차적 I/O는 가능한 정도까지 보존된다.
도 4는 특정 실시예들에 따라 운영 시스템(202)이 데이터를 SSD(206)에 기입하기 위한 복수의 애플리케이션들(204a...204n)의 액세스를 제어하는 컴퓨팅 환경(200)에서 데이터를 SSD(206)에 기입하는 동작들을 도시하는 흐름도(400)를 예시한다.
제어는 운영 시스템(202)이 하나 이상의 고체 상태 드라이브들(206)에 대한 복수의 애플리케이션들(204a...204n)의 액세스를 제어하는 블록(402)에서 시작된다. 운영 시스템(202)의 운영 시스템 우선순위 및 LBA 범위 표시 모듈(210)은 (블록(404)에서) 고체 상태 드라이브(206)에 각각의 애플리케이션의 LBA 범위 및 임의로 각각의 애플리케이션의 우선순위의 표시를 송신한다.
제어는 고체 상태 드라이브(206)의 운영 시스템 우선순위 및 범위 수신 모듈(212)이 각각의 애플리케이션의 LBA 범위 및 임의로 각각의 애플리케이션의 우선순위의 표시를 수신하는 블록(406)으로 진행되고, (블록(408)에서) 고체 상태 드라이브(206) 내의 밴드들의 수가 상이한 밴드를 각각의 애플리케이션에 할당하는 데 충분한 지를 판단한다.
고체 상태 드라이브(206) 내의 밴드들의 수가 상이한 밴드를 각각의 애플리케이션에 할당하는 데 충분하면, 이때 개별 밴드는 (블록(410)에서) 각각의 애플리케이션의 기입들을 위해 할당된다. 고체 상태 드라이브(206) 내의 밴드들의 수가 상이한 밴드를 각각의 애플리케이션에 할당하는 데 불충분하면, 이때 개별 밴드들은 더 높은 우선순위 애플리케이션들의 기입들을 위해 할당되고 더 낮은 우선순위 애플리케이션들의 기입들은 동일한 밴드에서 혼재된다(참조 번호 412).
따라서, 도 4는 상이한 밴드들에서 상이한 애플리케이션들의 기입들을 배치하는 시도가 이루어지는 특정 실시예들을 예시한다. 이것이 가능하지 않으면, 이때 더 높은 우선순위 애플리케이션들의 기입들은 그들의 자체 밴드에서 배치되는 반면에, 더 낮은 우선순위 애플리케이션들의 기입들은 동일한 밴드 내에서 혼재된다.
도 5는 특정 실시예들에 따라 가상 머신 매니저(102)가 데이터를 SSD(106)에 기입하기 위한 복수의 가상 머신들(104a...104n)의 액세스를 제어하는 컴퓨팅 환경(100)에서 데이터를 SSD(106)에 기입하는 추가 동작들을 도시하는 흐름도(600)를 예시한다.
제어는 계산 디바이스(108)의 가상 머신 매니저(102)가 고체 상태 드라이브(106)에 대한 복수의 가상 머신들(104a...104n)의 액세스를 관리하는 블록(502)에서 시작된다.
가상 머신 매니저(102)는 (블록(504)에서) 고체 상태 드라이브(106) 내의 밴드들로 매핑되도록 하기 위해 복수의 가상 머신들(104a...104n) 각각의 논리 블록 어드레스 범위들을 고체 상태 드라이브(106)에 송신한다. 그 다음, 가상 머신 매니저(102)는 (블록(506)에서) 복수의 가상 머신들 각각의 우선순위를 고체 상태 드라이브(106)에 임의로 송신한다.
블록(506)으로부터, 제어는 블록(508) 또는 블록(510)으로 진행될 수 있다. 블록(508)에서, 개별 밴드들은 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들의 기입들을 저장하기 위해 고체 상태 드라이브에서 유지된다. 블록(510)에서, 복수의 가상 머신들(104a...104n) 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 고체 상태 드라이브(106)에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들은 상이한 밴드들에 저장되고 더 낮은 우선순위 가상 머신들의 기입들은 동일한 밴드에서 혼재된다.
도 6은 특정 실시예들에 따라 운영 시스템(202)이 데이터를 SSD(206)에 기입하기 위한 복수의 애플리케이션들(204a...204n)의 액세스를 제어하는 컴퓨팅 환경(200)에서 데이터를 SSD(206)에 기입하는 추가 동작들을 도시하는 흐름도(600)를 예시한다.
제어는 계산 디바이스(208)의 운영 시스템(202)이 고체 상태 드라이브(206)에 대한 복수의 애플리케이션들(204a...204n)의 액세스를 관리하는 블록(602)에서 시작된다. 운영 시스템(202)은 (블록(604)에서) 고체 상태 드라이브(206) 내의 밴드들로 매핑되도록 하기 위해 복수의 애플리케이션들(204a...204n) 각각의 논리 블록 어드레스 범위들을 고체 상태 드라이브(206)에 송신한다. 그 다음, 운영 시스템(202)은 (블록(606)에서) 복수의 애플리케이션들 각각의 우선순위를 고체 상태 드라이브(206)에 임의로 송신한다.
블록(606)으로부터, 제어는 블록(608) 또는 블록(610)으로 진행될 수 있다. 블록(608)에서, 개별 밴드들은 복수의 애플리케이션들(204a...204n) 중 적어도 2개의 상이한 애플리케이션들의 기입들을 저장하기 위해 고체 상태 드라이브(206)에서 유지된다. 블록(610)에서, 복수의 애플리케이션들(204a...204n) 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 고체 상태 드라이브(206)에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 애플리케이션들의 기입들은 상이한 밴드들에 저장되고 더 낮은 우선순위 애플리케이션들의 기입들은 동일한 밴드에서 혼재된다.
도 7은 특정 실시예들에 따라 가상 머신 매니저(102)가 데이터를 SSD(106)에 기입하기 위한 복수의 가상 머신들(104a...104b)의 액세스를 제어하는 컴퓨팅 환경(100)에서 데이터를 SSD(106)에 기입하는 추가 동작들을 도시하는 흐름도(700)를 예시하며, SSD(106)는 밴드들을 발생시키기 위해 우선순위 및 논리 블록 어드레스 범위들을 지원할 수 있거나 지원하지 않을 수 있다.
제어는 SSD(106)가 밴드들을 발생시키기 위해 가상 머신 우선순위 및 LBA 범위의 사용을 지원하는지에 관하여 가상 머신 매니저(102)가 SSD(106)에게 요청하는 블록(702)에서 시작된다. SSD(106)가 밴드들을 발생시키기 위해 우선순위 및 LBA 범위를 지원하면(분기(704)), 이때 상이한 가상 머신들의 기입들은 고체 상태 디스크들 상에 가능한 정도까지 상이한 밴드들에 저장된다. SSD(106)가 밴드들을 발생시키기 위해 우선순위 및 LBA 범위를 지원하지 않으면(분기(708)), 이때 가상 머신들의 혼재된 기입들은 고체 상태 드라이브(106)에 저장된다. 대안 실시예들에서, 도 7에 도시된 바와 같이 가상 머신 매니저 및 가상 머신들을 사용하는 대신, 운영 시스템 및 애플리케이션들이 사용될 수 있다.
따라서, 도 1 내지 도 7은 상이한 가상 머신들의 기입들을 가능한 정도까지 상이한 밴드들에 배치함으로써, 성능에 대한 순차적 I/O의 장점들이 가상화된 환경에서도 보존되는 특정 실시예들을 예시한다. 부가적으로, 운영 시스템이 복수의 애플리케이션들을 제어할 때, 상이한 애플리케이션들의 기입들을 가능한 정도까지 상이한 밴드들에서 유지함으로써, 성능에 대한 순차적 I/O의 장점들이 보존된다. 상이한 가상 머신들 또는 애플리케이션들의 데이터의 혼재는 고체 상태 드라이브에서 최소화되어 성능을 개선한다.
설명된 동작들은 소프트웨어, 펌웨어, 하드웨어, 또는 그것의 임의의 조합을 생성하기 위해 표준 프로그래밍 및/또는 엔지니어링 기술들을 사용하여 방법, 장치 또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 설명된 동작들은 "컴퓨터 판독가능 저장 매체"에서 유지되는 코드로 구현될 수 있으며, 프로세서는 컴퓨터 저장 판독가능 매체로부터 코드를 판독하고 실행할 수 있다. 컴퓨터 판독가능 저장 매체는 전자 회로, 저장 재료들, 무기 재료들, 유기 재료들, 생물학적 재료들, 케이싱, 하우징, 코팅, 및 하드웨어 중 적어도 하나를 포함한다. 컴퓨터 판독가능 저장 매체는 자기 저장 매체(예를 들어, 하드 디스크 드라이브들, 플로피 디스크들, 테이프 등), 광 스토리지(CD-ROM들, DVD들, 광 디스크들 등), 휘발성 및 비휘발성 메모리 디바이스들(예를 들어, EEPROM들, ROM들, PROM들, RAM들, DRAM들, SRAM들, 플래시 메모리, 펌웨어, 프로그램가능 로직 등), 고체 상태 디바이스들(Solid State Devices)(SSD) 등을 포함할 수 있지만, 이들에 제한되지 않는다. 설명된 동작들을 구현하는 코드는 하드웨어 디바이스(예를 들어, 집적 회로 칩, 프로그램가능 게이트 어레이(Programmable Gate Array)(PGA), 주문형 집적 회로(Application Specific Integrated Circuit)(ASIC) 등)에서 구현되는 하드웨어 로직으로 더 구현될 수 있다. 게다가, 설명된 동작들을 구현하는 코드는 "송신 신호들"로 구현될 수 있으며, 송신 신호들은 공간을 통해 또는 송신 매체들, 예컨대 광 섬유, 구리선 등을 통해 전파될 수 있다. 코드 또는 로직이 인코딩되는 송신 신호들은 무선 신호, 위성 송신, 전파들, 적외선 신호들, 블루투스 등을 더 포함할 수 있다. 컴퓨터 판독가능 저장 매체 상에 내장되는 프로그램 코드는 송신국 또는 컴퓨터로부터 수신국 또는 컴퓨터로의 송신 신호들로 송신될 수 있다. 컴퓨터 판독가능 저장 매체는 전적으로 송신 신호들로 구성되지 않는다. 본 기술분야의 통상의 기술자들은 많은 수정들이 이러한 구성에 이루어질 수 있는 것, 및 제조 물품이 본 기술분야에 공지된 적절한 정보 보유 매체를 포함할 수 있다는 것을 인식할 것이다.
특정 실시예들의 양태들에 대한 동작들을 수행하는 컴퓨터 프로그램 코드는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기입될 수 있다. 흐름도 및 블록도들의 블록들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다.
도 8은 특정 실시예들에 따라 계산 디바이스들(108, 208)(계산 디바이스들(108, 208)은 적어도 프로세서를 포함함) 중 하나 이상 및 고체 상태 드라이브들(106, 206) 중 하나 이상을 포함하는 시스템(800)의 블록도를 예시한다. 예를 들어, 특정 실시예들에서, 시스템(800)은 시스템(800)에 포함되는 계산 디바이스(108) 및 고체 상태 드라이브(106)를 가질 수 있고, 특정 실시예들에서, 시스템(800)은 시스템(800)에 포함되는 계산 디바이스(208) 및 고체 상태 드라이브(206)를 가질 수 있다. 특정 실시예들에서, 시스템(800)은 고체 상태 드라이브(106, 206)를 포함하는 랩톱 컴퓨터일 수 있다.
시스템(800)은 특정 실시예들에서 적어도 프로세서(804)를 포함할 수 있는 회로(802)를 포함할 수 있다. 시스템(800)은 또한 메모리(806)(예를 들어, 휘발성 메모리 디바이스), 및 스토리지(808)를 포함할 수 있다. 스토리지(808)는 고체 상태 드라이브(106, 206) 또는 다른 드라이브들 또는 비휘발성 메모리 디바이스를 포함하는 디바이스들(예를 들어, EEPROM, ROM, PROM, 플래시, 펌웨어, 프로그램가능 로직 등)을 포함할 수 있다. 스토리지(808)는 또한 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브 등을 포함할 수 있다. 스토리지(808)는 내부 저장 디바이스, 부착된 저장 디바이스 및/또는 네트워크 액세스가능 저장 디바이스를 포함할 수 있다. 시스템(800)은 메모리(806)로 로딩되고 프로세서(804) 또는 회로(802)에 의해 실행될 수 있는 코드(812)를 포함하는 프로그램 로직(810)을 포함할 수 있다. 특정 실시예들에서, 코드(812)를 포함하는 프로그램 로직(810)은 스토리지(808)에 저장될 수 있다. 특정한 다른 실시예들에서, 프로그램 로직(810)은 회로(802)에서 구현될 수 있다. 따라서, 도 8은 다른 요소들로부터 개별적으로 프로그램 로직(810)을 도시하지만, 프로그램 로직(810)은 메모리(806) 및/또는 회로(802)에서 구현될 수 있다. 시스템(800)은 또한 디스플레이(814)(예를 들어, 액정 디스플레이(liquid crystal display)(LCD), 발광 다이오드(light emitting diode)(LED) 디스플레이, 음극선관(cathode ray tube)(CRT) 디스플레이, 터치스크린 디스플레이, 또는 임의의 다른 적절한 디스플레이)를 포함할 수 있다. 시스템(800)은 또한 하나 이상의 입력 디바이스들(816), 예컨대 키보드, 마우스, 조이스틱, 트랙패드, 또는 임의의 다른 적절한 입력 디바이스들을 포함할 수 있다. 도 8에 도시된 것들을 넘는 다른 구성요소들 또는 디바이스들은 또한 시스템(800)에서 발견될 수 있다.
특정 실시예들은 사람 또는 자동화된 처리가 컴퓨터 판독가능 코드를 컴퓨팅 시스템으로 통합함으로써 컴퓨팅 명령어를 전개하는 방법에 관한 것일 수 있으며, 컴퓨팅 시스템과 조합되는 코드는 설명된 실시예들의 동작들을 수행하도록 인에이블된다.
용어들 "하나의 실시예", "실시예", "실시예들", "상기 실시예", "상기 실시예들", "하나 이상의 실시예들", "일부 실시예들", 및 "일 실시예"는 달리 분명히 지정되지 않는 한 "하나 이상의(그러나 전부는 아님) 실시예들"을 의미한다.
용어들 "구비하는", "포함하는", "갖는" 및 그것의 변형들은 달리 분명히 지정되지 않는 한, "포함하지만 제한되지 않는"을 의미한다.
항목들의 열거된 리스트는 달리 분명히 지정되지 않는 한, 항목둘 중 어느 것 또는 모두가 상호 배타적인 것을 암시하지 않는다.
용어들 "하나의(a, an)" 및 "상기(the)"는 달리 분명히 지정되지 않는 한, "하나 이상의"를 의미한다.
서로 통신하는 디바이스들은 달리 분명히 지정되지 않는 한, 서로 연속적으로 통신될 필요는 없다. 게다가, 서로 통신하는 디바이스들은 하나 이상의 중개자들을 통해 직접적으로 또는 간접적으로 통신할 수 있다.
서로 통신하는 수개의 구성요소들을 갖는 일 실시예의 설명은 모든 그러한 구성요소들이 요구되는 것을 암시하지 않는다. 이에 반하여, 다양한 임의적 구성요소들은 광범위하게 가능한 실시예들을 예시하기 위해 설명된다.
게다가, 프로세스 단계들, 방법 단계들, 알고리즘들 등이 순차적 순서로 설명될 수 있지만, 그러한 프로세스들, 방법들 및 알고리즘들은 대체 순서들로 작용하도록 구성될 수 있다. 다시 말하면, 설명될 수 있는 단계들의 임의의 시퀀스 또는 순서는 단계들이 그러한 순서로 수행되는 요건을 반드시 표시하는 것은 아니다. 본원에 설명되는 프로세스들의 단계들은 실제로 임의의 순서로 수행될 수 있다. 게다가, 일부 단계들은 동시에 수행될 수 있다.
단일 디바이스 또는 물품이 본원에 설명될 때, 하나보다 많은 디바이스/물품(그들이 협력하든 안하든)은 단일 디바이스/물품 대신에 사용될 수 있다는 점이 즉시 분명할 것이다. 유사하게, 하나보다 많은 디바이스 또는 물품이 본원에 설명되는 경우(그들이 협력하든 안하든), 단일 디바이스/물품은 하나보다 많은 디바이스 또는 물품 대신에 사용될 수 있거나 상이한 수의 디바이스들/물품들은 도시된 수의 디바이스들 또는 프로그램들 대신에 사용될 수 있다는 점이 즉시 분명할 것이다. 디바이스의 기능성 및/또는 특징들은 그러한 기능성/특징들을 갖는 것으로 명시적으로 설명되지 않는 하나 이상의 다른 디바이스들에 의해 대안으로 구체화될 수 있다. 따라서, 다른 실시예들은 디바이스 자체를 포함할 필요가 없다.
도면들에 예시될 수 있었던 적어도 특정 동작들은 특정 순서로 발생하는 특정 이벤트들을 나타낸다. 대안 실시예들에서, 특정 동작들은 상이한 순서로 수행되거나, 수정되거나 제거될 수 있다. 더욱이, 단계들은 상기 설명된 로직에 추가될 수 있고 설명된 실시예들을 여전히 준수한다. 게다가, 본원에 설명되는 동작들은 순차적으로 발생할 수 있거나 특정 동작들은 병렬로 처리될 수 있다. 게다가, 동작들은 단일 처리 유닛 또는 분산 처리 유닛들에 의해 수행될 수 있다.
다양한 실시예들의 상술한 설명은 예시 및 설명의 목적들을 위해 제시되었다. 그것은 총망라하도록 또는 개시된 정확한 형태들에 제한되도록 의도되지 않는다. 많은 수정들 및 변형들은 상기 교시를 고려하여 가능하다.
예들
이하의 예들은 추가 실시예들과 관련된다.
예 1은 계산 디바이스의 운영 시스템이 고체 상태 드라이브에 대한 복수의 애플리케이션들의 액세스를 관리하는 방법이다. 고체 상태 드라이브의 비휘발성 메모리 내의 개별 밴드들은 복수의 애플리케이션들 중 적어도 2개의 상이한 애플리케이션들에 의해 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 유지된다.
예 2에서, 예 1의 발명 대상은 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 복수의 애플리케이션들 각각의 논리 블록 어드레스 범위들을 운영 시스템으로부터 고체 상태 드라이브에 송신하는 단계를 포함할 수 있다.
예 3에서, 예 2의 발명 대상은 복수의 애플리케이션들 각각의 우선순위를 운영 시스템으로부터 고체 상태 드라이브에 송신하는 단계를 포함할 수 있다.
예 4에서, 예 3의 발명 대상은 복수의 애플리케이션들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 고체 상태 드라이브에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 애플리케이션들의 기입들이 상이한 밴드들에 저장되고 더 낮은 우선순위 애플리케이션들의 기입들은 동일한 밴드에서 혼재되며, 기입이 고체 상태 드라이브에 기입되는 데이터를 포함하는 것을 포함할 수 있다.
예 5에서, 예 3의 발명 대상은 고체 상태 드라이브가 비휘발성 방식으로, 복수의 애플리케이션들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 애플리케이션들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 것을 포함할 수 있다.
예 6은 계산 디바이스의 가상 머신 매니저가 고체 상태 드라이브에 대한 복수의 가상 머신들의 액세스를 유지하는 방법이다. 고체 상태 드라이브의 비휘발성 메모리 내의 개별 밴드들은 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들에 의해 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 유지된다.
예 7에서, 예 6의 발명 대상은 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 복수의 가상 머신들 각각의 논리 블록 어드레스 범위들을 가상 머신 매니저로부터 고체 상태 드라이브에 송신하는 단계를 포함할 수 있다.
예 8에서, 예 7의 발명 대상은 복수의 가상 머신들 각각의 우선순위를 가상 머신 매니저로부터 고체 상태 드라이브에 송신하는 단계를 포함할 수 있다.
예 9에서, 예 8의 발명 대상은 복수의 가상 머신들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 고체 상태 드라이브에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들이 상이한 밴드들에 저장되고 더 낮은 우선순위 가상 머신들의 기입들이 동일한 밴드에서 혼재되며, 기입이 고체 상태 드라이브에 기입되는 데이터를 포함하는 것을 포함할 수 있다.
예 10에서, 예 8의 발명 대상은 고체 상태 드라이브가 비휘발성 방식으로, 복수의 가상 머신들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 가상 머신들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 것을 포함할 수 있다.
예 11은 메모리 및 프로세서를 포함하는 시스템이며, 프로세서는 동작들을 수행하도록 구성가능하고, 동작들은 운영 시스템에 의해, 고체 상태 드라이브에 대한 복수의 애플리케이션들의 액세스를 관리하는 동작; 및 복수의 애플리케이션들 중 적어도 2개의 상이한 애플리케이션들에 의해 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 고체 상태 드라이브의 비휘발성 메모리에서 개별 밴드들을 유지하는 동작을 포함한다.
예 12에서, 예 11의 발명 대상은 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 복수의 애플리케이션들 각각의 논리 블록 어드레스 범위들을 운영 시스템으로부터 고체 상태 드라이브에 송신하는 동작을 포함할 수 있다.
예 13에서, 예 12의 발명 대상은 복수의 애플리케이션들 각각의 우선순위를 운영 시스템으로부터 고체 상태 드라이브에 송신하는 동작을 포함할 수 있다.
예 14에서, 예 13의 발명 대상은 복수의 애플리케이션들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 고체 상태 드라이브에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 애플리케이션들의 기입들이 상이한 밴드들에 저장되고 더 낮은 우선순위 애플리케이션들의 기입들이 동일한 밴드에서 혼재되며, 기입이 고체 상태 드라이브에 기입되는 데이터를 포함하는 것을 포함할 수 있다.
예 15에서, 예 13의 발명 대상은 고체 상태 드라이브가 비휘발성 방식으로, 복수의 애플리케이션들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 애플리케이션들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 것을 포함할 수 있다.
예 16은 메모리 및 프로세서를 포함하는 시스템이며, 프로세서는 계산 디바이스의 가상 머신 매니저가 고체 상태 드라이브에 대한 복수의 가상 머신들의 액세스를 유지하는 동작들을 수행하도록 구성가능하다. 개별 밴드들은 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들에 의해 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 고체 상태 드라이브의 비휘발성 메모리에서 유지된다.
예 17에서, 예 16의 발명 대상은 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 복수의 가상 머신들 각각의 논리 블록 어드레스 범위들을 가상 머신 매니저로부터 고체 상태 드라이브에 송신하는 동작을 포함할 수 있다.
예 18에서, 예 17의 발명 대상은 복수의 가상 머신들 각각의 우선순위를 가상 머신 매니저로부터 고체 상태 드라이브에 송신하는 동작을 포함할 수 있다.
예 19에서, 예 18의 발명 대상은 복수의 가상 머신들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 고체 상태 드라이브에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들이 상이한 밴드들에 저장되고 더 낮은 우선순위 가상 머신들의 기입들이 동일한 밴드에서 혼재되며, 기입이 고체 상태 드라이브에 기입되는 데이터를 포함하는 것을 포함할 수 있다.
예 20에서, 예 18의 발명 대상은 고체 상태 드라이브가 비휘발성 방식으로, 복수의 가상 머신들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 가상 머신들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 것을 포함할 수 있다.
예 21은 고체 상태 드라이브이며, 고체 상태 드라이브는 동작들을 수행하도록 구성가능하고, 동작들은 계산 디바이스의 가상 머신 매니저로부터, 복수의 가상 머신들로부터의 입력 및 출력 동작들을 수신하는 동작; 및 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들에 의해 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 고체 상태 드라이브의 비휘발성 메모리에서 개별 밴드들을 유지하는 동작을 포함한다.
예 22에서, 예 21의 발명 대상은 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 복수의 가상 머신들 각각의 논리 블록 어드레스 범위들을 가상 머신 매니저로부터 수신하는 동작을 더 포함한다.
예 23에서, 예 22의 발명 대상은 가상 머신 매니저로부터, 복수의 가상 머신들 각각의 우선순위를 수신하는 동작을 더 포함한다.
예 24에서, 예 23의 발명 대상은 복수의 가상 머신들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들이 상이한 밴드들에 저장되고 더 낮은 우선순위 가상 머신들의 기입들이 동일한 밴드에서 혼재되며, 기입이 고체 상태 드라이브에 기입되는 데이터를 포함하는 것을 더 포함한다.
예 25에서, 예 23의 발명 대상은 고체 상태 드라이브가 비휘발성 방식으로, 복수의 가상 머신들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 가상 머신들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 것을 더 포함한다.
예 26은 메모리 및 프로세서를 포함하는 시스템이며, 프로세서는 계산 디바이스의 가상 머신 매니저가 고체 상태 드라이브에 대한 복수의 가상 머신들의 액세스를 유지하는 동작들을 수행하도록 구성가능하다. 개별 밴드들은 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들에 의해 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 고체 상태 드라이브의 비휘발성 메모리에서 유지된다.
예 27에서, 예 26의 발명 대상은 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 복수의 가상 머신들 각각의 논리 블록 어드레스 범위들을 가상 머신 매니저로부터 고체 상태 드라이브에 송신하는 동작을 포함할 수 있다.
예 28에서, 예 27의 발명 대상은 복수의 가상 머신들 각각의 우선순위를 가상 머신 매니저로부터 고체 상태 드라이브에 송신하는 동작을 포함할 수 있다.
예 29에서, 예 28의 발명 대상은 복수의 가상 머신들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 고체 상태 드라이브에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들이 상이한 밴드들에 저장되고 더 낮은 우선순위 가상 머신들의 기입들이 동일한 밴드에서 혼재되며, 기입이 고체 상태 드라이브에 기입되는 데이터를 포함하는 것을 포함할 수 있다.
예 30에서, 예 28의 발명 대상은 고체 상태 드라이브가 비휘발성 방식으로, 복수의 가상 머신들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 가상 머신들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 것을 포함할 수 있다.
예 31에서, 예 26의 발명 대상은 고체 상태 드라이브가 동작들을 수행하도록 구성가능한 것을 포함할 수 있으며, 고체 상태 드라이브에 의해 수행되는 동작들은 계산 디바이스의 가상 머신 매니저로부터, 복수의 가상 머신들로부터의 입력 및 출력 동작들을 수신하는 동작; 및 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들에 의해 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 고체 상태 드라이브의 비휘발성 메모리에서 개별 밴드들을 유지하는 동작을 포함한다.
예 32에서, 예 31의 발명 대상은 고체 상태 드라이브 내의 밴드들로 매핑되도록 하기 위해 복수의 가상 머신들 각각의 논리 블록 어드레스 범위들을 가상 머신 매니저로부터 수신하는 동작을 더 포함한다.
예 33에서, 예 32의 발명 대상은 가상 머신 매니저로부터, 복수의 가상 머신들 각각의 우선순위를 수신하는 동작을 더 포함한다.
예 34에서, 예 33의 발명 대상은 복수의 가상 머신들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들이 상이한 밴드들에 저장되고 더 낮은 우선순위 가상 머신들의 기입들이 동일한 밴드에서 혼재되며, 기입이 고체 상태 드라이브에 기입되는 데이터를 포함하는 것을 더 포함한다.
예 35에서, 예 33의 발명 대상은 고체 상태 드라이브가 비휘발성 방식으로, 복수의 가상 머신들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 복수의 가상 머신들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 것을 더 포함한다.

Claims (25)

  1. 계산 디바이스(computational device)의 운영 시스템에 의해, 고체 상태 드라이브에 대한 복수의 애플리케이션들의 액세스를 관리하는 단계; 및
    상기 복수의 애플리케이션들 중 적어도 2개의 상이한 애플리케이션들에 의해 상기 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 상기 고체 상태 드라이브 내의 비휘발성 메모리에서 개별 밴드들(separate bands)을 유지하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 상기 복수의 애플리케이션들 각각의 논리 블록 어드레스 범위들을 상기 운영 시스템으로부터 상기 고체 상태 드라이브에 송신하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 복수의 애플리케이션들 각각의 우선순위를 상기 운영 시스템으로부터 상기 고체 상태 드라이브에 송신하는 단계를 더 포함하는 방법.
  4. 제3항에 있어서, 기입은 상기 고체 상태 드라이브에 기입될 데이터를 포함하며, 상기 방법은,
    상기 복수의 애플리케이션들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 상기 고체 상태 드라이브에 불충분한 수(inadequate number)의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 애플리케이션들의 기입들을 상이한 밴드들에 저장하고 더 낮은 우선순위 애플리케이션들의 기입들을 동일한 밴드에서 혼재(intermingling)시키는 단계를 더 포함하는 방법.
  5. 제3항에 있어서, 상기 고체 상태 드라이브는 비휘발성 방식으로, 상기 복수의 애플리케이션들과 관련되는 데이터, 상기 논리 블록 어드레스 범위들, 및 상기 복수의 애플리케이션들 각각의 우선순위를 복수의 부트들(boots)에 걸쳐 저장하는 방법.
  6. 계산 디바이스의 가상 머신 매니저에 의해, 고체 상태 드라이브에 대한 복수의 가상 머신들의 액세스를 관리하는 단계; 및
    상기 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들에 의해 상기 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 상기 고체 상태 드라이브 내의 비휘발성 메모리에서 개별 밴드들을 유지하는 단계
    를 포함하는 방법.
  7. 제6항에 있어서,
    상기 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 상기 복수의 가상 머신들 각각의 논리 블록 어드레스 범위들을 상기 가상 머신 매니저로부터 상기 고체 상태 드라이브에 송신하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 복수의 가상 머신들 각각의 우선순위를 상기 가상 머신 매니저로부터 상기 고체 상태 드라이브에 송신하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서, 기입은 상기 고체 상태 드라이브에 기입될 데이터를 포함하며, 상기 방법은,
    상기 복수의 가상 머신들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 상기 고체 상태 드라이브에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들을 상이한 밴드들에 저장하고 더 낮은 우선순위 가상 머신들의 기입들을 동일한 밴드에서 혼재시키는 단계를 더 포함하는 방법.
  10. 제8항에 있어서, 상기 고체 상태 드라이브는 비휘발성 방식으로, 상기 복수의 가상 머신들과 관련되는 데이터, 상기 논리 블록 어드레스 범위들, 및 상기 복수의 가상 머신들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 방법.
  11. 메모리; 및
    프로세서
    를 포함하고,
    상기 프로세서는 동작들을 수행하도록 구성가능하며, 상기 동작들은,
    운영 시스템에 의해, 고체 상태 드라이브에 대한 복수의 애플리케이션들의 액세스를 관리하는 동작; 및
    상기 복수의 애플리케이션들 중 적어도 2개의 상이한 애플리케이션들에 의해 상기 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 상기 고체 상태 드라이브 내의 비휘발성 메모리에서 개별 밴드들을 유지하는 동작
    을 포함하는 시스템.
  12. 제11항에 있어서, 상기 동작들은,
    상기 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 상기 복수의 애플리케이션들 각각의 논리 블록 어드레스 범위들을 상기 운영 시스템으로부터 상기 고체 상태 드라이브에 송신하는 동작을 더 포함하는 시스템.
  13. 제12항에 있어서, 상기 동작들은,
    상기 복수의 애플리케이션들 각각의 우선순위를 상기 운영 시스템으로부터 상기 고체 상태 드라이브에 송신하는 동작을 더 포함하는 시스템.
  14. 제13항에 있어서, 기입은 상기 고체 상태 드라이브에 기입될 데이터를 포함하며, 상기 동작들은,
    상기 복수의 애플리케이션들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 상기 고체 상태 드라이브에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 애플리케이션들의 기입들을 상이한 밴드들에 저장하고 더 낮은 우선순위 애플리케이션들의 기입들을 동일한 밴드에서 혼재시키는 동작을 더 포함하는 시스템.
  15. 제13항에 있어서, 상기 고체 상태 드라이브는 비휘발성 방식으로, 상기 복수의 애플리케이션들과 관련되는 데이터, 상기 논리 블록 어드레스 범위들, 및 상기 복수의 애플리케이션들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 시스템.
  16. 메모리; 및
    프로세서
    를 포함하고,
    상기 프로세서는 동작들을 수행하도록 구성가능하며, 상기 동작들은,
    가상 머신 매니저에 의해, 고체 상태 드라이브에 대한 복수의 가상 머신들의 액세스를 관리하는 동작; 및
    상기 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들에 의해 상기 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 상기 고체 상태 드라이브 내의 비휘발성 메모리에서 개별 밴드들을 유지하는 동작
    을 포함하는 시스템.
  17. 제16항에 있어서, 상기 동작들은,
    상기 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 상기 복수의 가상 머신들 각각의 논리 블록 어드레스 범위들을 상기 가상 머신 매니저로부터 상기 고체 상태 드라이브에 송신하는 동작을 더 포함하는 시스템.
  18. 제17항에 있어서, 상기 동작들은,
    상기 복수의 가상 머신들 각각의 우선순위를 상기 가상 머신 매니저로부터 상기 고체 상태 드라이브에 송신하는 동작을 더 포함하는 시스템.
  19. 제18항에 있어서, 기입은 상기 고체 상태 드라이브에 기입될 데이터를 포함하며, 상기 동작들은,
    상기 복수의 가상 머신들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 상기 고체 상태 드라이브에 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들을 상이한 밴드들에 저장하고 더 낮은 우선순위 가상 머신들의 기입들을 동일한 밴드에서 혼재시키는 동작을 더 포함하는 시스템.
  20. 제18항에 있어서, 상기 고체 상태 드라이브는 비휘발성 방식으로, 상기 복수의 가상 머신들과 관련되는 데이터, 상기 논리 블록 어드레스 범위들, 및 상기 복수의 애플리케이션들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 시스템.
  21. 고체 상태 드라이브로서, 상기 고체 상태 드라이브는 동작들을 수행하도록 구성가능하며, 상기 동작들은,
    계산 디바이스의 가상 머신 매니저로부터, 복수의 가상 머신들로부터의 입력 및 출력 동작들을 수신하는 동작; 및
    상기 복수의 가상 머신들 중 적어도 2개의 상이한 가상 머신들에 의해 상기 고체 상태 드라이브에 기입되는 데이터를 저장하기 위해 상기 고체 상태 드라이브 내의 비휘발성 메모리에서 개별 밴드들을 유지하는 동작
    을 포함하는 고체 상태 드라이브.
  22. 제21항에 있어서, 상기 동작들은,
    상기 고체 상태 드라이브 내의 밴드들에 매핑되도록 하기 위해 상기 복수의 가상 머신들 각각의 논리 블록 어드레스 범위들을 상기 가상 머신 매니저로부터 수신하는 동작을 더 포함하는 고체 상태 드라이브.
  23. 제22항에 있어서, 상기 동작들은,
    상기 가상 머신 매니저로부터, 상기 복수의 가상 머신들 각각의 우선순위를 수신하는 동작을 더 포함하는 고체 상태 드라이브.
  24. 제23항에 있어서, 기입은 상기 고체 상태 드라이브에 기입될 데이터를 포함하며, 상기 동작들은,
    상기 복수의 가상 머신들 각각의 기입들을 저장하는 개별 밴드를 제공하기에는 불충분한 수의 밴드들이 있는 것으로 결정하는 것에 응답하여, 더 높은 우선순위 가상 머신들의 기입들을 상이한 밴드들에 저장하고 더 낮은 우선순위 가상 머신들의 기입들을 동일한 밴드에서 혼재시키는 동작을 더 포함하는 고체 상태 드라이브.
  25. 제21항에 있어서, 상기 고체 상태 드라이브는 비휘발성 방식으로, 상기 복수의 가상 머신들과 관련되는 데이터, 논리 블록 어드레스 범위들, 및 상기 복수의 가상 머신들 각각의 우선순위를 복수의 부트들에 걸쳐 저장하는 고체 상태 드라이브.
KR1020177013206A 2014-12-17 2015-11-17 고체 상태 드라이브들에서 입력 및 출력 동작들의 혼재의 감소 KR102460345B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/573,517 2014-12-17
US14/573,517 US10108339B2 (en) 2014-12-17 2014-12-17 Reduction of intermingling of input and output operations in solid state drives
PCT/US2015/061184 WO2016099761A1 (en) 2014-12-17 2015-11-17 Reduction of intermingling of input and output operations in solid state drives

Publications (2)

Publication Number Publication Date
KR20170095822A true KR20170095822A (ko) 2017-08-23
KR102460345B1 KR102460345B1 (ko) 2022-10-28

Family

ID=56127273

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177013206A KR102460345B1 (ko) 2014-12-17 2015-11-17 고체 상태 드라이브들에서 입력 및 출력 동작들의 혼재의 감소

Country Status (5)

Country Link
US (1) US10108339B2 (ko)
KR (1) KR102460345B1 (ko)
CN (1) CN107003811B (ko)
TW (1) TWI601058B (ko)
WO (1) WO2016099761A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102371916B1 (ko) * 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
US10831382B2 (en) * 2017-11-29 2020-11-10 International Business Machines Corporation Prevent disk hardware failure for cloud applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130093565A1 (en) * 2011-10-18 2013-04-18 Accenture Global Services Limited Biometric matching system
US20140108933A1 (en) * 2012-10-17 2014-04-17 Samsung Electronics Co., Ltd. Method and apparatus for displaying data in terminal
US20140282514A1 (en) * 2013-03-14 2014-09-18 Fusion-Io, Inc. Virtualization support for storage devices

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089392B2 (en) * 2003-05-09 2006-08-08 International Business Machines Corporation Method, system, and program for allocating storage units to a data set
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US20100083247A1 (en) 2008-09-26 2010-04-01 Netapp, Inc. System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA
US8769535B2 (en) 2009-09-24 2014-07-01 Avaya Inc. Providing virtual machine high-availability and fault tolerance via solid-state backup drives
US8898663B2 (en) * 2009-12-16 2014-11-25 Symantec Corporation Storage visibility in virtual environments
US8589655B2 (en) * 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US8799554B1 (en) * 2010-10-27 2014-08-05 Amazon Technologies, Inc. Methods and system for swapping memory in a virtual machine environment
US9025527B2 (en) * 2012-12-13 2015-05-05 Qualcomm Incorporated Adaptive channel reuse mechanism in communication networks
WO2014108933A1 (en) 2013-01-10 2014-07-17 Hitachi, Ltd. Resource management system and resource management method of a computer system
US20140258595A1 (en) * 2013-03-11 2014-09-11 Lsi Corporation System, method and computer-readable medium for dynamic cache sharing in a flash-based caching solution supporting virtual machines
US10162748B2 (en) * 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9411627B2 (en) * 2014-07-18 2016-08-09 International Business Machines Corporation Allocating storage for virtual machine instances based on input/output (I/O) usage rate of the disk extents stored in an I/O profile of a previous incarnation of the virtual machine
US9632927B2 (en) * 2014-09-25 2017-04-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130093565A1 (en) * 2011-10-18 2013-04-18 Accenture Global Services Limited Biometric matching system
US20140108933A1 (en) * 2012-10-17 2014-04-17 Samsung Electronics Co., Ltd. Method and apparatus for displaying data in terminal
US20140282514A1 (en) * 2013-03-14 2014-09-18 Fusion-Io, Inc. Virtualization support for storage devices

Also Published As

Publication number Publication date
WO2016099761A1 (en) 2016-06-23
TWI601058B (zh) 2017-10-01
KR102460345B1 (ko) 2022-10-28
TW201636819A (zh) 2016-10-16
US20160179381A1 (en) 2016-06-23
CN107003811A (zh) 2017-08-01
US10108339B2 (en) 2018-10-23
CN107003811B (zh) 2020-07-03

Similar Documents

Publication Publication Date Title
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
US9183136B2 (en) Storage control apparatus and storage control method
KR100823171B1 (ko) 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US9928169B2 (en) Method and system for improving swap performance
US9760503B2 (en) Operation method of memory controller and nonvolatile memory system including the memory controller
CN111344683A (zh) 非易失性存储器装置中的命名空间分配
US10965751B2 (en) Just a bunch of flash (JBOF) appliance with physical access application program interface (API)
US8850105B2 (en) Method for controlling memory system, information processing apparatus, and storage medium
KR102462305B1 (ko) 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치
US11966329B2 (en) Address map caching for a memory system
KR102434170B1 (ko) 하이브리드 메모리 시스템
US11675698B2 (en) Apparatus and method and computer program product for handling flash physical-resource sets
EP2851792A1 (en) Solid state drives that cache boot data
US8516194B2 (en) Systems and methods for caching data with a nonvolatile memory cache
KR102443593B1 (ko) 하이브리드 메모리 시스템
US11182289B1 (en) Memory system and operating method thereof
KR102460345B1 (ko) 고체 상태 드라이브들에서 입력 및 출력 동작들의 혼재의 감소
US9348769B2 (en) Managing zeroed logical volume
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
EP4287028A1 (en) Storage device providing high purge performance and memory block management method thereof
KR20230068260A (ko) 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법 장치
US9690503B2 (en) Returning coherent data in response to a failure of a storage device when a single input/output request spans two storage devices

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant